1. 程式人生 > >MySQL分割槽(partition)相關概念

MySQL分割槽(partition)相關概念

資料分割槽:
mysql 資料庫中的資料是以檔案的形式儲存在磁碟上,預設放在/mysql/data下面

show variables like 'datadir';

這裡寫圖片描述

一張表主要對應三個檔案,1)frm存放表結構,2)myd存放表資料,3)myi存放表索引。
如果一張表的資料量太大,則myd,myi會變的很大,查詢資料就會邊的很慢,此時可以利用mysql的分割槽功能,在物理上將這張表對應的三個檔案,分割成很多小塊,此時查詢一條資料時,就不用全部掃描查找了,只要知道這條資料在那一塊,然後在那一塊查詢,如果表資料太大,可能一個磁碟放不下,則可以將資料分配到不同的磁盤裡面

1、什麼是表分割槽
根據一定規則,將資料庫中的一張表分解成多個更小的,便於管理。邏輯上,只有一張表,但底層卻是由多個物理分割槽組成。
2、表分割槽和分表
分表:指通過一定規則,將一張表分解成多張不同的表。例如將使用者表,根據註冊時間分成多個表。
分表與分割槽的區別在於:分割槽從邏輯上只有一張表,分表是將一張表分成多張表。
3、表分割槽作用:
1)資料可以分佈到不同的物理裝置上,從而高效地利用多個硬體裝置。
2)跟單個磁碟或者檔案系統相比,可以儲存更多資料
3)優化查詢
在where 條件語句中包含分割槽條件時,可以只掃描一個或多個分割槽表來提高查詢效率
涉及sum和count等函式語句時,也可以在多個分割槽上並行處理,最後彙總結果。
4)容易維護
例如:批量操作時,刪除大量資料,則可以清楚整個分割槽
5)使用分割槽表來避免某些特殊的瓶頸
eg:innoDB單個索引的互斥訪問
4、限制因素:
1)一個表最多隻能有1024個分割槽
2)mysql 5.1 分割槽表示式必須是整數,或者返回整數的表示式。在mysql 5.5中提供了非整數表示式分割槽的支援。
3)如果分割槽欄位中有主鍵或者唯一索引,則主鍵列和唯一索引列都必須包含進來或者都不包含。
4)分割槽表中不支援使用外來鍵約束
5)分割槽適用於一個表的所有資料和索引,不能只對表的一部分資料分割槽