簡體   English   中英

MySQL 5.5(InnoDB)的分區策略

[英]Partition strategy for MySQL 5.5 (InnoDB)

嘗試為MySQL 5.5(InnoDB)表實現分區策略,但我不確定我的理解是否正確,或者不確定是否需要在創建分區時更改語法。

表“ Apple”有10行行...列“ A”至“ H” PK為列“ A”,“ B”和“ C”

列“ A”是char列,可以標識200萬行的組。 我認為列“ A”將是嘗試實現分區的理想選擇,因為我選擇並刪除了該列,並且實際上可以在不再需要數據時截斷該分區。

我發出了以下命令:ALTER TABLE Apple PARTITION BY KEY(A);

使用以下命令查看分區信息后:SELECT PARTITION_NAME,TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME ='Apple';

我看到所有數據都在分區p0上

我以為MySQL會自動拆分成200萬個組的分區是我的錯?

我是否需要在Alter命令中指定分區數?

我希望這將在一個分區中創建200萬行的組,然后在新數據輸入時為列“ A”提供唯一值,從而創建一個新分區。

對不起,如果這太羅word了。 謝謝-JeffSpicoli

是的,您需要指定分區數(我假設默認值為創建1個分區)。 按KEY分區使用內部哈希函數http://dev.mysql.com/doc/refman/5.1/en/partitioning-key.html ,因此不是基於列的值來選擇分區,而是根據從中計算出的哈希值來選擇分區。 散列函數為相同的輸入返回相同的結果,因此,是的,所有具有相同值的行將位於同一分區中。

但是,如果您希望能夠DROP PARTITION,則可能想按RANGE進行分區(因為如果按KEY進行分區,則您僅知道行在分區中的間隔是均勻的,但是許多不同的值最終會出現在同一分區中)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM