mysql 分割槽相關操作

2021-09-02 20:51:15 字數 3299 閱讀 2735

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

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

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

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

liner hash

mysql還支援線性雜湊功能,它與常規雜湊的區別在於,線性雜湊功能使用的乙個線性的2的冪(powers-of-two)運算法則,而常規雜湊使用的是求雜湊函式值的模數。線性雜湊分割槽和常規雜湊分割槽在語法上的唯一區別在於,在「partition by」子句中新增「linear」關鍵字。

分割槽表的管理操作

查詢某一分割槽的資料

select * from emp partition(p2,p3)

刪除分割槽:

alter table empdrop partition p1;

不可以刪除hash或者key分割槽。

一次性刪除多個分割槽,alter table empdrop partition p1,p2;

增加分割槽:

alter table empadd partition (partition p3 values less than (4000));

alter table empladd partition (partition p3 values in (40));

分解分割槽:

reorganizepartition關鍵字可以對錶的部分分割槽或全部分割槽進行修改,並且不會丟失資料。分解前後分割槽的整體範圍應該一致。

alter table te

reorganize partition p1 into

(partition p1 values less than (100),

partition p3 values less than (1000)

); ----不會丟失資料

合併分割槽:

merge分割槽:把2個分割槽合併為乙個。

alter table te

reorganize partition p1,p3 into

(partition p1 values less than (1000));

----不會丟失資料

重新定義hash分割槽表:

alter table emp partitionby hash(salary)partitions 7;

----不會丟失資料

重新定義range分割槽表:

alter table emp partitionbyrange(salary)

(partition p1 values less than (2000),

partition p2 values less than (4000)

); ----不會丟失資料

刪除表的所有分割槽:

alter table emp removepartitioning;--不會丟失資料

重建分割槽:

這和先刪除儲存在分割槽中的所有記錄,然後重新插入它們,具有同樣的效果。它可用於整理分割槽碎片。

alter table emp rebuild partitionp1,p2;

優化分割槽:

如果從分割槽中刪除了大量的行,或者對乙個帶有可變長度的行(也就是說,有varchar,blob,或text型別的列)作了許多修改,可以使用「alter table ... optimize partition」來收回沒有使用的空間,並整理分割槽資料檔案的碎片。

alter table empoptimize partition p1,p2;

分析分割槽:

讀取並儲存分割槽的鍵分布。

alter table empanalyze partition p1,p2;

修補分割槽:

修補被破壞的分割槽。

alter table emp repairpartition p1,p2;

檢查分割槽:

可以使用幾乎與對非分割槽表使用check table 相同的方式檢查分割槽。

alter table empcheck partition p1,p2;

這個命令可以告訴你表emp的分割槽p1,p2中的資料或索引是否已經被破壞。如果發生了這種情況,使用「alter table ... repair partition」來修補該分割槽。

mysql分割槽表的侷限性

1.在5.1版本中分割槽表對唯一約束有明確的規定,每乙個唯一約束必須包含在分割槽表的分割槽鍵(也包括主鍵約束)。

2. mysql分割槽處理null值的方式

如果分割槽鍵所在列沒有notnull約束。

如果是range分割槽表,那麼null行將被儲存在範圍最小的分割槽。

如果是list分割槽表,那麼null行將被儲存到list為0的分割槽。

在按hash和key分割槽的情況下,任何產生null值的表示式mysql都視同它的返回值為0。

為了避免這種情況的產生,建議分割槽鍵設定成not null。

3. 分割槽鍵必須是int型別,或者通過表示式返回int型別,可以為null。唯一的例外是當分割槽型別為key分割槽的時候,可以使用其他型別的列作為分割槽鍵( blob or text 列除外)。

4. 對分割槽表的分割槽鍵建立索引,那麼這個索引也將被分割槽,分割槽鍵沒有全域性索引一說。

5. 只有rang和list分割槽能進行子分割槽,hash和key分割槽不能進行子分割槽。

6. 臨時表不能被分割槽。

獲取mysql分割槽表資訊的幾種方法

1. show create table 表名

可以檢視建立分割槽表的create語句

2. show table status

可以檢視表是不是分割槽表

3. 檢視information_schema.partitions表

select

partition_name part,

partition_expression expr,

partition_description descr,

table_rows

from information_schema.partitions where

table_schema = schema()

and table_name='test';

可以檢視表具有哪幾個分割槽、分割槽的方法、分割槽中資料的記錄數等資訊

4. explain partitions select語句

通過此語句來顯示掃瞄哪些分割槽,及他們是如何使用的.

oracle分割槽相關操作

1 查詢指定表分割槽 select table name,partition name,high value,tablespace name from user tab partitions where table name table name 2 分割槽切分,之前存在被切分分割槽的中的資料,如果...

mysql分割槽操作

分割槽表使用myisam引擎。分割槽規則 range 範圍 這種模式允許將資料劃分不同範圍。例如可以將乙個表通過年份劃分成若干個分割槽。hash 雜湊 這中模式允許通過對錶的乙個或多個列的hashkey進行計算,最後通過這個hash碼不同數值對應的資料區域進行分割槽。例如可以建立乙個對錶主鍵進行分割...

mysql相關操作 mysql 相關操作

1 登入 mysql u root p 2 檢視當前有的資料庫 show databases 3 建立資料庫 create database 資料庫名 4 操作 使用 資料庫 use 資料庫名 5 檢視有哪些表 show tables 6 建立表 create table 表名 7 刪除表 drop...