MySQL性能瓶颈诊断中常用的系统命令和工具有哪些?

通过阅读上周有关诊断 MySQL 性能的文章,我学到了很多东西。

顶部/htop 查看信息于 2 02 3 年 3 月 1 5 日。
CPU负载>8 0%?那么你可能需要优化查询。
有多少内存交换?检查innodb_buffer_pool_size是否太小。

iostat 测试日期:2 02 3 年 3 月 1 6 日 等待 >1 0ms 有点不可靠。
尝试将日志文件放在不同的驱动器上?
vmstat 使用日期:2 02 3 年 3 月 1 7 日 所以 >0 意味着内存变化。
高bi/bo?是不是索引有问题?
SAR 用于2 02 3 年3 月1 8 日的回顾性分析。
每天运行一次 crontab 是很好的。

网络统计 检查连接超时问题 2 02 3 年 3 月 1 9 日 TIME_WAIT 时间长吗?配置内核参数。

mpstat 2 02 3 年 3 月 2 0 日 · 看看多核处理器。
一个核心是否满负荷运行?检查请求是否并行。

只是想点别的事 事实上,我已经看完了观察。
显示进程列表 检查 SQL 执行情况 查看慢查询日志 将这三件事放在一起考虑是安全的。

忘记它吧

数据管理系统mysql缺点

设置很复杂。
有很多参数。
很难调准。
版本升级陷阱。
非结构化数据速度很慢。
结构化设计。
BLOB 效率低下。
NoSQL 有很大的优势。
并发写瓶颈。
单主限制。
分离增加了复杂性。
锁定机制影响吞吐量。
业务需求决定选择。

MySQL大数据量查询:一次读取一万条记录会带来哪些性能问题?

记得上次帮朋友调试电商后端时,他写了SQL直接验证所有订单。
结果,用户一打开页面就崩溃了,鼠标箭头变成了旋转的圆圈。
等了五分钟,看到几十条订单信息,他骂道。

后来发现该表包含2 0万条数据,其使用的查询是SELECTFROMorders,没有添加任何条件。
我让他改用LIMIT5 0,但他还是不敢相信,说:“我没有大量数据。
”更改结果后,页面立刻变得流畅了。

等等,还有别的事。
我注意到在他的表中,订单ID是自动递增的,但是他在分页时使用了LIMIT0,5 0和LIMIT5 0,5 0,并且每次都必须从头开始计算。
后来我教他如何使用WHEREid>last_id LIMIT5 0,这样数据库就可以直接从最后一个id继续查询,效率更高。

突然想到一些旧的项目代码特别恶心。
分页逻辑使用变量来计算LIMIT值,每次都要扫描整个表。
更神奇的是使用SELECTFROMordersLIMIT5 0000,5 0,相当于一次扫描5 0,000个项目,然后跳过5 0,000个项目,然后获取5 0个项目。

项目现在使用Redis来缓存ID,每次迁移都直接取之前的最大ID,比原来的MySQL迁移快了好几倍。
但Redis的内存也比较紧张。
如果数据量比较大怎么办?