溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Mysql 分區之 HASH分區詳解

發布時間:2020-04-26 14:11:44 來源:億速云 閱讀:1933 作者:三月 欄目:MySQL數據庫

下文內容主要給大家帶來Mysql 分區之 HASH分區詳解,這里所講到的知識,與書籍略有不同,都是億速云專業技術人員在與用戶接觸過程中,總結出來的,具有一定的經驗分享價值,希望給廣大讀者帶來幫助。

hash分區是使用主鍵去確保數據均勻分布在一個預先確定數字的分區上. 在range 或list分區中. 你必須顯式的指定給出的數據寫入哪個分區或設置一個列值去保存; 在hash分區中. Mysql已經為你準備的. 你只需要指定一個列的值或表達式基于列值去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(store_id)
PARTITIONS 4;

如果不包含PARTITIONS, 那么默認為1個分區

Mysql 分區之 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;

expr 必須是非恒量的數, 非隨機的數, 就是數字是不同的, 但是是可以確定的。

如何確定一條數據的分區呢?先創建一個表

CREATE TABLE t1 (col1 INT, col2 CHAR(5), col3 DATE)
    PARTITION BY HASH( YEAR(col3) )
    PARTITIONS 4;

如果你插入一條記錄到T1的col3值為“2005-09-15 ',然后分配其存儲決定如下:

MOD(YEAR('2005-09-01'),4)
=  MOD(2005,4)
=  1

1. 線性hash分區

線性hash分區使用一個線性的2的冪運算法則

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

給定的一個表達式expr,分區中的記錄存儲在線性散列使用分區數n在Num的分區,其中n是根據下面的算法推導:

  1. 發現大于2的數我們稱這種價值V下的力量;它可以計算為:

    V = POWER(2, CEILING(LOG(2, num)))

    (假設數字為13)。然后LOG(2,13)是3.7004397181411。CEILING(3.7004397181411)是4,和V =功率(2,4),這是16。)

  2. N = F(column_list) & (V - 1).
  3. N >= num:

  4. Set V = V / 2
  5. Set N = N & (V - 1)

在線性哈希分區的好處是增加,下降,合并,拆分分區可以更快,有利于在處理含有非常大量的數據表(百萬兆字節)。缺點是,與常規哈希分區獲得的分布相比,分區之間不太可能均勻分布數據.


對于以上關于Mysql 分區之 HASH分區詳解,如果大家還有更多需要了解的可以持續關注我們億速云的行業推新,如需獲取專業解答,可在官網聯系售前售后的,希望該文章可給大家帶來一定的知識更新。

 

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女