程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 小貝_mysql分區理論學習

小貝_mysql分區理論學習

編輯:MySQL綜合教程

小貝_mysql分區理論學習


mysql分區

簡要:

一、為什麼需要mysql分區

二、mysql分區的類型

三、mysql分區技術對比

 

一、為什麼需要mysql分區

1、首先,業務數據增大時,必然會影響數據操作。通常針對大數據,有如下優化方法:

a、大表拆小表

b、sql語句優化

2、不足:

a、sql語句優化可以通過增加索引等來調整,但是隨著數據量增大時將會導致索引的維護代價增大

b、大表拆分小表可以在細分為垂直or水平分表。但是需要實現邏輯操作。即選擇那張表

3、總結: 針對大數據,添加索引會導致索引文件大以及維護索引代價大,拆分表,就需要實現邏輯操作。因此,這裡需要用到mysql分區。分區其實從本質上也是實現了拆分小表的做法。是基於物理層面上進行拆分成小表,無須實現邏輯操作,對用戶而言是透明的。

 

二、mysql分區類型

1、range分區: 基於給定連續區間的列值,把多行分配給分區

2、list分區: 類似於按range分區,區別在於list分區是基於列值匹配一個離散值集合中的某個值來進行選擇

3、hash分區: 基於用戶定義的表達式的返回值來進行選擇的分區,該表達式使用將要插入到表中的這些行的列值進行計算,這個函數可以包含mysql中有效的、產生非負整數值得任何表達式

4、key分區: 類似於hash分區,區別在於key分區只支持計算一列或多列,且mysql服務器提供自身的哈希函數

總結: 使用優先級 range>list>hash>key

hash一般用於測試分區

 

三、mysql分區技術對比

分區名稱

優點

缺點

共性

range

適合與日期類型,支持復合分區

有限的分區

一般只針對某一列

list

適合與有固定取值的列,支持復合分區

有限的分區,插入記錄在這一列的值不在list中,則數據丟失

一般只針對某一列

hash

線性hash使得增加、刪除和合並分區更快捷

線性hash的數據分布不均勻,而一般hash的數據分布均勻

一般只針對某一列

key

列可以為字符串等其它非int類型

效率較之前的低,因為函數為復雜的函數如md5或sha函數

一般只針對某一列

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved