join_buffer_size
2016-03-07 10:58
274 查看
应用经常会出现一些两表(或多表)join的操作需求,MySQL在完成某些join需求的时候(all row join/all index /scan join)为了减少参与join的“被驱动表”的读取次数以提高性能,需要使用到join
buffer来协助完成join操作当join buffer
太小,MySQL不会将该buffer存入磁盘文件而是先将join buffer中的结果与需求join的表进行操作,然后清空join buffer中的数据,继续将剩余的结果集写入次buffer中,如此往复,这势必会造成被驱动表需要被多次读取,成倍增加IO访问,降低效率(执行计划中如果现实using
join buffer)
两个表关联的时候 减少参与被驱动表的join操作(没办法有效利用索引的时候)
多表join时,就需要用到join
buffer的三种情况
All row join do not user indexes nad thus perform full table scans(没有索引的全表扫描)
All index join plain index scans(普通索引扫描)
Range index scan join=rangeindex scans(范围索引扫描)
最好是添加适当的索引而不是纯粹加大join_buffer_size
任何来个表间的全表join就会分配一次join_buffer也就是说,如果3个表join就会分配2次joinbuffer(而不是一个session只分配一次)
buffer来协助完成join操作当join buffer
太小,MySQL不会将该buffer存入磁盘文件而是先将join buffer中的结果与需求join的表进行操作,然后清空join buffer中的数据,继续将剩余的结果集写入次buffer中,如此往复,这势必会造成被驱动表需要被多次读取,成倍增加IO访问,降低效率(执行计划中如果现实using
join buffer)
两个表关联的时候 减少参与被驱动表的join操作(没办法有效利用索引的时候)
多表join时,就需要用到join
buffer的三种情况
All row join do not user indexes nad thus perform full table scans(没有索引的全表扫描)
All index join plain index scans(普通索引扫描)
Range index scan join=rangeindex scans(范围索引扫描)
最好是添加适当的索引而不是纯粹加大join_buffer_size
任何来个表间的全表join就会分配一次join_buffer也就是说,如果3个表join就会分配2次joinbuffer(而不是一个session只分配一次)
相关文章推荐
- jQuery v1.11.0的checkbox
- 添加json所报的异常
- js中document.write的那点事
- 记录--Gson、json转实体类、类转json
- read_buffer_size/read_rnd_buffer_size
- 年月日 生日 js插件
- [转]跟我一起学extjs5(02--建立工程项目)
- jquery在项目中使用积累
- AngularJS入门教程:导言和准备
- 前端制作入门知识
- AngularJS PhoneCat代码分析
- JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解
- HTML5 data-* 自定义属性
- CSS3的弹性盒模型
- bootstrap的popover插件在focus模式时在Safari浏览器无法使用的bug解决方案
- JS代码片段:一个日期离现在多久了
- AngularJS 五大特性(为克服HTML在构建应用上的不足而设计)
- 基于JavaScript实现快速转换文本语言(繁体中文和简体中文)
- html5存储数据,替代cookie
- 关于java项目中加入jquery-1.x.js文件报错问题