MySQL对数据表已有表进行分区表
2024-10-11 00:54:48
原文:https://blog.51cto.com/13675040/2114580
1.由于数据量较大,对现有的表进行分区
操作方式.
可以使用ALTER TABLE来进行更改表为分区表,这个操作会创建一个分区表,然后自动进行数据copy然后删除原表,
猜测服务器资源消耗比较大。
ALTER TABLE tbl_rtdata PARTITION BY RANGE (Month(fld_date))
(
PARTITION p_Apr VALUES LESS THAN (TO_DAYS('2012-05-01')),
PARTITION p_May VALUES LESS THAN (TO_DAYS('2012-06-01')),
PARTITION p_Dec VALUES LESS THAN MAXVALUE );
**
2 新建一个和原来表一样的分区表,然后把数据从原表导出,接着倒入新表。 **
(原来的表主键只有id,而我的分区字段是 stsdate, 这里主键要修改为 id,stsdate 联合主键,分区表要求分区字段要是主键或者是主键的一部分)
操作过程
采用第二种方案。先创建分区表,然后导出原表数据,新表名称改为原表名,然后插入,最后建立普通索引。
建立分区表
CREATE TABLE `apdailysts_p` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`ap_id` INT(11) NOT NULL,
`mac` VARCHAR(17) NOT NULL,
`liveinfo` LONGTEXT NOT NULL,
`livetime` INT(11) NOT NULL,
`stsdate` DATE NOT NULL,
`lastmodified` DATETIME NOT NULL,
PRIMARY KEY (`id`, `stsdate`)
)
PARTITION BY RANGE COLUMNS(stsdate) (
PARTITION p0 VALUES LESS THAN ('2016-06-01'),
PARTITION p1 VALUES LESS THAN ('2016-07-01'),
PARTITION p2 VALUES LESS THAN ('2016-08-01'),
PARTITION p3 VALUES LESS THAN ('2016-09-01'),
PARTITION p4 VALUES LESS THAN ('2016-10-01'),
PARTITION p5 VALUES LESS THAN ('2016-11-01'),
PARTITION p6 VALUES LESS THAN ('2016-12-01'),
PARTITION p7 VALUES LESS THAN ('2017-01-01'),
PARTITION p8 VALUES LESS THAN ('2017-02-01'),
PARTITION p9 VALUES LESS THAN ('2017-03-01'),
PARTITION p10 VALUES LESS THAN ('2017-05-01'),
PARTITION p11 VALUES LESS THAN ('2017-06-01'),
PARTITION p12 VALUES LESS THAN ('2017-07-01'),
PARTITION p13 VALUES LESS THAN ('2017-08-01'),
PARTITION p14 VALUES LESS THAN ('2017-09-01'),
PARTITION p15 VALUES LESS THAN MAXVALUE
);
导出数据
mysqldump -u dbname -p --no-create-info dbname apdailysts > apdailysts.sql
修改表名,导入数据(10分钟就导入完了,200w, 8g多一点数据),测试下,删除原来的表。
测试可以正常使用,观察几天天。。
最新文章
- Java 知识结构图
- 渗透杂记-2013-07-13 windows/mssql/mssql_payload
- UVA11178 Morley's Theorem(基础模板)
- Android Drawable资源
- (转载)delphi实例TDBGrid用右键菜单复制行粘贴行
- Not enough free space on disks! linux
- 【HDOJ】2405 Marbles in Three Baskets
- ASP.NET DataList绑定数据并实现分页
- 代理模式(Proxy)
- WebService的学习
- 【Nginx】下载,请求限速,根据URL参数限速
- react项目构建
- 【任务】Python语言程序设计.MOOC学习
- GALV_maptravel研究分析(2)
- Linux进程核心调度器之主调度器schedule--Linux进程的管理与调度(十九)
- Tomcat解决中文乱码并部署项目
- C++程序设计方法3:虚函数
- jquery自动填充输入框
- BZOJ 3357: [Usaco2004]等差数列
- Python 多进程 一分钟下载二百张图片 是什么样子的体验