您当前的位置: 首页 > 数据库教程 > MySQL教程 > 关于mysql中的表锁和表死锁问题

关于mysql中的表锁和表死锁问题

作者:不详 来源:网络 发布时间: 2011-10-28 15:42 点击:
以下是一些总结.引用了一些网络上的经验 MyISAM和MEMORY存储引擎采用的是表级锁table-level locking BDB存储引擎采用的是页面锁page-level locking,但也支持表级锁 InnoDB存储引擎既支持行级锁row-level locking,也支持表级锁,但默认情况下是采用行级锁 表级锁开销小,

关于mysql中的表锁和表死锁问题

  以下是一些总结.引用了一些网络上的经验
  
  MyISAM和MEMORY存储引擎采用的是表级锁table-level locking
  
  BDB存储引擎采用的是页面锁page-level locking,但也支持表级锁
  
  InnoDB存储引擎既支持行级锁row-level locking,也支持表级锁,但默认情况下是采用行级锁
  
  表级锁开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低
  
  行级锁开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高
  
  页面锁开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般
  
  仅从锁的角度来说:
  
  表级锁更适合于以查询为主,只有少量按索引条件更新数据的应用,如Web应用
  
  行级锁则更适合于有大量按索引条件并发更新少量不同数据,同时又有并发查询的应用,如一些在线事务处理系统
  
  死锁:
  
  所谓死锁<DeadLock>:是指两个或两个以上的进程在执行过程中,
  
  因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.
  
  此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等竺的进程称为死锁进程.
  
  表级锁不会产生死锁.所以解决死锁主要还是真对于最常用的InnoDB.
  
  在遇到问题时,
  
  先执行show processlist找到死锁线程号.然后KillprocessNo
  
  当然主要解决还是需要去看一下,哪些具体的操作可能产生死锁
  
  Show innodb status检查引擎状态,可以看到哪些语句产生死锁

分享到:
本文"关于mysql中的表锁和表死锁问题"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(1)
100%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4