前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySql缓存中的关键项

MySql缓存中的关键项

作者头像
dys
发布2018-04-02 17:30:37
1.3K0
发布2018-04-02 17:30:37
举报
文章被收录于专栏:性能与架构

MySql的设计中大量使用了缓存,下面这些缓存配置项是应该熟知的

key_buffer_size

key_buffer_size是设置MyISAM表索引的缓冲区大小,此参数对MyISAM表性能影响最大

对于内存在4GB左右的服务器来说,该参数可设置为256MB或384MB

table_cache

table_cache是指表高速缓存的大小。当MySQL访问一个表时,如果在MySQL表缓冲区中还有空间,那么这个表就被打开并放入表缓冲区,这样做的好处是可以更快速地访问表中的内容

一般通过查看 Open_tables 和 Opened_tables 这两个状态的值,来判断是否需要增加table_cache的值,如果open_tables接近table_cache,并且 Opened_tables这个值在逐步增加,那就要考虑增加table_cache的大小了

sort_buffer_size

sort_buffer_size指的是查询排序时所能使用的缓冲区大小,系统默认大小为2MB

该参数对应的分配内存是每连接独占的,如果有100个连接,那么实际分配的总排序缓冲区大小为100×6MB=600MB。所以,对于内存在4GB左右的服务器来说,推荐将其设置为6~8MB

read_buffer_size

read_buffer_size指的是读查询操作所能使用的缓冲区大小。和sort_buffer_size一样,该参数对应的分配内存也是每连接独享,值的设置可参照sort_buffer_size

join_buffer_size

join_buffer_size指的是联合查询操作所能使用的缓冲区大小,和sort_buffer_size一样,该参数对应的分配内存也是每连接独享,值的设置可参照sort_buffer_size

thread_cache_size

thread_cache_size用于设置Thread Cache池中可以缓存的连接线程最大数量,可设置为0~16384,默认为0

这个值表示可以重新利用保存在缓存中线程的数量,当断开连接时,如果缓存中还有空间,那么客户端的线程将被放到缓存中;如果线程重新被请求,那么请求将从 缓存中读取,如果缓存中是空的或者是新的请求,那么这个线程将被重新创建,如果有很多新的线程,增加这个值可以改善系统性能

1GB内存 -> 8

2GB内存 -> 16

3GB内存 -> 32

4GB及以上可以给此值为64或更大的数值

query_cache_size

query_cache_size指定MySQL查询缓冲区的大小。观察MySQL状态,如果 Qcache_lowmem_prunes 的值非常大,则表明经常出现缓冲不够的情况;如果Qcache_hits的值非常大,则表明查询缓冲使用得非常频繁;对于 Qcache_free_blocks,如果该值非常大,则表明缓冲区中碎片很多

tmp_table_size

tmp_table_size用于设置内存临时表的最大值。如果超过该值,则会将临时表写入磁盘,其范围为1KB到4GB

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2015-10-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JAVA高性能架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档