mysql引擎机制_有关MyISAM引擎的锁定机制

本节内容:

MyISAM引擎的锁定机制

在mysql数据库中,MyISAM存储引擎适合于读频率远大于写频率这一情况。

目前的应用可能会出现在某一时段读写频率相当。

大致如下:

一个客户端发出需要长时间运行的SELECT

其他客户端在同一个表上发出INSERT或者UPDATE,这个客户将等待SELECT完成

另一个客户在同一个表上发出另一个SELECT;因UPDATE或INSERT比SELECT有更高有优先级,该SELECT将等待UPDATE或INSERT完成,也将等待第一个SELECT完成

也就是说对MyISAM表的读操作,不会阻塞其他用户对同一表的读请求,但会阻塞对同一表的写请求;对 MyISAM表的写操作,则会阻塞其他用户对同一表的读和写操作

;MyISAM表的读操作与写操作之间,以及写操作之间是串行的!

解决方案:

MyISAM存储引擎有一个系统变量concurrent_insert,专门用以控制其并发插入的行为,其值分别可以为0、1或2。

0 不允许并发操作

1 如果MyISAM表中没有空洞(即表的中间没有被删除的行),MyISAM允许在一个进程读表的同时,另一个进程从表尾插入记录。这也是MySQL的默认设置。

2 无论MyISAM表中有没有空洞,都允许在表尾并发插入记录

使用--low-priority-updates启用mysqld。这将给所有更新(修改)一个表的语句以比SELECT语句低的优先级。在这种情况下,在先前情形的最后的SELECT语句将在INSERT语句

前执行。

为max_write_lock_count设置一个低值,使得在一定数量的WRITE锁定后,给出READ锁定

使用LOW_PRIORITY属性给于一个特定的INSERT,UPDATE或DELETE较低的优先级

使用HIGH_PRIORITY属性给于一个特定的SELECT

使用INSERT DELAYED语句

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值