MySQL對資料表已有表進行分割槽表

2021-09-02 20:51:15 字數 2221 閱讀 7933

對現有的乙個表進行建立分割槽表,並把資料遷移到新錶,可以按時間來分割槽,然後這錶不是實時更新,每天有一次插入操作。 

時間比較充裕,但是伺服器上有其他應用,使用較小資源為主要方式。

@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實現查詢排名的功...