好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

mysql锁机制详解及死锁处理方式

还是没有从根本上同时解决查询和更新的问题。 在一个有大数据量高并发表的mysql里,我们还可采用另一种策略来进行优化,那就是通过mysql主从(读写)分离来实现负载均衡,这样可避免优先哪一种操作从而可能导致另一种操作的堵塞。下面将用一个篇幅来说明mysql的读写分离技术。


MyISAM使用的是 flock 类的函数,直接就是对整个文件进行锁定(叫做文件锁定),InnoDB使用的是 fcntl 类的函数,可以对文件中局部数据进行锁定(叫做行锁定),所以区别就是在这里。
另外MyISAM的数据表是按照单个文件存储的,可以针对单个表文件进行锁定,但是InnoDB是一整个文件,把索引、数据、结构全部保存在 ibdata 文件里,所以必须用行锁定。

死锁
所谓死锁<DeadLock>: 是指两个或两个以上的进程在执行过程中,
因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.
此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等竺的进程称为死锁进程.
表级锁不会产生死锁.所以解决死锁主要还是真对于最常用的InnoDB.
遇到 死锁 的处理方式

mysql -uxxx -pxxx -h服务器ip --port=服务器端口; (如果服务器设置了ip和端口访问的话,一定要带 ip 和端口)

mysql> show processlist; # 查看正在执行的 sql ( show full processlist;查看全部sql )

mysql> kill id # 杀死 sql 进程;

如果进程太多找不到,就重启mysql吧

/ect/init.d/mysql restart 

或 /ect/init.d/mysql stop(如果关不掉就直接kill -9 进程id)  再 /ect/init.d/mysql start 

去看看mysql日志文件是否保存死锁日志:

常用目录: /var/log/mysqld.log;(该目录还有其它相关日志文件就都看看)

怎么解决还是要看具体什么问题.




mysql锁机制详解及死锁处理方式

标签:mysql锁机制详解   死锁处理方式   

查看更多关于mysql锁机制详解及死锁处理方式的详细内容...

  阅读:42次

上一篇: 执行Sql块

下一篇:MySQL备份方式简介