MySQL分割槽(partition)相關概念

2021-08-01 07:53:03 字數 1143 閱讀 1314

資料分割槽:

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

一張表主要對應三個檔案,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)分割槽適用於乙個表的所有資料和索引,不能只對錶的一部分資料分割槽

MapReduce的分割槽 (Partition)

分割槽的概念 在mapreduce中,資料進行map轉換後,預設根據map後資料的key值進行雜湊派發,同乙個分割槽的資料傳送到同乙個reduce中去處理。但實際中,這種方式不是高效的,並且有時並不能滿足我們的需求。所以我們需要自定義分割槽方式,根據自己的需求,選擇記錄的reducer。進行自定義分...

spark按照key分割槽 partitionBy

按照key分割槽,所以資料必須是k v鍵值對型別 val rdd rdd string int sc.makerdd list a 1 b 2 c 3 d 4 2 println 重新分割槽前 index,datas collect println 重新分割槽後 按照雜湊值進行分割槽 val new...

mysql分割槽邊 mysql分割槽

檢視資料庫版本是否支援分割槽 分割槽的四種型別 range分割槽 範圍分割槽,根據某個欄位的值來進行分割槽,某個連續的區間來進行區分 建立表時分區create table teacher id varchar 20 not null name varchar 20 age varchar 20 bi...