對現有的乙個表進行建立分割槽表,並把資料遷移到新錶,可以按時間來分割槽,然後這錶不是實時更新,每天有一次插入操作。@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多一點資料),測試下ok,刪除原來的表。
測試可以正常使用,收工,觀察2天。。
– 10.16
通過這兩天的觀察,頁面的查詢速度從打不開到基本可以秒開的速度了,這個優化是成立的。
MySQL對資料表已有表進行分割槽表的實現
目錄 對現有的乙個表進行建立分割槽表,並把資料遷移到新錶,可以按時間來分割槽,然後這錶不是實時更新,每天有一次插入操作。時間比較充裕,但是伺服器上有其他應用,使用較小資源為主要方式。1 可以使用alter table來進行更改表為分割槽表,這個操作會建立乙個分割槽表,然後自動進行資料copy然後刪除...
django刪除資料表以及對資料表進行改動更新
實在是氣的不行,被坑的太難受了,為了防止有人繼續走彎路,我來寫這篇文章了。本人屬於大學需要做專案,自己摸索著使用django,所以最開始django的資料庫就是個老大難的問題,當我生成的資料表我想刪除時,我去網上查了很多解答,那些辦法不僅複雜的不行,還無數次的把我的資料庫整崩,然後我就不斷的重新建新...
MySQL對資料表進行資料彙總並得出排名
問題描述 現有 t1,t1中有checkdoctor 檢查人員 字段,無count 匯 計 和rank 排名字段 現要求在指定條件下獲取各個檢查人員的工作量排名,允許並列排名。由於使用mysql資料庫,沒有rank函式可使用,該如何實現呢?解決思路 在mysql中,可借助rownum實現查詢排名的功...