数据库的锁机制
1.为了保证数据的一致完整性。锁机制的优劣直接 影响到一个数据库系统的并发处理和能力,所以锁机制的实现也就成为了各种数据库的核心技术之一。
2.Mysql格引擎使用了三种类型(级别)的锁定机制:行级锁定,页级锁定和表级锁定。
3.行级锁定(row-level)
行级锁定的最大的特定就是锁定对象的颗粒度很小,也是目前各大数据库管理软件所实现的锁定颗粒度最小的。由于锁定颗粒度很小,所以发生锁定资源争用的概率也最小,能够给予应用程序尽可能大的并发处理能力而提高一些需要高并发应用系统的整体性能
表级锁定(table-page)
和行级锁定相反,表级锁定是mysql各存储引擎中最大颗粒度的锁定机制。该锁定机制最大的特点即使实现逻辑非常简单,带来的系统负面影响最小。所以获取锁和释放锁的速度很快。由于表级锁会将整个表锁定。所以可以很好的避免死多问题
当然,锁定颗粒度大所带来最大的负面影响就是出现锁定资源争用的概率也会最高,致使并发度大打折扣。
页级锁定(page-level)
页级锁定是mysql中比较独特的一种锁定级别,在其他数据库管理软件中也并不是太常见。页级锁定的特点是锁定颗粒度介于行级锁定与表级锁定之间,所以获取锁定所需要的资源开销,以及所能提供的并发处理能力也同样是介于上面二者之间。另外,页级锁定和行级锁定一样,会发生死锁。
总的来说,MySQL这3种锁的特性可大致归纳如下:
表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低;
行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高;
页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。
适用:从锁的角度来说,表级锁更适合于以查询为主,只有少量按索引条件更新数据的应用,如Web应用;而行级锁则更适合于有大量按索引条件并发更新少量不同数据,同时又有并发查询的应用,如一些在线事务处理(OLTP)系统。
4.在mysql数据库中,使用表级锁定的主要