Skip to content

join_buffer_size

xiaoboluo768 edited this page Jun 14, 2020 · 2 revisions
  • 用于存放join查询中间结果的缓存大小。对于无法通过索引进行联结操作的查询,可以通过适当增大join_buffer_size的值来改善联结查询性能(但最好是想办法让join使用到索引来提高性能)。join_buffer_size都是每线程独占分配,不要设置过大(除非能够使用BKA特性,当使用BKA时,join_buffer_size的值的大小决定了向存储引擎的每个请求中包含的键值对的多少,缓冲区越大,联结操作的右表即被驱动表的顺序IO访问就越多,BKA的作用就是把随机IO访问变为顺序IO访问,这可以显着提高性能),最好是设置一个较小的全局值,如果碰到较大表做联结查询,或者是比较复杂的联结表查询,就对这个session设置较大的值
    • 对于简单查询的索引扫描、索引范围扫描以及因为不能使用到索引做全表扫描的join查询时,无论返回的数据多大,都会分配该参数的最小值128字节那么多join buffer做查询
    • 对于简单的两个表之间的查询分配一个join buffer,但是对于复杂的多表join查询且不能使用索引的时候,可能会分配多个join buffer
    • 全局变量,会话变量,动态变量,默认值在不同版本中频繁变化,大于5.6.6版本号的64位版本默认值为256K,最小值为128字节,整型值。取值范围为:128~18446744073709547520字节

上一篇:max_heap_table_size | 下一篇:thread_cache_size

Clone this wiki locally