mysql(5.6)分区(四)分区和锁定
来源:互联网 发布:淘宝产品摄影班 编辑:程序博客网 时间:2024/05/20 06:54
在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 INSERT
或 BEFORE UPDATE
触发器意味着锁定 INSERT
和UPDATE
更新此表的语句不能被修剪,因为触发器可以更改其值:BEFORE INSERT
任何表的分区列上的触发器意味着由INSERT
或 REPLACE
不能设置的锁定被修剪,因为 BEFORE INSERT
触发器可能会在插入行之前更改一行的分区列,从而强制该行进入与其他分区不同的分区。甲 BEFORE UPDATE
上的分区列触发意味着锁所规定UPDATE
或 INSERT ... 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 分区
- mysql(5.6)分区(一)分区键,主键和唯一键
- Oracle表分区分为四种:范围分区,散列分区,列表分区和复合分区
- Oracle表分区分为四种:范围分区,散列分区,列表分区和复合分区
- Oracle表分区分为四种:范围分区,散列分区,列表分区和复合分区
- MySQL hash分区(四)
- Mysql的四种分区
- mysql垂直分区和水平分区
- MySQL的垂直分区和水平分区
- mysql垂直分区和水平分区
- mysql垂直分区和水平分区
- Oracle10g分区和Mysql分区区别
- Mysql垂直分区和水平分区
- MySQL分区--列表分区
- MySQL分区--列分区
- mysql分区和分表
- mysql-索引和分区
- STM8L使用ADC内部参考电压通道测量VDD电压
- 编写优质嵌入式C程序
- 开源协议的区别
- 排序----冒泡,选择,插入,二分查找
- dilated convolution
- mysql(5.6)分区(四)分区和锁定
- CSS+DIV定位分析
- bzoj 1609: [Usaco2008 Feb]Eating Together麻烦的聚餐(DP)
- 你必须知道的261个Java语言问题笔记-Java线程和序列化
- 记录替换django的user模型出现的异常InconsistentMigrationHistory
- Redis哈希
- Thinkphp 调试->调试模式
- java实训第三天7/28
- HDU 6109 百度之星2017 1002 数据分割(并查集+set)