mysql 锁机制
Posted ivyharding
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 锁机制相关的知识,希望对你有一定的参考价值。
mysql的锁机制
含义:锁是计算机协调多个进程或线程并发访问某一资源的机制
在数据库中,除了传统的计算资源(如CPU,RAM,I/O等)的争用之外,数据也是一种用户共享的资源。如何保证数据并发访问的一直型、有效性是所有数据库必须解决的问题,锁冲突也是影响数据库并发访问性能的一个重要因素。因而,锁对数据库很重要。
分类
按照操作来分:读/写锁
读锁(共享锁):针对同一份数据,多个读操作可以同时进行而不会相互影响。
写锁(排他锁):当前写操作没有完成前,他会阻断其他写锁和读锁。
#查看表上加着的锁 show open tables; #手动增加表锁 lock table 表名1 read(write), 表名2 read(write),其他; #释放锁 unlock tables; #加了读锁(共享锁)之后 lock table 表1 read; 在加锁的session1中: 1.可以读自己吗? 可以 2.可以修改表的内容吗? 不可以!!!!!!!!!!!!会报错error 3.可以读别人吗? 不可以!!!!!!!!!!! 在另外一个session2中: 1.可以读session1中的读锁表吗? 可以 2.可以修改表的内容吗? 不可以!!!!!!!!!!!!会出现阻塞(一直等待) 3.可以读别人吗? 可以! #加了写锁(排他锁)之后 lock table 表1 write; 在加锁的session1中: 1.可以读自己吗? 可以 2.可以修改表的内容吗? 可以!! 3.可以读别人吗? 不可以!!!!!!!!!!! 在另外一个session2中: 1.可以读session1中的读锁表吗? 不可以,会出现阻塞,需要等待锁被释放 2.可以修改表的内容吗? 不可以!!!!!!!!!!!!会出现阻塞(一直等待) 3.可以读别人吗? 可以!
按照粒度分:表锁/行锁
表锁(偏读)
特点:偏向myisam存储引擎,开销小,加锁快;无死锁;锁定力度大,发生锁冲突概率最高,并发度低。
行锁(偏写):
页锁:
以上是关于mysql 锁机制的主要内容,如果未能解决你的问题,请参考以下文章