第17章 Mysql分割槽表,已有表變更分割槽表
實際對比測試的時候,沒有發現查詢效能有明顯提升,有待實際例子支撐。
檢視是否支援:
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,完成;