《深入浅出Mysql》—— 第二十章 锁问题

Posted JasonPeng1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《深入浅出Mysql》—— 第二十章 锁问题相关的知识,希望对你有一定的参考价值。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

在如表 20-3 所示的例子中,一个 session 使用 LOCK TABLE 命令给表 film_text 加了读锁,这 个 session 可以查询锁定表中的记录,但更新或访问其他表都会提示错误;同时,另外一个 session 可以查询表中的记录,但更新就会出现锁等待。 

 

 

 

 

 

 

 

 当使用 LOCK TABLES 时,不仅需要一次锁定用到的所有表,而且,同一个表在 SQL 语句 中出现多少次,就要通过与 SQL 语句中相同的别名锁定多少次,否则也会出错!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 银行转帐就是事务的一个典型例子。 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

应该由JAVA 代码来解决这种情况

 

 

 

 

 

 

 产生并发不一致性问题主要原因是破坏了事务的隔离性,解决方法是通过并发控制来保证隔离性。并发控制可以通过封锁来实现,但是封锁操作需要用户自己控制,相当复杂。数据库管理系统提供了事务的隔离级别,让用户以一种更轻松的方式处理并发一致性问题。

 

 

 

 

 

 

 

 

 可以通过检查 InnoDB_row_lock 状态变量来分析系统上的行锁的争夺情况: 

 

 如果发现锁争用比较严重,如 InnoDB_row_lock_waits和 InnoDB_row_lock_time_avg 的值 比较高,还可以通过设置 InnoDB Monitors 来进一步观察发生锁冲突的表、数据行等,并分 析锁争用的原因

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

        

 

 

 

 

 

 

以上是关于《深入浅出Mysql》—— 第二十章 锁问题的主要内容,如果未能解决你的问题,请参考以下文章

深入理解MySQL的间隙锁

[深入理解Android卷一全文-第十章]深入理解MediaScanner

mysql深入理解全局锁和表锁解决MDL锁和死锁问题

mysql深入理解全局锁和表锁解决MDL锁和死锁问题

深入浅出第十章 R转python

深入浅出MySQL事务处理和锁机制