一摩泪、分區(qū)優(yōu)點(diǎn)
- 邏輯數(shù)據(jù)分割吼鱼,存儲(chǔ)在不同的位置
- 方便邏輯數(shù)據(jù)的刪除躬贡,當(dāng)不需要某邏輯數(shù)據(jù)谆奥,可以刪除分區(qū)
- 優(yōu)化查詢,可以通過(guò)確定分區(qū)拂玻,更快定位數(shù)據(jù)存儲(chǔ)位置
- 通過(guò)跨多個(gè)磁盤來(lái)分散數(shù)據(jù)查詢酸些,來(lái)獲得更大的查詢吞吐量
- 分區(qū)后數(shù)據(jù)仍存儲(chǔ)在同一張表,滿足一張表上的約束條件
二檐蚜、分區(qū)限制
- 只能對(duì)整形數(shù)據(jù)進(jìn)行分區(qū)
- 如果表含有主鍵或者唯一索引魄懂,則表的分區(qū)必須包含主鍵或者唯一索引
- 分區(qū)的最大數(shù)為1024
- 分區(qū)不支持全文索引
- 分區(qū)不支持外鍵
三、什么時(shí)候使用分區(qū)
- 海量數(shù)據(jù)表
- 歷史表快速的查詢闯第,可以采用ARCHIVE+PARTITION的方式市栗。
- 數(shù)據(jù)表索引大于服務(wù)器有效內(nèi)存
- 對(duì)于大表,特別是索引遠(yuǎn)遠(yuǎn)大于服務(wù)器有效內(nèi)存時(shí)咳短,可以不用索引填帽,此時(shí)分區(qū)效率會(huì)更有效。
四咙好、分區(qū)的類型
- Range分區(qū)
- List分區(qū)
- Hash分區(qū)
- Key分區(qū)
五篡腌、分區(qū)示例
1.Range分區(qū)
CREATE TABLE employees (
id INT NOT NULL,
fname VARCHAR(30),
lname VARCHAR(30),
hired DATE NOT NULL DEFAULT '1970-01-01',
separated DATE NOT NULL DEFAULT '9999-12-31',
job_code INT NOT NULL,
store_id INT NOT NULL
)
PARTITION BY RANGE (store_id) (
PARTITION p0 VALUES LESS THAN (6),
PARTITION p1 VALUES LESS THAN (11),
PARTITION p2 VALUES LESS THAN (16),
PARTITION p3 VALUES LESS THAN MAXVALUE
);
2.LIst分區(qū)
CREATE TABLE employees (
id INT NOT NULL,
fname VARCHAR(30),
lname VARCHAR(30),
hired DATE NOT NULL DEFAULT '1970-01-01',
separated DATE NOT NULL DEFAULT '9999-12-31',
job_code INT,
store_id INT
)
PARTITION BY LIST(store_id)
PARTITION pNorth VALUES IN (3,5,6,9,17),
PARTITION pEast VALUES IN (1,2,10,11,19,20),
PARTITION pWest VALUES IN (4,12,13,14,18),
PARTITION pCentral VALUES IN (7,8,15,16)
);
3.Hash分區(qū)
CREATE TABLE employees (
id INT NOT NULL,
fname VARCHAR(30),
lname VARCHAR(30),
hired DATE NOT NULL DEFAULT '1970-01-01',
separated DATE NOT NULL DEFAULT '9999-12-31',
job_code INT,
store_id INT
)
PARTITION BY HASH(store_id)
PARTITIONS 4;