myisam表锁及锁粒度调节
发布日期:2021-08-30 20:31:04 浏览次数:2 分类:技术文章

本文共 773 字,大约阅读时间需要 2 分钟。

myisam支持表锁,对表的读写是串行执行的,在一定条件下,Myisam表也支持查询和插入操作的并发执行。

Myisam存储引擎有一个系统变量concurrent_insert,专门用以控制其并发插入的行为,其值分别可以为0、1、2
当concurrent_insert为0时,不允许并发插入
当concurrent_insert为1时,若Myisam表中没有空洞(即表的中间没有被删除的行),Myisam允许在一个进程读表的同时,
另一个进程从表尾插入记录,这也是Myisam的默认设置。
当concurrent_insert为2时候,无论Myisam表是否有空洞,都允许在表尾并发插入记录。
Myisam存储引擎的读锁和写锁是互斥的,读写操作是串行的,那么一个进程请求某个Myisam表的读锁,同时另外一个进程也请求同一表
的写锁,MySql会先处理写锁。不仅如此,即使读请求写到锁等待队列,写请求后到,写锁也会查到读锁之前。这是Mysql通常认为写请求
比较重要的原因。因此大量的写请求会阻塞查询操作,从而导致永久阻塞,这也是Myisam为什么不适合高并发的一个原因吧~
Mysql也提供一种折中的办法来调节读写冲突,即给系统参数max_write_lock_count设置一个合理的值。

Myisam锁粒度调节:

1、通过指定启动参数low-priority-updates,使Myiasm引擎默认给予读请求以优先的权利。

2、通过执行命令SET LOW_PRIORITY_UPDATES=1,使该连接发出的更新请求优先级降低。

3、通过指定insert,update,delete语句的LOW_PRIORITY属性,降低语句的优先级。

转载于:https://www.cnblogs.com/liufofu/p/4141975.html

转载地址:https://blog.csdn.net/weixin_34050005/article/details/94037556 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【2012百度之星资格赛】G:聊天就是Repeat
下一篇:CSRF 1 (转)

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年04月15日 16时34分52秒