当前位置:网站首页>A slow SQL drags the whole system down
A slow SQL drags the whole system down
2022-07-07 07:02:00 【Your little buddy】
1. Own case
A few days ago, the monitoring probe suddenly gave an alarm , Manually calling the production interface is found to be particularly slow , At ordinary times A The interface that can respond in hundreds of milliseconds in the service becomes 3-5 second , When it is slow, it takes more than ten seconds , Sometimes it just times out .
First, check the related services , Find out A service cpu And memory are normal , The service log is also output normally , Service problems are eliminated , I once thought it was the Internet that fluctuated , No reason found , Restart the service directly , The problem has not been solved .
Until later, someone said whether there was a problem with the database , Then view the database , Sure enough, I found a pile update The statement is stuck waiting for execution , Then take a look at update Of where Conditions , This field has no index , The reason is found , Because the update condition has no index , Lead to update Statements are particularly slow , The business here is batch update , In an instant, a large number of update statements will enter sql, This leads to a large consumption of database resources , Thus affecting the whole service ( This update The sentence is B service , namely B The service is slow sql It takes up a lot of database resources , This causes all other services to respond slower ).
After checking the reason, an index is added to the corresponding field , Then it gets faster , The service gradually recovers stability .( Note that the index is directly added here , At the same time, if this statement continues to enter the database, I think it may lead to locking the table , Because this business is special , Only a few people use , I call them directly to stop using , Then add the index )
Be careful : Slow here sql yes update sentence , I wanted to DBA direct kill Of , But because of update sentence DBA Dare not kill, Say you can only rollback , If it is select sentence , directly kill.
Here I have another idea is , Deactivate the interface first , Prevent a lot of update Statement continues to enter the database , Then add the index , So you can add a switch to the system , Configure whether this interface is enabled , You can start and stop an interface at any time , When something goes wrong with an interface , Just stop , Then seize the time to solve , Then enable the interface .
2. Several similar cases found on the Internet , Make a note of
1. Case study : One slow SQL Drag down the whole system
One day, I suddenly found a crazy alarm on the service detection interface 、 At the same time, the database CPU Consumption also alarm , Finally, the system cannot be accessed ;
At first, I thought there was a problem with the service , After the service is restarted, the phenomenon remains ;
After checking the database, we found , A lot of slow SQL Blocking waiting for execution :
See which tables are locked :show OPEN TABLES where In_use > 0;
Query in progress SQL, Find a lot SQL Execution blocked for hundreds of seconds
select * from information_schema.processlist where db=‘ db_xxx ‘ and info is not null;
The process of directly fetching the index ID, To assemble into kill sentence , Take it out and execute it , Kill the blocking indexing process .
select concat(‘kill ‘, id,‘;‘) from information_schema.processlist where db=‘db_xxx ‘ and info is not null;
Found that after killing once , Soon, a large number of execution blocking SQL, and 90% The above is one SQL.
kill N After that, I still can't , There will still be ......
Implement this article SQL Pick it out , For query criteria , Composite index created ,SQL The blockage disappears ,
The system has also returned to normal .....
Reference resources :MySQL Optimize 5 And CPU Consumption is too high ( One slow SQL Drag down the whole system )
边栏推荐
- Jetpack Compose 远不止是一个UI框架这么简单~
- 算法---比特位计数(Kotlin)
- Master-slave replication principle of MySQL
- How to share the same storage among multiple kubernetes clusters
- How can flinksql calculate the difference between a field before and after update when docking with CDC?
- 精准时空行程流调系统—基于UWB超高精度定位系统
- 2018年江苏省职业院校技能大赛高职组“信息安全管理与评估”赛项任务书第一阶段答案
- 7天零基础能考证HCIA吗?华为认证系统学习路线分享
- Config distributed configuration center
- 2018年江苏省职业院校技能大赛高职组“信息安全管理与评估”赛项任务书
猜你喜欢
Answer to the first stage of the assignment of "information security management and evaluation" of the higher vocational group of the 2018 Jiangsu Vocational College skills competition
Prime partner of Huawei machine test questions
Jetpack compose is much more than a UI framework~
. Net 5 fluentftp connection FTP failure problem: this operation is only allowed using a successfully authenticated context
How to share the same storage among multiple kubernetes clusters
JDBC database connection pool usage problem
LM11丨重构K线构建择时交易策略
Basic introduction of JWT
Anr principle and Practice
main函数在import语句中的特殊行为
随机推荐
Linear algebra (1)
请问 flinksql对接cdc时 如何实现计算某个字段update前后的差异 ?
JDBC database connection pool usage problem
jdbc数据库连接池使用问题
Learning records on July 4, 2022
Libcurl returns curlcode description
企业如何进行数据治理?分享数据治理4个方面的经验总结
Abnova 膜蛋白脂蛋白体技术及类别展示
常用函数detect_image/predict
Take you to brush (niuke.com) C language hundred questions (the first day)
带你刷(牛客网)C语言百题(第一天)
Matlab tips (29) polynomial fitting plotfit
How can gyms improve their competitiveness?
Stack and queue-p79-9
2022/07/04学习记录
多个kubernetes集群如何实现共享同一个存储
从零到一,教你搭建「CLIP 以文搜图」搜索服务(二):5 分钟实现原型
. Net 5 fluentftp connection FTP failure problem: this operation is only allowed using a successfully authenticated context
Lvs+kept (DR mode) learning notes
Bus message bus