Mysql Partition分區(理論)

Partition  分區

        MySql 5.6 手冊:http://dev.mysql.com/doc/refman/5.6/en/partitioning.htmlhtml

我理解的分區

         舉個例子,操做系統中的分區,是將硬盤根據大小進行邏輯分區,就是咱們看到的C、D、E、F盤,邏輯分區仍是在同一個操做系統中。數據庫產品的Partition分區也是同樣的道理,將數據進行邏輯分區,對數據劃分界限。
mysql

分區類型

MySql 支持Range,List,Hash,Key。最長用的是Range。注意不一樣的版本對分區類型的支持有些不一樣!sql

Range:範圍

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 (21)
);
LIST:列表

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)
);
Key:鍵

CREATE TABLE k1 (
    id INT NOT NULL,
    name VARCHAR(20),
    UNIQUE KEY (id)
)
PARTITION BY KEY()
PARTITIONS 2;
HASH:哈希

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( YEAR(hired) )
PARTITIONS 4;


例子

    數據:新聞表,2010開始記錄,假設10年到15年每一年的數據爲200W,總數1000W;數據庫

    條件:查詢15年7月全部的新聞數據;性能

    未分區:須要把表遍歷,1000W條數據,查詢性能就不用說了;spa

    分區:按照年份分區,當要查詢15年數據,只會遍歷15年的數據200W條;操作系統


參考

深刻了解MySQL 5.5分區功能加強
code

相關文章
相關標籤/搜索