跳至主要內容
Mysql CPU负载过高

问题

某天突然收到预警邮件,服务器CPU超过阈值,并且一直持续居高不下

分析原因

  1. 使用htop查看资源消耗,按照CPU使用率降序排列,发现都是mysqld进程占用CPU很高
  2. 进入mysql命令行使用show processlist;查看当前正在执行的命令,经过多次执行show processlist发现有几条固定的sql一直在执行,并且每次传递的参数害不一样

chenkun大约 2 分钟数据库
联合查询sql优化

背景:

最近在改一个老项目,其中使用到框架是mybatis,有一个业务表install_record,代表装机记录,一个accessory代表备件表,一个sys_file代表文件表,业务关系是一个install_record对应多个accessory、以及多个sys_file,在一开始使用的是mybatis的嵌套查询的方式,但此方式有N+1的问题,比如一个装机表对应10个accessory、20个sys_file,则就要查询1+10+20 = 31次数据库,效率是很低的,因此想改成嵌套查询的方式。


chenkun大约 1 分钟数据库
2022-04-02

背景:

我有一个库A,这个库同时被两个服务使用(serviceA、serviceB),某天,因serviceA业务需要,必须更改数据库结构,导致serviceB无法使用,但是serviceB又不能停机,所以就考虑把数据库克隆一份给serviceB使用。在克隆使用的是mysqldump直接导出,然后再新建另一个库B,在库B导入sql,结果就悲剧了。

1、库A导出

# 在服务器把写了个定时备份脚本,这个databaseA是未更新前备份的库
mysqldump -h localhost -uroot -p123456 databaseA>databaseA.sql

chenkun大约 1 分钟数据库数据库