MySQL資料庫表分割槽功能詳解

2022-09-11 10:42:11 字數 2246 閱讀 6958

1、什麼是表分割槽?

mysql資料庫中的資料是以檔案的形勢存在磁碟上的,預設放在/mysql/data下面(可以通過my.cnf中的datadir來檢視),一張表主要對應著三個檔案,乙個是frm存放表結構的,乙個是myd存放表資料的,乙個是myi存表索引的。如果一張表的資料量太大的話,那麼myd,myi就會變的很大,查詢資料就會變的很慢,這個時候我們可以利用mysql的分割槽功能,在物理上將這一張表對應的三個檔案,分割成許多個小塊,這樣呢,我們查詢一條資料時,就不用全部查詢了,只要知道這條資料在哪一塊,然後在那一塊找就行了。如果表的資料太大,可能乙個磁碟放不下,這個時候,我們可以把資料分配到不同的磁碟裡面去。

表分割槽,是指根據一定規則,將資料庫中的一張表分解成多個更小的,容易管理的部分。從邏輯上看,只有一張表,但是底層卻是由多個物理分割槽組成。

2、表分割槽與分表的區別

分表:指的是通過一定規則,將一張表分解成多張不同的表。比如將使用者訂單記錄根據時間成多個表。 分表與分割槽的區別在於:分割槽從邏輯上來講只有一張表,而分表則是將一張表分解成多張表。

3、表分割槽有什麼好處?

(1)、與單個磁碟或檔案系統分割槽相比,可以儲存更多的資料。

(2)、對於那些已經失去儲存意義的資料,通常可以通過刪除與那些資料有關的分割槽,很容易地刪除那些資料。相反地,在某些情況下,新增新資料的過程又可以通過為那些新資料專門增加乙個新的分割槽,來很方便地實現。

(3)、一些查詢可以得到極大的優化,這主要是借助於滿足乙個給定where語句的資料可以只儲存在乙個或多個分區內,這樣在查詢時就不用查詢其他剩餘的分割槽。因為分割槽可以在建立了分割槽表後進行修改,所以在第一次配置分割槽方案時還不曾這麼做時,可以重新組織資料,來提高那些常用查詢的效率。

(4)、涉及到例如sum()和count()這樣聚合函式的查詢,可以很容易地進行並行處理。這種查詢的乙個簡單例子如 「select salesperson_id, count (orders) as order_total from sales group by salesperson_id;」。通過「並行」,這意味著該查詢可以在每個分割槽上同時進行,最終結果只需通過總計所有分割槽得到的結果。

5)、通過跨多個磁碟來分散資料查詢,來獲得更大的查詢吞吐量。

4、分割槽表的限制因素

(1)、乙個表最多只能有1024個分割槽。

(2)、 mysql5.1中,分割槽表示式必須是整數,或者返回整數的表示式。在mysql5.5中提供了非整數表示式分割槽的支援。

(3)、如果分割槽欄位中有主鍵或者唯一索引的列,那麼多有主鍵列和唯一索引列都必須包含進來。即:分割槽字段要麼不包含主鍵或者索引列,要麼包含全部主鍵和索引列。

(4)、分割槽表中無法使用外來鍵約束。

(5)、mysql的分割槽適用於乙個表的所有資料和索引,不能只對錶資料分割槽而不對索引分割槽,也不能只對索引分割槽而不對錶分割槽,也不能只對錶的一部分資料分割槽。

5、如何判斷當前mysql是否支援分割槽?

mysql> show variables like '%partition%';

+-------------------+-------+

| variable_name | value |

+-------------------+-------+

| h**e_partitioning | yes |

+-------------------+-------+

1 row in set (0.00 sec)

h**e_partintioning 的值為yes,表示支援分割槽。

6、mysql支援的分割槽型別有哪些?

(1)、range分割槽:基於屬於乙個給定連續區間的列值,把多行分配給分割槽。

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

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

(4)、key分割槽:類似於按hash分割槽,區別在於key分割槽只支援計算一列或多列,且mysql伺服器提供其自身的雜湊函式。必須有一列或多列包含整數值。

說明:在mysql5.1版本中,range,list,hash分割槽要求分割槽鍵必須是int型別,或者通過表示式返回int型別。但key分割槽的時候,可以使用其他型別的列(blob,text型別除外)作為分割槽鍵。

mysql 資料庫表分割槽

create table if not exists demo range eventid int 11 unsigned not null,event sk int 11 not null,product sk int 11 not null,date sk int 11 not null,dev...

資料庫表分割槽

create database mytest on sql server 資料庫表分割槽由三個步驟來完成 1.建立分割槽函式 2.建立分割槽架構 3.對錶進行分割槽 1.0建立表分割槽函式 create partition function mypartfunc int as range right...

資料庫表分割槽

實現資料庫表分割槽步驟 1,檢視資料庫檔案儲存位置 select from v datafile 2,在伺服器上資料庫儲存位置上,新建表空間檔案 touch d part1.dbf touch d part2.dbf 第二種方式 在plsql或oracle命令端,建立表空間 3,建立表,並根據型別分...