16. mysql的性能优化
- 从设计方面 选择合适的存储引擎 , 合适的字段类型 , 遵循范式(反范式设计)
- 存储引擎 : 不需要事务, 不需要外键读写较多的的使用MyIsam需要事务, 需要外键的使用InnoDB
- 合适的字段类型 , 例如 : 定长字符串用char , 不定长用varchr状态, 性别等有限数量值的用tinyint
- 遵循范式 :第一范式1NF,原子性第二范式2NF,消除部分依赖第三范式3NF,消除传递依赖
2.从功能方面可以对索引优化,采用缓存缓解数据库压力,分库分表。
3.从架构方面可以采用主从复制,读写分离,负载均衡
17. MYSQL超大分页怎么处理 ?
MYSQL 不是跳过offset行, 而是取offset+N行, 然后放弃前offset行 , 返回N行, 所以当offset比较法的情况下分页效率很低
正确的处理方法是 : 先快速定位需要获取的id再关联查询获取数据
18. 如何定位慢查询 ?
可以在MYSQL配置文件中开启慢查询 , 有两种方式可以开启慢查询
方式一 : 修改my.ini配置文件 , 重启 MySQL 生效
[mysqld] log_output='FILE,TABLE' slow_query_log='ON' long_query_time=0.001
方式二 : 设置全局变量
SET GLOBAL slow_query_log = 'ON'; SET GLOBAL log_output = 'FILE,TABLE'; SET GLOBAL long_query_time = 0.001;
19. 一个SQL语句执行很慢, 如何分析
首先可以开启慢查询, 通过慢查询日志或者命令, 获取到执行慢的SQL语句 , 其次可以使用EXLPAIN命令分析SQL语句的执行过程
EXLPAIN命令, 比较重要的字段(加黑加粗的是重要的) :
select_type重点解读
type重点解读:查询性能从上到下依次是最好到最差
extra重点解读