一、命令操作查询命令
查看数据库连接信息:show global status like 'Thread%'
非交互式超时时间(jdbc):show global variables like 'wait_timeout'
交互式超时时间(数据库连接工具):show global variables like 'interactive_timeout'
数据目录:show variables like 'datadir'
查看引擎服务状态:show engine innodb status;
innodb存储引擎日志信息:show variables like 'innodb_log%'
undo log信息:show variables like '%undo%'
buffer pool信息:show variables like '%innodb_buffer_pool%'
25表示25%,占buffer pool的比例,写多读少、大部分是非唯一索引可调大
show variables like 'innodb_change_buffer_max_size'
show variables like 'innodb_flush_log_at_trx_commit'
查询列散列度:select count(distinct(列名))/count(*) from 表名
查询数据库表的数据量与索引量大小
select
concat(round(sum(data_length/1024/1024),2),'MB') AS data_len,
concat(round(sum(index_length/1024/1024),2),'MB') AS index_len
from infomation.schema.tables
where table_schema='数据库名' and table_name='表名'
显示服务端线程情况
mysql>show full processlist
mysql>show blobal status;
mysql>show blobal status like 'com_select'
默认最大连接数151:show variables like 'max_connections'
客户端的未活跃连接超时时间:show variables like 'wait_timeout'
查看慢查询信息:show variables like 'slow_query%'
2. 操作命令
set variables key=''默认是会话级别
set global variables key=''设置全局级别
set optimizer_switch='index_confition_pushdown=on'默认开启索引条件下推
set @@global.slow_query_log=1 开启慢查询日志
二、优化总结分析性能指标
查看服务端线程情况
服务连接数
增加服务端可用连接数
减少客户端使用连接数
是否使用连接池
客户端的未活跃连接超时时间设置
是否监控慢查询日志
使用explain查看执行计划
2. 优化层面
sql和索引的优化
表结构字段长度与存储引擎的优化
架构优化
操作系统、mysql配置参数
硬件
3. 实现方案
服务降级
服务分流
按月查询
数据时间维度拆分
横向拆分宽表
参考减少请求来设计表结构
字段冗余
字段长度合理设置
设置缓存