MySQL 锁定方法

2009-05-13 10:35:45来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折


               
                MySQL 5.1支持对MyISAM和MEMORY表进行表级锁定,对BDB表进行页级锁定,对InnoDB表进行行级锁定。
               
                在许多情况下,可以根据培训猜测应用程序使用哪类锁定类型最好,但一般很难说出某个给出的锁类型就比另一个好。一切取决于应用程序,应用程序的不同部分可能需要不同的锁类型。
               
                为了确定是否想要使用行级锁定的存储引擎,应看看应用程序做什么并且混合使用什么样的选择和更新语句。例如,大多数Web应用程序执行许多选择,而很少进行删除,只对关键字的值进行更新,并且只插入少量具体的表。基本MySQL
               
                MyISAM设置已经调节得很好。
               
                在MySQL中对于使用表级锁定的存储引擎,表锁定时不会死锁的。这通过总是在一个查询开始时立即请求所有必要的锁定并且总是以同样的顺序锁定表来管理。
               
                对WRITE,MySQL使用的表锁定方法原理如下:
               
                        如果在表上没有锁,在它上面放一个写锁。
                        否则,把锁定请求放在写锁定队列中。
               
                对READ,MySQL使用的锁定方法原理如下:
               
                        如果在表上没有写锁定,把一个读锁定放在它上面。
                        否则,把锁请求放在读锁定队列中。
               
                当一个锁定被释放时,锁定可被写锁定队列中的线程得到,然后是读锁定队列中的线程。
               
                这意味着,如果你在一个表上有许多更新,SELECT语句将等待直到没有更多的更新。
               
                可以通过检查table_locks_waited和table_locks_immediate状态变量来分析系统上的表锁定争夺:
               
mysql> SHOW STATUS LIKE
                'Table%';

               

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Mysql迁移成功

下一篇:freebsd ipfw配置