如何理解MySQL中per_thread_buffers优化,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
对于per_thread_buffers,可以理解为Oracle的PGA,为每个连接到MySQL的用户进程分配的内存,包括以下几个参数:
1、read_buffer_size
该参数用于表的顺序描述,表示每个线程分配的缓冲区的大小。比如,在进行全表扫描时,MySQL会按照数据的存储顺序依次读取数据块,每次读取的数据块首先会暂存在per_thread_buffers中,当buffer空间被写满或者全部数据读取结束后,再将buffer中的数据返回给上层调用者,以提高效率,默认为128KB,一般在128KB-256KB。
2、read_rnd_buffer_size
该参数用户表随机读取,表示每个线程分配的缓冲区大小。比如,按照一个非索引字段做order by排序操作时候,就会利用这个缓冲区暂存所读取的数据。默认为256KB,一般为128KB-256KB。
3、sort_buffer_size
表在进行order by和group by 排序操作时,由于排序的字段没有索引,会出现using filesort,为了提高性能,可用此参数增加每个线程分配的缓冲区大小,默认为2MB,不用太大,一般为128KB-256KB。
4、thread_stack
该参数表示每个线程的堆栈大小。默认为182KB,64系统设置为256KB即可。
5、join_buffer_size
表进行join连接操作时,如果关联的字段没有索引,会出现using join buffer,为了提高性能,可用此参数增加每个线程分配的缓冲区大小。默认为128KB。一般为128KB-256KB,出现using join buffer时候要增加索引来解决。
6、binlog_cache_size
数据库中没有什么大事务,写入也不是特别频繁,将其设置为1-2MB即可,如果有很大的事务,可以适当增加这个缓存值,以获得更好的性能。
7、max_connections
最大连接数,默认为100,一般设置为512-1000即可。
关于如何理解MySQL中per_thread_buffers优化问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/database/204152.html