mysql 5 6 分割槽 四 分割槽和鎖定

2021-08-06 03:43:42 字數 2339 閱讀 7788

在mysql 5.6.5及更早版本中,對於

myisam執行dml或ddl語句時,實際執行表級鎖的

儲存引擎 

,影響分割槽表的這種語句對整個**施加了鎖定; 

也就是說,所有分割槽都被鎖定,直到語句完成。

mysql 5.6.6實現

分割槽鎖定修剪

,這在許多情況下消除了不必要的鎖定。

在mysql 5.6.6及更高版本中,從分割槽

myisam

讀取或更新的大多數語句

只會導致受影響的分割槽被鎖定。

例如,在mysql 5.6.6之前,乙個

select從分割槽myisam表導致整個表上的鎖定; 

在mysql 5.6.6及更高版本中, 

select只有實際包含滿足語句where條件的行的那些分割槽才被

鎖定。這具有提高並行操作對分割槽

myisam

的速度和效率的作用

。當使用

myisam具有多個(32個或更多)分割槽的表時,

這種改進變得尤其明顯 

。這種行為變化對使用儲存引擎(例如

innodb採用行級鎖定)

影響分割槽表的語句沒有任何影響, 

並且在分割槽修剪之前並不實際執行(或需要執行)鎖定。

接下來的幾段討論使用採用表級鎖的儲存引擎對分割槽鎖定修剪對各種mysql語句的影響。

對dml語句的影響

select語句(包括含有聯合或連線的語句)現在只鎖定那些實際需要讀取的分割槽。

這也適用於 

select ... partition。 乙個

update只為表梅幹鎖上沒有分割槽列被更新。

replace和 

insert現在僅鎖定那些具有要被插入或替換的行分割槽。

但是,如果

auto_increment為任何分割槽列生成值,則所有分割槽都將被鎖定。

insert ... on duplicate key update只要沒有分割槽列被更新就被修剪。

insert ... select現在只鎖定需要讀取的源表中的那些分割槽,儘管目標表中的所有分割槽都被鎖定。 注意

insert delayed不支援分割槽表。

load data對分割槽表上的語句

強加的鎖

不能被修剪。

使用分割槽表的任何分割槽列

的存在before insertbefore update觸發器意味著鎖定insertupdate更新此表的語句不能被修剪,因為觸發器可以更改其值:before insert任何表的分割槽列上

的觸發器意味著由

insertreplace不能

設定的鎖定

被修剪,因為 

before insert觸發器可能會在插入行之前更改一行的分割槽列,從而強制該行進入與其他分割槽不同的分割槽。

before update上的分割槽列觸發意味著鎖所規定updateinsert ... on duplicate key update不能被修剪。

受影響的ddl語句

create view不再造成任何鎖。

alter table ... exchange partition現在修剪鎖; 

只有交換的表和交換的分割槽被鎖定。

alter table ... truncate partition現在修剪鎖; 

只有要清空的分割槽被鎖定。

alter table語句仍然在表級別上採用元資料鎖。

其他宣告

lock tables不能修剪分割槽鎖。

call stored_procedure(expr)

支援鎖定修剪,但評估 

expr不。

do並且 

set語句不支援分割槽鎖定修剪。

mysql 5 6分割槽維護

mysql 5.6分割槽維護 表和分割槽的一些維護任務,適用於在mysql5.6的分割槽表上用sql語句進行。維護分割槽表,可以使用支援分割槽表的語句 check table,optimize table,analyze table,and repair table 你可以使用alter table...

mysql優化參考 四 分割槽

一 分割槽概念 mysql目前應該是只支援水平分割槽,一般的水平分割槽如果是表,則相當於原來儲存在乙個檔案的表分為多個檔案 應用場景 二 分割槽型別 列表分割槽 列分割雜湊分割槽 key分割槽 子分割槽mysql分割槽如何處理null 三 分割槽管理 四 分割槽修剪 五 分割槽的限制 與儲存引擎相關...

MySQL 5 6分割槽表 入門例子講解

分割槽表是一種粗粒度,簡易的索引策略,適用於大資料的過濾場景.最適合的場景是,沒有合適的索引時,對其中幾個分割槽表進行全表掃瞄.或者只有乙個分割槽表和索引是熱點,而且這個分割槽和索引能夠全部儲存在記憶體中.限制單錶分割槽數不要超過150個,並且注意某些導致無法做分割槽過濾的細節,分割槽表對於單條記錄...