操作方式
@1 可以使用ALTER TABLE來進(jìn)行更改表為分區(qū)表,這個(gè)操作會(huì)創(chuàng)建一個(gè)分區(qū)表,然后自動(dòng)進(jìn)行數(shù)據(jù)copy然后刪除原表,
猜測服務(wù)器資源消耗比較大。
類似操作
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 新建一個(gè)和原來表一樣的分區(qū)表,然后把數(shù)據(jù)從原表導(dǎo)出,接著倒入新表。
(原來的表主鍵只有id,而我的分區(qū)字段是 stsdate, 這里主鍵要修改為 id,stsdate 聯(lián)合主鍵,分區(qū)表要求分區(qū)字段要是主鍵或者是主鍵的一部分)
操作過程
采用第二種方案。先創(chuàng)建分區(qū)表,然后導(dǎo)出原表數(shù)據(jù),新表名稱改為原表名,然后插入,最后建立普通索引。
建立分區(qū)表
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
);
導(dǎo)出數(shù)據(jù)
mysqldump -u dbname -p --no-create-info dbname apdailysts > apdailysts.sql
修改表名,導(dǎo)入數(shù)據(jù)(10分鐘就導(dǎo)入完了,200w, 8g多一點(diǎn)數(shù)據(jù)),測試下ok,刪除原來的表。
————————————————
版權(quán)聲明:本文為CSDN博主「orangleliu」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/orangleliu/article/details/57088338