美文网首页
(105)mysql优化之MyISAM表锁

(105)mysql优化之MyISAM表锁

作者: 林湾村龙猫 | 来源:发表于2016-01-21 00:53 被阅读275次

概述

MyISAM存储引擎只支持表锁,mysql的表锁有两种模式:读锁和写锁。他们的兼容关系是(对myisam的读操作,不会阻塞其他用户对同一表的读请求,但会阻塞对同一表的写操作*)和(对myisam的写操作,则会阻塞其他用户对同一表的读和写操作),读写操作是串行的。

如何加表锁

MyISAM在执行查询语句(select)前,会自动给涉及的所有表加上读锁。在执行更新操作(update,delete,insert等)前,会自动给涉及的表加上写锁,这个过程不需要用户干预。如果要显示加锁,参见链接:
http://blog.csdn.net/pursuing0my0dream/article/details/45166975
说明:

  • lock tables 加上‘local’选项,其作用就是在满足MyISAM表并发插入条件下,允许其他用户在表尾并发的插入记录。
  • 在lock tables 给表显式加表锁时候,必须同时取得所有涉及表的锁,并且MySQL不支持锁升级。即在执行lock tables后,只能访问显式加锁的这些表,不能访问未加锁的表。MyISAM总是一次获取sql语句所需要的全部锁。这就是MyISAM表不会出现死锁的原因。
  • 当使用lock tables时,不仅需要一次锁定用到的表,而且,同一个表在sql语句中出现多少次,就要在相同的别名中锁定多少次。

并发插入

在一定的条件下,MyISAM表支持查询和插入并发执行。MyISAm有一个系统变量concurrent_insert,用来专门控制其并发行为的。0-不允许插入;1-如果表没有空洞,允许在表尾插入记录,这是mysql默认设置;2-无论是否有空洞,都允许在表尾插入记录。

锁调度

myISAM的读锁和写锁是互斥的,读写串行的。那么,在一个进程请求某个MyISAM表的锁的时候,同时另一个进程也请求同一表的写锁。MySQL如何处理?结果是先写进程后读进程。这是应为mysql认为写请求一般比读请求重要。我们可以通过一些设置来改变锁处理先后顺序:

  • 通过启动参数low-priority-updates,使MyISAM引擎默认给予读侵权以优先权利。
  • 通过set low_priority_updates=1,使该连接发出的更新请求优先级降低。
  • 通过指定insert,update,delete语句的low_priority属性,降低该语句的优先级。
  • 还可以设置max_write_lock_count。当表的读锁到这个值的时候,mysql就暂时将写请求的优先级降低,给读进程一个获得锁的机会。

相关文章

  • (105)mysql优化之MyISAM表锁

    概述 MyISAM存储引擎只支持表锁,mysql的表锁有两种模式:读锁和写锁。他们的兼容关系是(对myisam的读...

  • Mysql 锁详解

    Mysql 锁详解一、前言二、MyISAM2.1 MyISAM表锁2.2 查询表级锁争用情况2.3 MySQL表级...

  • MySQL的锁机制

    mysql的锁机制 1、MySQL锁的基本介绍 MyISAM:MySQL的表级锁有两种模式:表共享读锁(Table...

  • MySQL引擎特点

    MyISAM存储引擎 表锁MyISAM表有表级锁。注意不要让它成为瓶颈。 不支持自动数据恢复如果MySQL服务器崩...

  • MySQL 锁之二——表锁

    1、概述 MySQL 表级锁是以单个表为粒度的锁,InnoDB 和 MyISAM 引擎都支持表级锁; 2、表锁分类...

  • 总结Mysql中的锁

    MySQL中的锁 概述 MyISAM支持表锁,InnoDB支持表锁和行锁,默认为行锁 表级锁:开销小,加锁快,不会...

  • MySQL死锁及解决方案

    1 MySQL锁类型 1. MySQL常用存储引擎的锁机制 MyISAM和MEMORY采用表级锁(table-le...

  • MySQL知识点

    Mysql中有哪几种锁? MyISAM支持表锁,InnoDB支持表锁和行锁,默认为行锁 表级锁:开销小,加锁快,不...

  • mysql for update 总结

    MySQL中select * for update锁表的问题 页级:引擎 BDB。 表级:引擎 MyISAM , ...

  • InnoDB引擎的行锁和表锁

    在Mysql中,Innodb数据引擎支持行锁和表锁,Myisam数据引擎只支持表锁 1 行锁和表锁 行锁是通过索引...

网友评论

      本文标题:(105)mysql优化之MyISAM表锁

      本文链接:https://www.haomeiwen.com/subject/igylkttx.html