学习mysql水平分区和实践笔记
2023-09-11 14:20:09 时间
SHOW PLUGINS;
sql 可以查看partition
的Status
是否是ACTIVE
的
使用mydatetime
进行水平分区案例:
CREATE TABLE test_users (
`id` INT (10) NOT NULL AUTO_INCREMENT,
`mydatetime` datetime NOT NULL,
`email` VARCHAR (255) NOT NULL,
UNIQUE INDEX (`email`),
PRIMARY KEY (`id`)
);
-- 如果表已创建时的操作
-- 修改主键的类型
ALTER TABLE test_users CHANGE COLUMN `id` `id` INT (10) UNSIGNED NOT NULL;
-- 删除主键
ALTER TABLE test_users DROP PRIMARY KEY;
-- 将 主键id和分区字段mydatetime 同作为主键
ALTER TABLE test_users ADD PRIMARY KEY (id, mydatetime);
-- 给主机 id 加上 自动增长
ALTER TABLE test_users CHANGE COLUMN `id` `id` INT (10) UNSIGNED NOT NULL AUTO_INCREMENT;
-- 删除索引 email
ALTER TABLE test_users DROP INDEX email;
-- 将 email和mydatetime字段 同作为名为 email的唯一索引
ALTER TABLE test_users ADD UNIQUE KEY `email` (email, mydatetime);
-- 根据 mydatetime的日期值,将小于 2018-12-31放在 p1,小于2019-06-30放在p2,小于最大值的放在p8分区,名字是自己定义的
alter table test_users PARTITION by range(TO_DAYS(mydatetime))(
PARTITION p1 VALUES LESS THAN (TO_DAYS('2018-12-31')),
PARTITION p2 VALUES LESS THAN (TO_DAYS('2019-06-30')),
PARTITION p8 VALUES LESS THAN MAXVALUE
);
-- 分析查询语句,测试分区是否有用
EXPLAIN SELECT * FROM test_users WHERE mydatetime <= '2019-07-01';
[Err]1503 - A UNIQUE INDEX must include all columns in the table's partitioning function
[Err] 1486 - Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
尝试1:
[Err] 1503 - A PRIMARY KEY must include all columns in the table's partitioning function
主键需要包含分区的字段
尝试了将原来的主键删除掉,然后再重新创建一个组合主键
[Err]1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key
删除主键失败
依次执行下列的sql
ALTER TABLE test_table CHANGE COLUMN `id` `id` int(10) unsigned NOT NULL ;
ALTER TABLE test_table DROP PRIMARY KEY; #删除主键
ALTER TABLE test_table add PRIMARY KEY(id); #添加主键
References
- 故障案例--mysql5.5分区表的一个坑
- mysql 自动分区实践
- MySQL 分区表探索
- MySQL 表分区 A PRIMARY KEY must include all columns in the table's partitioning function
- A primary must include all columns in the table's partitioning location error? 需要和主键,分区的字段作为一个unique keyi进行处理
- [MySQL] AUTO_INCREMENTカラム変更がめんどくさい・・
mysql [err] 1075
- MySQL添加/删除主键、外键、唯一键、索引、自增
- 错误代码:1503 A UNIQUE INDEX must include all columns in the table's partitioning function
相关文章
- Mysql加锁过程详解(3)-关于mysql 幻读理解
- mysql binlog 参数_MySQL Binlog常用参数
- 【mysql+pandas】用MySQL命令处理在python中处理DataFrame数据 pandasql库
- 【MySQL高级】Mysql并发参数调整及常用SQL技巧
- 【MySQL高级】Mysql的体系结构概览及存储引擎以及索引的使用
- MySQL 8 中的数据类型转换 | 学习函数CAST() 和 CONVERT()
- MySQL Group Replication 学习笔记—group replication 小结
- mysql必知必会学习笔记(1)
- MySQL启动报错: Failed to start LSB start and stop MySQL
- 来自大佬洗礼!2022 头条首发纯手打 MySQL 高级进阶笔记, 吃透 P7 有望
- 【MySQL进阶-07】深入理解mysql性能优化以及解决慢查询问题
- 【MySQL进阶-09】深入理解mysql执行的底层机制
- MySQL学习笔记0-MySQL的卸载与安装以及连接
- 【mysql问题】解决2003-Can‘t connect to MySQL server on ‘ ‘(10060“Unknown error“)
- 转发 可设置skip_name_resolve参数 会出现 ERROR 2005 (HY000): Unknown MySQL server host _mysql ...
- Mysql查询缓存Query_cache的功用
- Windows 免安装版mysql,适用于版本MySQL 5.7.7及以上,快速配置教程
- MySQL还原数据到任意时间点
- MySQL存储过程详解 mysql 存储过程
- MySQL基础(视图及索引)
- c# 连接mysql配置config,不用装net connector
- MySQL基础学习笔记
- mySQl数据库的学习笔记
- 【MySQL】练习三 SQL语言
- centos 6.5下安装mysql+nginx+redmine 3.1.0 笔记
- [Mysql] 更新数据