美文网首页
MySQL一次锁表及filesort优化

MySQL一次锁表及filesort优化

作者: 只是甲 | 来源:发表于2021-12-22 14:36 被阅读0次

一. 问题描述

朋友的数据库应用最近反馈比较慢。

他的需求是首先获取表的一行数据,为了避免并发的冲突,先锁定,然后再更新数据的状态。

二. 解决方案

锁定语句

SELECT id,col1
FROM tab_name
WHERE status=0 and isread=0  and id >=501 
ORDER BY col2 LIMIT 1 FOR UPDATE;

这个语句的需求是更新前把行锁住,避免丢失更新或重复更新。

那么问题来了,status和isread两列都没索引,导致这个语句是全表锁,并发高的情况下,获取全表锁的资源开销就真的太大了。

观察了数据的分布后,给status列创建了索引,表锁变为行锁。

最后观察两天日志,问题依旧。

查下执行计划:
原来是根据col2列排序导致的,和朋友确认了下,可以根据id进行排序,直接在索引上就完成了排序,问题最终解决。

image.png

相关文章

  • MySQL一次锁表及filesort优化

    一. 问题描述 朋友的数据库应用最近反馈比较慢。 他的需求是首先获取表的一行数据,为了避免并发的冲突,先锁定,然后...

  • 七、Mysql优化

    groupBy优化——filesort 联表优化——NLJ和BNL 索引查询优化——ICP

  • MySQL filesort原理及优化

    微信公众号:云计算通俗讲义 持续输出技术干货,欢迎关注! 01概述 在MySQL中的ORDER BY有两种排序实现...

  • MS汇总

    数据库相关[MS-关于锁(乐观锁,悲观锁,行锁、表锁,共享锁,排他锁)Mysql索引优化Mysql查询优化Mysq...

  • MySQL索引优化分析

    MySQL索引优化分析 - 云+社区 - 腾讯云 MySQL · 答疑释惑· using filesort VS ...

  • SQL慢查询优化建议(二)

    use temporary,use filesort优化建议: use temporary:需要用临时表存储结果集...

  • Mysql 相关

    MySQL索引 MySQL索引背后的数据结构及算法原理 覆盖索引和回表操作 MySQL性能优化 MySql表分区详...

  • order by优化,避免filesort

    filesort 当我们在MySQL执行计划中,遇到了Using filesort,这就证明MySQL在执行这条语...

  • 千万级MySQL数据库建立索引,提高性能的秘诀

    实践中如何优化MySQL 实践中,MySQL的优化主要涉及SQL语句及索引的优化、数据表结构的优化、系统配置的优化...

  • MySQL锁篇

    1 MySQL锁介绍 2 MySQL表级锁 2.1 表级锁介绍 ​ 表级锁由SQL layer实现。M...

网友评论

      本文标题:MySQL一次锁表及filesort优化

      本文链接:https://www.haomeiwen.com/subject/jnvvfrtx.html