0
点赞
收藏
分享

微信扫一扫

MySQL优化专题(侧重开发)P46-P52

花明 2021-09-19 阅读 47
MySQL

P46 小表驱动大表



永远小表驱动大表(连接成本高)



注:两表ID字段应建立索引

P47 in和exists


P48 为排序使用索引order by优化
order by子句,尽量使用using index方式排序,避免使用using filesort方式排序
重点:避免filesort!


如果order by 的字段一个是正序一个是倒序的话,就还是使用filesort,因为默认索引建的都是正序,即字段顺序相同,必须“同升同降”;
4.1版本之前是双路排序,要读两次磁盘,4.1之后改进成为单路排序:
从磁盘中读取查询所需要的所有列,在buffer中按照order by列进行排序,然后扫描排序后的列表进行输出,把随机IO变成顺序IO,但是也占用更多内存;
总体而言单路要优于双路,但是如果取的数据要高于sort_buffer_size的话,就要取好几次直至取完,这样就会产生多次IO,效果会更差;
因此需要增大sort_buffer_size和max_length_for_sort_data这两个参数的设置



P49 慢查询日志



set global slow_query_log=1是临时开启,永久开启需要改配置文件



set global long_query_time=2;
需要重新连接或者新开一个会话才能看到新设置的值;
分析工具mysqldumpslow



当然作为DBA一般我们都用pt工具

P50 批量插入数据脚本






注:以$$为结束之后还需要改回以;为结束,即DELIMITER;

P51 用show profile进行SQL分析


查看当前版本是否支持






遇到的话就必须要优化了

P52 全局查询日志
绝不可能生产环境使用,只能测试环境使用



所有sql都记录到mysql.general_log表中

举报

相关推荐

0 条评论