- 架构
SQL----------> 进入 connecton pool
----------> 进入SQLInterface模块,判断是DDL还是DML
-----------> 进入Parse模块,进行语法判断
----------> 进入Optimizer模块进行优化
----------> 进入Cache模块,判断是否有缓存
----------> 进入文件系统读写数据
- 主从
- 慢日志
- 锁
- 存储引擎
– MyISAM:使用的表级锁,不支持事务
– InnoDB:
使用的行级锁
支持事务
高并发性能好。
支持外键 自动容灾恢复 支持自动增加列
- sql
常用sql语句
explain分析sql执行计划
慢查询和索引 - 索引
索引失效的几种情况
- 索引列使用函数
- 对索引列进行计算
- like查询以%开头
- != not in not exist
- or ,要想使用or,又想让索引生效,只能将or条件中的每个列都加上索引
索引最左匹配原则
- mysql常用工具
– mysqlreport 【全局分析大概性能位置】
- 执行场景前后report数据对比
- 执行场景前要先执行以下命令进行清理工作
FLUSH QUERY CACHE; – 清理查询缓存内存碎片。
RESET QUERY CACHE; – 从查询缓存中移出所有查询。
FLUSH TABLES; – 关闭所有打开的表,同时该操作将会清空查询缓存中的内容。
flush status; – 重置大多数状态变量到0。
mysqldumpslow
profiling 【剖析SQL: 分析SQL慢的原因】
explain 【分析SQL里索引的使用情况】
- 性能分析常用sql
>>>>>>全局参数
#查看所有参数
SHOW GLOBAL VARIABLES;
#查看所有状态值
SHOW GLOBAL status;
>>>>>>> 查看某个参数的值
show VARIABLES like 'xx';
-- max_connections
-- long_query_time #慢查询时间
-- slow_query_log #慢查询日志
-- slow_query_log_file #慢查询文件
-- Slow_queries #慢查询的记录数
-- table_open_cache #表缓存大小
>>>>>>> 性能分析中常用的
#查看运行中的所有事务
select * from information_schema.INNODB_TRX;
#表解析
analyze table;
#查看表的索引
show index from table;
#查看正在运行中的线程
show processlist;
原语句为: (select * from information_schema.processlist)
>>>> 存储引擎部分
#查看当前MySQL支持的存储引擎列表
SHOW ENGINES;
#查看所有表的存储引擎
SHOW TABLE STATUS FROM `sunlands-lite-panda`;
#查看指定表的存储引擎
SHOW TABLE STATUS FROM `sunlands-lite-panda` WHERE NAME='lite_question';
- mysql监控
– mysql_exporter