犀牛云做网站怎么这么贵,wordpress自动添加内链,宠物美容网站建设的目的,数棋网站建设1 数据库调优维度 业务需求#xff1a;勇敢地对不合理的需求说不系统架构#xff1a;做架构设计的时候#xff0c;应充分考虑业务的实际情况#xff0c;考虑好数据库的各种选择(读写分离?高可用?实例个数?分库分表?用什么数据库?)SQL及索引#xff1a;根据需求编写良…1 数据库调优维度 业务需求勇敢地对不合理的需求说不系统架构做架构设计的时候应充分考虑业务的实际情况考虑好数据库的各种选择(读写分离?高可用?实例个数?分库分表?用什么数据库?)SQL及索引根据需求编写良好的SQL并去创建足够高效的索引表结构设计良好的表结构数据库参数设置设置合理的数据库性能参数(join buffer、sort buffer…)系统配置操作系统提供了各种资源使用策略设置合理的配置以便于数据库充分利用资源(swap应尽可能小 - swappiness)硬件SSD or 机械硬盘
2 查询日志
2.1 所有SQL执行日志
-- 开启查看所有查询日志使用后立即关闭
SET GLOBAL general_log ON;
SET GLOBAL general_log OFF;
-- 查看慢查询日志路径
show variables like %general_log%;2.2 慢查询日志
2.2.1 开启日志
方式一修改配置文件my.cnf在[mysqld]段落中加入如上参数开启需要重启MySQL
# 开启慢查询日志
[mysqld]
slow_query_log ON
log_output FILE,TABLE
long_query_time 2
# 重启MySQL
service mysqld restart方式二通过全局变量设置这种方式无需重启即可生效但一旦重启配置又会丢失
# 开启慢查询日志
set global slow_query_log ON;
# 修改多慢算慢查询的定义long_query_time需要切换session才能生效
set global long_query_time 2;
# 将慢查询日志同时记录到文件以及mysql.slow_log表中
set global log_output FILE,TABLE;2.2.1 查看与分析慢查询日志
-- 查看TABLE中的记录
select * from mysql.slow_log;
-- 查看slow FILE文件查看slow file路径然后查看文本文件
show variables like %slow_query_log_file%;# 分析慢查询日志文件工具mysqldumpslow
mysqldumpslow -s r -t 10 -a /var/lib/mysql/node3-26-slow.log
# 分析慢查询日志文件工具pt-query-digest
pt-query-digest mysql-slow-2022-01-07.log 0107.reportpt-query-digest工具官网
3 SQL性能分析
EXPLAINid越大越先执行相同的id则上面的先执行可视化分析可以使用IDEAExplain planMysqlWorkBenchshow warnings; 用于展示分析结果SHOW PROFILE: 简单、方便已废弃INFORMATION_SCHEMA.PROFILING: 和SHOW PROFILE本质一样PERFORMANCE_SCHEMA: 未来之光但目前来说使用不够方便OPTIMIZER_TRACE跟踪优化器做出的各种决策、了解优化器的执行细节、理解SQL的执行过程进而优化SQL
4 数据库诊断
-- 查看当前正在运行的进程列表
SHOW FULL PROCESSLIST;
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST;-- 按照客户端IP分组,看哪个客户端的连接数最多
select client_ip, count(client_ip) as client_num from (select substring_index ( host, :, 1 ) as client_ip from information_schema.processlist) as connect_info group by client_ip order by client_num desc;
-- 查看正在执行的线程并按time倒排序看看有没有执行时间特别长的线程
select * from information_schema.processlist where command ! sleep order by Time desc limit 10\G
-- 找出所有执行时间超过5分钟的线程拼凑出kill语句方便后面查杀
select concat (kill, id, ;) from information_schema.processlist where Command ! Sleep and Time 300 order by Time desc;-- 查看状态
SHOW STATUS;show global status like %slow%;
SHOW VARIABLES;SHOW VARIABLES like %%;
SHOW TABLE STATUS;
SHOW INDEX FROM EMPLOYEES;
SHOW ENGINE INNODB STATUS\G
SHOW MASTER STATUS;
SHOW SLAVE STATUS;