要了解一个数据库,锁是必不可少的知识点,那么什么是锁呢?我们接下来逐步进行了解。
 
首先要记住,锁是计算机协调多个进程或线程并发访问某一资源的机制。
数据是一种供许多用户共享的资源,如果保证数据并发访问的一致性/有效性是所有数据库必须要解决的问题,锁随之诞生。但是锁也存在锁冲突的问题,而且锁冲突也是影响数据库性能的一个重要因素。
 
mysql的锁机制还有个特点,不同的存储引擎,支持不同的锁机制。比如,MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking);BDB存储引擎采用的是页面锁(page-level-locking),但也支持表级锁;InnoDB存储引擎及支持行级锁(row-loevel-locking)也支持表级锁,默认情况采用的是行级锁。
 
 
mysql这3种锁的特性:
表级锁:开销少,加锁快;不会出现死锁,锁定粒度大,发生锁冲突的概率最高,并发最低。最佳适用于查询为主和按少量索引更新数据的场景。
行级锁:开销大,加锁慢;会出现死锁,锁定粒度笑,发生锁冲突的概率最低,并发也最高。
页面锁:开销和加锁的时间介于表级锁和行级锁之间;会出现死锁,锁冲突概率和并发也介于前两者之间。
 
 
 
  X IX S IS
X Conflict Conflict Conflict Conflict
IX Conflict Compatible Conflict Compatible
S Conflict Conflict Compatible Compatible
IS Conflict Compatible Compatible Compatible
分类: mysql

guolin

guolin

相信世界,向往美好,记录成长过程,分享个人心得,充实平凡生活。 网站信条:因为喜欢,所以热爱。

发表评论

电子邮件地址不会被公开。 必填项已用*标注