mysql幾種表分割槽建立案例
1.RANGE 分割槽:
CREATE TABLE t5(id INT,dt DATETIME NOT NULL
)
PARTITION BY RANGE (TO_DAYS(dt)) (
PARTITION p0 VALUES LESS THAN (TO_DAYS('2014-01-01')),
PARTITION p1 VALUES LESS THAN (TO_DAYS('2014-02-01')),
PARTITION p2 VALUES LESS THAN (TO_DAYS('2014-03-01')),
PARTITION p3 VALUES LESS THAN MAXVALUE);
注意range分割槽不能直接對日期型資料分割槽,所以要對分日期進行分割槽,需要變通一下,將日期轉換成int型才行。
CREATE TABLE t5(id INT,dt DATETIME NOT NULL
)
PARTITION BY RANGE (dt) (
PARTITION p0 VALUES LESS THAN ('2014-01-02'),
PARTITION p1 VALUES LESS THAN ('2014-01-03'),
PARTITION p2 VALUES LESS THAN ('2014-01-04'),
PARTITION p3 VALUES LESS THAN MAXVALUE);
如果使用上面的語句,直接使用日期列進行分割槽,則會出現以下錯誤:
錯誤碼: 1697
VALUES value for partition 'p0' must have type INT
2.LIST分割槽
CREATE TABLE t6
(userid INT NOT NULL ,
usertype INT NOT NULL
)
PARTITION BY LIST(usertype)
(
PARTITION p1 VALUES IN (1),
PARTITION p2 VALUES IN (2),
PARTITION p3 VALUES IN (3)
);
3.HASH分割槽
HASH分割槽主要用來確保資料在預先確定數目的分割槽中平均分佈。只需指定一個列值或表示式作為雜湊列,然後指定分割槽資料即可。
CREATE TABLE t8
(userid INT NOT NULL ,
dt DATE
)
PARTITION BY HASH(MONTH(dt))
PARTITIONS 6;
HASH分割槽有個問題,就是where條件是指定的一個範圍的話,將會掃描所有分割槽,這就達不到使用分割槽表來減少掃描範圍獲得效能的提高的目的。尤其是使用達式作為分割槽關鍵字時,一定要注意型別,最好是數值型。
EXPLAIN PARTITIONS
SELECT COUNT(*) FROM t8 WHERE dt>'2013-08-01‘
以上語句就是掃描所有分割槽.
4.key分割槽
Key分割槽型別於HASH分割槽,HASH分割槽使用的使用者定義的表示式,而KEY分割槽的雜湊函式是由MySQL 伺服器提供,這些函式是基於與PASSWORD()一樣的運演算法則。它與Hash分割槽主要的區別是,分割槽依據只能是一個或多個列名的一個列表。
CREATE TABLE t9
(userid INT NOT NULL ,
dt DATE
)
PARTITION BY HASH(dt)
PARTITIONS 6;
Key分割槽和HASH分割槽一樣,有範圍掃描的問題。
5.複合分割槽
1)RANGE - HASH(範圍雜湊)複合分割槽
CREATE TABLE t11
(id INT NOT NULL ,
dt DATE
)
PARTITION BY RANGE(id)
SUBPARTITION BY HASH(YEAR(dt))
SUBPARTITIONS 4
(
PARTITION p1 VALUES LESS THAN (100000),
PARTITION p2 VALUES LESS THAN maxvalue
);
2)RANGE- KEY複合分割槽
CREATE TABLE t12
(id INT NOT NULL ,
dt DATE
)
PARTITION BY RANGE(id)
SUBPARTITION BY KEY(dt)
SUBPARTITIONS 4
(
PARTITION p1 VALUES LESS THAN (100000),
PARTITION p2 VALUES LESS THAN maxvalue
);
3)LIST - HASH複合分割槽
CREATE TABLE t13 (
userid INT,
usertype INT
)
PARTITION BY LIST (usertype)
SUBPARTITION BY HASH(userid)
SUBPARTITIONS 3
(
PARTITION p1 VALUES IN (1),
PARTITION p2 VALUES IN (2),
PARTITION p3 VALUES IN (3)
)
;
4)LIST - KEY 複合分割槽
CREATE TABLE t14 (
userid INT,
usertype INT
)
PARTITION BY LIST (usertype)
SUBPARTITION BY KEY(userid)
SUBPARTITIONS 3
(
PARTITION p1 VALUES IN (1),
PARTITION p2 VALUES IN (2),
PARTITION p3 VALUES IN (3)
)
;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29371470/viewspace-2080647/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 第40期:MySQL 分割槽表案例分享MySql
- MySql建立分割槽MySql
- 分割槽表及分割槽索引建立示例索引
- MySQL表的四種分割槽型別MySql型別
- 【MYSQL】 分割槽表MySql
- MySQL 分割槽表MySql
- MySQL分割槽表MySql
- Oracle 建立分割槽表Oracle
- MySQL Key分割槽表建立方法介紹MySql
- Oracle 分割槽表的建立Oracle
- OceaBase 分割槽表建立技巧
- MySQL 分割槽表探索MySql
- mysql 分表 分割槽MySql
- mysql 分割槽表用法MySql
- MySQL表分割槽管理MySql
- 分割槽表索引實踐案例索引
- MySQL 分割槽表 partition線上修改分割槽欄位MySql
- 分割槽表並行建立索引並行索引
- mysql 進行表分割槽MySql
- Mysql表分割槽實現MySql
- mysql分割槽表筆記MySql筆記
- MySQL入門--分割槽表MySql
- mysql —— 分表分割槽(1)MySql
- MySQL的List分割槽表MySql
- Mysql表分割槽實操MySql
- MySQL分割槽表的分割槽原理和優缺點MySql
- 將mysql非分割槽錶轉換為分割槽表MySql
- 全面學習分割槽表及分割槽索引(6)--建立range-list組合分割槽索引
- MySQL 分割槽表知識整理MySql
- MySQL調優之分割槽表MySql
- mysql的分割槽和分表MySql
- mysql的分割槽與分表MySql
- mysql分割槽表小結2MySql
- mysql表水平拆分和分割槽分表MySql
- 深入學習分割槽表及分割槽索引(5)--建立range-hash組合分割槽(續)索引
- oracle分割槽表和分割槽表exchangeOracle
- 教程:如何使用DataLakeAnalytics建立分割槽表
- MySQL資料表分割槽手記MySql