数据库优化专题—1、表的主键用数字还是UUID
数据库优化专题—2、逻辑删除还是物理删除
数据库优化专题—3、千万记录如何快速分页
数据库优化专题—4、读多写少和读多写多
数据库优化专题—5、删改数据如何避免锁表
数据库优化专题—6、如何避免偷换交易中的商品信息
数据库优化专题—7、SQL语句优化
数据库优化专题—8、Mysql参数优化
数据库优化专题—9、索引优化
数据库优化专题—10、存储优化
数据库优化专题—11、数据库结构优化


数据库进行删改操作时,可能出现锁表情况,那如何避免锁表情况呢?这节给大家介绍下。

什么是锁机制

  • InnoDB采用的是行级锁,删改数据的时候,Mysql会锁住记录;

共享锁和排它锁

  • 行级锁分为共享锁(S锁)和排它锁(X锁);
  • 共享锁和排它锁,都不允许其他事务执行写操作,但是可以读数据;
  • 排它锁不允许对数据再另外加锁;

共享锁

  • 只有serializable事务隔离级别,才会给数据读取添加共享锁;
SELECT ...... FROM ...... LOCK IN SHARE MODE;
  • 添加了共享锁,其他事务只能读取加锁数据,而不能修改和删除;

排它锁

  • MySQL默认会给添加、修改和删除记录,设置排它锁;
SELECT ...... FROM ...... FOR UPDATE;
  • 排它锁不允许对数据再添加其他锁;

如何减少并发操作的锁冲突

  • 把复杂的SQL语句,拆分成多条简单的SQL语句;

总结

  • 优化SQL语句,拆分SQL,减少数据锁表时间。
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐