Mysql数据库锁定机制

总的来说,Mysql各存储引擎使用了三种类型的锁定机制:行锁定,页级锁定和表级锁定。下面我们简要进行分析这三种锁定的特点和各自的优劣。

Mysql锁定简介


行级锁定(row-level

行级锁定最大的特点就是锁定对象的颗粒度很小,也是目前个大数据库管理软件实现锁定颗粒最小的,由于锁定颗粒度很小,所以发生锁定资源争用的概率也最小。尽最大可能的并发处理能力提高一些需要高并发应用的整体性能。 

表级锁定(table-level)

   和行级锁定相反,表级别的锁定是mysql各存储引擎中最大颗粒度的锁定机制。特点是实现逻辑非常简单,带来系统负面影响最小。所获取锁和释放锁的速度很快。由于表锁定会将这个表锁定,所以可以很好的避免困扰我们的死锁问题。

 

页级锁定(page-level

 页级锁定是mysql中比较独特的一种锁定级别,在其他数据库管理软件中也并不是很常见。特点是锁定力度在行和表之间。

 

各种锁定机制

 

表级锁定

Myssql表级锁定主要分为两种类型,一种是读锁定,另一种是写锁定。

行锁定

行锁定不是mysql自己实现的锁定方式,由其他存储引擎自己实现。


 

MyISam表锁定优化


1缩短锁定时间

  缩短锁定之间,听起来很容易,实际上做起来并不简单。唯一的办法就是让我们的query执行时间尽可能的短

  1. 尽量减少大的复杂query,见复杂query分拆成几个小的query分布进行
  2. 尽可能的建立足够高校的索引,让数据检索更迅速
  3. 尽量让myisam存储引擎的表只存放必要信息,控制字段类型
  4. 利用合适的机会优化myisam表数据文件

2分离能并行的操作


    读写互相阻塞的表锁,可能认为是不能并行化了。但是MyISam存储还有一个非常有用的特性,就是并发插入的(Concurrent Insert)

可以开启纵隔参数选项,有三个参赛,0,1212是支持并发插的

 

Innodb行锁优化

 要想合理利用Innodb行锁定,做到扬长避短,必须做好以下工作

 

a)尽可能的让所有的数据检索都通过索引来完成,从而避免innodb因为无法通过索引键加锁而升级为表锁定

b)尽可能的减少基于范围的数据检索过滤条件,避免因为间隙锁带来负面影响

c)尽量控制事务的大小,减少锁定资源量和锁定时间长度

d)尽量使用较低级别事务隔离度,减少因为事务隔离级别所带来的附加成本。


小结:


以上为简单介绍myslq的锁定,分析mysql中使用广泛的锁定方式。认识如何避免和优化锁。

 

 

你可能感兴趣的:(mysql)