性能优化思路
- 首先需要使用【慢查询日志】功能,去获取所有查询时间比较长的SQL语句
- 查看执行计划,查看有问题的SQL的执行计划
- 针对查询慢的SQL语句进行优化
- 使用【show profile[s]】 查看有问题的SQL的性能使用情况
- 调整操作系统参数优化
- 升级服务器硬件
mysql慢查询日志
开启慢查询功能
查看是否开启慢查询功能
show variables like '%slow_query%';
image.png
查看慢查询阈值(默认10秒)
show variables like '%long_query_time%';
image.png
开启慢查询
set global slow_query_log = ON;
设置慢查询阈值
set global long_query_time = 1;
分析慢查询日志的工具
mysqldumpslow工具使用
https://www.javacui.com/DB/542.html
查看执行计划
示例:
列名 | 用途 |
---|---|
id: | SELECT 查询的标识符. 每个 SELECT 都会自动分配一个唯一的标识符.,id越大,优先级越高 |
select_type: | SELECT 查询的类型. |
table: | 查询的是哪个表 |
partitions: | 匹配的分区 |
type: | 访问类型,system、const、eq_ref、ref、fulltext、ref_or_null、unique_subquery、index_subquery、range、index_merge、index、ALL。访问性能依次从好到差 |
possible_keys: | 此次查询中可能选用的索引 |
key: | 此次查询中确切使用到的索引. |
ref: | 哪个字段或常数与 key 一起被使用 |
rows: | 显示此查询一共扫描了多少行. 这个是一个估计值. |
filtered: | 表示此查询条件所过滤的数据的百分比 |
extra: | 额外的信息 |