大牛总结的MySQL锁优化【转】
MySQL 就是其中之一,它经历了多个版本迭代。数据库锁是 MySQL 数据引擎的一部分,今天我们就一起来学习 MySQL 的数据库锁和它的优化。 MySQL 锁分类 当多个事务或者进程访问同一个资源的时候,为了保证数据的一致性,就需要用到锁机制。 从锁定资源的角度来看,MySQL 中的锁分为: 表级锁 行级锁 页面锁 表级锁:对整张表加锁。开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。 行级锁:对某行记录加锁。开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。 页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。 在实际开发过程中,主要会使用到表级锁和行级锁两种。既然锁是针对资源的,那么这些资源就是数据,在 MySQL 提供插件式存储引擎对数据进行存储。 插件式存储引擎的好处是,开发人员可以根据需要选择适合的存储引擎。 在众多的存储引擎中,有两种引擎被比较多的使用,他们分别是: MyISAM 存储引擎,它不支持事务、表锁设计,支持全文索引,主要面向一些在线分析处理(OLAP)数据库应用。说白了主要就是查询数据,对数据的插入,更新操作比较少。 InnoDB 存储引擎,它支持事务,其设计目标主要面向在线事务处理(OLTP)的应用。 其特点是行锁设计、支持外键,并支持类似于 Oracle