MySQLInnoDB行锁优化建议
InnoDB存储引擎由于实现了行级锁定,虽然在锁定机制的实现方面所带来的性能损耗可能比表级锁定会更高一些,但是在整体并发处理能力方面要远远优于MyISAM的表级锁定的。当系统并发量比较高的时候,InnoDB的整体性能和MyISAM相比
就会有比较明显的优势了。但是InnoDB的行级锁定同样也有其脆弱的一面,当我们使用不当的时候,可能会让InnoDB的整体性能表现不仅不能比MyISAM高,甚至可能会更差。
要想合理的利用InnoDB的行级锁定,做到扬长避短,我们必须做好以下工作:
(1).尽可能让所有的数据检索都通过索引Index来完成,从而避免InnoDB因为无法通过索引键加锁而升级为表级锁定;
(2).合理设计索引,让InnoDB在索引键上面加锁的时候尽可能准确,尽可能的缩小锁定范围,避免造成不必要的锁定而影响其他查询的执行;
(3).尽可能减少基于范围的数据检索过滤条件,避免因为间隙锁带来的负面影响而锁定了不该锁定的记录;
(4).尽量控制MySQL事务的大小,减小锁定的资源量和锁定的时间长度;
(5).在业务环境允许的情况下,尽量使用较低级别的事务隔离,以减少MySQL因为实现事务隔离级别所带来的附加成本。
分享文章:MySQLInnoDB行锁优化建议
网页链接:http://pwwzsj.com/article/ihpcsc.html
就会有比较明显的优势了。但是InnoDB的行级锁定同样也有其脆弱的一面,当我们使用不当的时候,可能会让InnoDB的整体性能表现不仅不能比MyISAM高,甚至可能会更差。
要想合理的利用InnoDB的行级锁定,做到扬长避短,我们必须做好以下工作:
(1).尽可能让所有的数据检索都通过索引Index来完成,从而避免InnoDB因为无法通过索引键加锁而升级为表级锁定;
(2).合理设计索引,让InnoDB在索引键上面加锁的时候尽可能准确,尽可能的缩小锁定范围,避免造成不必要的锁定而影响其他查询的执行;
(3).尽可能减少基于范围的数据检索过滤条件,避免因为间隙锁带来的负面影响而锁定了不该锁定的记录;
(4).尽量控制MySQL事务的大小,减小锁定的资源量和锁定的时间长度;
(5).在业务环境允许的情况下,尽量使用较低级别的事务隔离,以减少MySQL因为实现事务隔离级别所带来的附加成本。
分享文章:MySQLInnoDB行锁优化建议
网页链接:http://pwwzsj.com/article/ihpcsc.html