第17章 Mysql分区表,已有表变更分区表
2015-10-27 08:55
405 查看
实际对比测试的时候,没有发现查询性能有明显提升,有待实际例子支撑。
查看是否支持:
show variables like '%partition%'
RANGE分区:http://www.cnblogs.com/chenmh/p/5627912.html
LIST分区:http://www.cnblogs.com/chenmh/p/5643174.html
COLUMN分区:http://www.cnblogs.com/chenmh/p/5630834.html
HASH分区:http://www.cnblogs.com/chenmh/p/5644496.html
KEY分区:http://www.cnblogs.com/chenmh/p/5647210.html
子分区:http://www.cnblogs.com/chenmh/p/5649447.html
指定各分区路径:http://www.cnblogs.com/chenmh/p/5644713.html
分区建索引:http://www.cnblogs.com/chenmh/p/5761995.html
分区介绍总结:http://www.cnblogs.com/chenmh/p/5623474.html
注意:
1,基于时间类型的字段的转换函数mysql提供了"YEAR(),MONTH(),DAY(),TO_DAYS(),TO_SECONDS(),WEEKDAY(),DAYOFYEAR()"
UNIX_TIMESTAMP() #针对timestemp日期类型
2,mysql5.7以后查询语句支持指定分区例如:“ SELECT * FROM t PARTITION (p0,p1) WHERE c < 5
3,针对非整形字段进行RANG\LIST分区建议使用COLUMNS分区。
4,后期维护,可以使用“ALTER TABLE … OPTIMIZE PARTITION”来收回没有使用的空间,并整理分区数据文件的碎片。例子:ALTER TABLE t1 OPTIMIZE PARTITION (p0, p1);
已有表变更分区表步骤:
方法1:
直接修改:
a,修改
alter table `visit_trace2` partition by range(UNIX_TIMESTAMP(created))(
partition p0 values less than (UNIX_TIMESTAMP('2016-02-01 00:00:00')),
partition p1 values less than (UNIX_TIMESTAMP('2016-03-01 00:00:00')),
partition p2 values less than (UNIX_TIMESTAMP('2019-04-01 00:00:00'))
);
b,查看
select TABLE_SCHEMA,table_name,PARTITION_NAME,TABLE_ROWS
from information_schema.partitions where
TABLE_SCHEMA = 'tmp' and
table_name='emp2';
c,修改
删除分区和数据(会删除数据!!!)
alter table emp2 drop partition p0;
移除单个分区定义:
ALTER TABLE emp2 REMOVE PARTITIONING p2 ;
移除所有分区定义:
alter table emp2 remove partitioning ;
追加分区(要求新增的分区要比之前的分区大):
alter table mep2 add partition (partition p0 values less than (UNIX_TIMESTAMP('2016-02-01 00:00:00')));
alter table mep2 add partition (partition p0 values less than (maxvalue); #添加最大分区
拆分分区:
ALTER TABLE employees REORGANIZE PARTITION p0 INTO (
PARTITION s0 VALUES LESS THAN (3),
PARTITION s1 VALUES LESS THAN (6)
);
方法2:
新建表修改:
参考url:
http://blog.itpub.net/15480802/viewspace-689399/ #百万级表
http://www.2cto.com/database/201502/376630.html #上亿级表
1,导出表结构;
2,修改导出表结构为分区表;
3,导出导入数据;
4,修改表名;
5,完成;
查看是否支持:
show variables like '%partition%'
RANGE分区:http://www.cnblogs.com/chenmh/p/5627912.html
LIST分区:http://www.cnblogs.com/chenmh/p/5643174.html
COLUMN分区:http://www.cnblogs.com/chenmh/p/5630834.html
HASH分区:http://www.cnblogs.com/chenmh/p/5644496.html
KEY分区:http://www.cnblogs.com/chenmh/p/5647210.html
子分区:http://www.cnblogs.com/chenmh/p/5649447.html
指定各分区路径:http://www.cnblogs.com/chenmh/p/5644713.html
分区建索引:http://www.cnblogs.com/chenmh/p/5761995.html
分区介绍总结:http://www.cnblogs.com/chenmh/p/5623474.html
注意:
1,基于时间类型的字段的转换函数mysql提供了"YEAR(),MONTH(),DAY(),TO_DAYS(),TO_SECONDS(),WEEKDAY(),DAYOFYEAR()"
UNIX_TIMESTAMP() #针对timestemp日期类型
2,mysql5.7以后查询语句支持指定分区例如:“ SELECT * FROM t PARTITION (p0,p1) WHERE c < 5
3,针对非整形字段进行RANG\LIST分区建议使用COLUMNS分区。
4,后期维护,可以使用“ALTER TABLE … OPTIMIZE PARTITION”来收回没有使用的空间,并整理分区数据文件的碎片。例子:ALTER TABLE t1 OPTIMIZE PARTITION (p0, p1);
已有表变更分区表步骤:
方法1:
直接修改:
a,修改
alter table `visit_trace2` partition by range(UNIX_TIMESTAMP(created))(
partition p0 values less than (UNIX_TIMESTAMP('2016-02-01 00:00:00')),
partition p1 values less than (UNIX_TIMESTAMP('2016-03-01 00:00:00')),
partition p2 values less than (UNIX_TIMESTAMP('2019-04-01 00:00:00'))
);
b,查看
select TABLE_SCHEMA,table_name,PARTITION_NAME,TABLE_ROWS
from information_schema.partitions where
TABLE_SCHEMA = 'tmp' and
table_name='emp2';
c,修改
删除分区和数据(会删除数据!!!)
alter table emp2 drop partition p0;
移除单个分区定义:
ALTER TABLE emp2 REMOVE PARTITIONING p2 ;
移除所有分区定义:
alter table emp2 remove partitioning ;
追加分区(要求新增的分区要比之前的分区大):
alter table mep2 add partition (partition p0 values less than (UNIX_TIMESTAMP('2016-02-01 00:00:00')));
alter table mep2 add partition (partition p0 values less than (maxvalue); #添加最大分区
拆分分区:
ALTER TABLE employees REORGANIZE PARTITION p0 INTO (
PARTITION s0 VALUES LESS THAN (3),
PARTITION s1 VALUES LESS THAN (6)
);
方法2:
新建表修改:
参考url:
http://blog.itpub.net/15480802/viewspace-689399/ #百万级表
http://www.2cto.com/database/201502/376630.html #上亿级表
1,导出表结构;
2,修改导出表结构为分区表;
3,导出导入数据;
4,修改表名;
5,完成;
相关文章推荐
- 将mysql数据库中的数据转入sql server中
- mac系统OS X10.10版本安装最新5.7.9mysql的方法
- MySQL的configure参数详解
- MySQL安装(转)
- MySQL定期分析检查与优化表
- Mysql 事物介绍
- 远程连接MYSQL速度慢,解决办法
- Mysql 存储引擎
- 常用的mysql接口函数功能
- powerdesign16 导出数据模型到mysql数据库中/从mysql数据库导入数据模型
- python 连接数据库-设置oracle ,mysql 中文字符问题
- mysql一些常用命令总结
- MySQL安装使用和常用命令
- mysql 学习记录(十七)--水平拆分表、垂直拆分表、中间表
- mysql安装
- InnoDB事务的开启
- MySQL
- MySQL锁机制及优化
- Mysql数据库
- mysql常处理用时间sql语句