来源:http://www.crazycoder.cn/DataBase/Article79916.html
以下文章主要是对MySQL性能影响关系紧密
5大配置参数
介绍
我前几天在相关网站WebSite看见对MySQL性能影响关系紧密
5大配置参数
资料
觉得挺好
就拿出来供大家分享
望你能有所收获
()连接
连接通常来自Web服务器下面列出了
些和连接有关
参数
以及该如何设置它们
1、max_connections
这是Web服务器允许最大连接数
记住每个连接都要使用会话内存(有关会话内存
文章后面有涉及)
2、max_packet_allowed
最大数据包大小通常等于你需要在
个大块中返回
最大数据集
大小
如果你在使用远程mysqldump
那它
值需要更大
3、aborted_connects
检查系统状态计数器
确定其没有增长
如果数量增长介绍说明客户端连接时遇到了
4、thread_cache_size
入站连接会在MySQL中创建个新
线程
MySQL中打开和关闭连接都很廉价
速度也快
它就没有象其它数据库
如Oracle那么多持续连接了
但线程预先创建并不会节约时间
这就是为什么要MySQL线程缓存Cache
原因了
如果在增长请密切注意创建线程
让你
线程缓存Cache更大
对于2550或100
thread_cache_size
内存占用也不多
( 2)查询缓存Cache
( 3)临时表
内存速度是相当快因此我们希望所有
排序操作都在内存中进行
我们可以通过调整查询让结果集更小以实现内存排序
或将变量设置得更大
tmp_table_size
max_heap_table_size
无论何时在MySQL中创建临时表它都会使用这两个变量
最小值作为临界值
除了在磁盘上构建临时表外
还会创建许多会话
这些会话会抢占有 限制
资源
因此最好是调整查询而不是将这些参数设置得更高
同时
需要注意
是有BLOB或TEXT字段类型
表将直接写入磁盘
深入浅出MySQL双向复制技术
( 4)会话内存
MySQL中每个会话都有其自己内存
这个内存就是分配给SQL查询
内存
因此你想让它变得尽可能大以满足需要
但你不得不平衡同
时间数 据库内
致性会话
数量
这里显得有点黑色艺术
是MySQL是按需分配缓存Cache
因此
你不能只添加它们并乘以会话
数量
这样估算下来比MySQL典型
使用要大得多
最佳做法是启动MySQL连接所有会话
然后继续关注顶级会话
VIRT列
mysqld行
数目通常保持相对稳定
这就是实际
内存 总用量
减去所有
静态MySQL内存区域
就得到了实际
所有会话内存
然后除以会话
数量就得到平均值
1、read_buffer_size
缓存Cache连续扫描块
这个缓存Cache是跨存储引擎
不只是MyISAM表
2、sort_buffer_size
执行排序缓存Cache区大小
最好将其设置为1M-2M
然后在会话中设置
为
个特定
查询设置更高
值
3、join_buffer_size
执行联合查询分配缓存Cache区大小
将其设置为1M-2M大小
然后在每个会话中再单独按需设置
4、read_rnd_buffer_size
用于排序和order by操作最好将其设置为1M
然后在会话中可以将其作为
个会话变量设置为更大
值
( 5)慢速查询日志
慢速查询日志是MySQL很有用个特性
1、log_slow_queries
MySQL参数中log_slow_queries参数在my.cnf文件中设置它将其设置为on
默认情况下
MySQL会将文件放到数据目录
文件以“主机名-slow.log”
形式命名
但你在设置这个选项
时候也可以为其指定
个名字
2、long_query_time
默认值是10秒你可以动态设置它
值从1到将其设置为on
如果数据库启动了
默认情况下
日志将关闭
截至5.1.21和安装了 Google补丁
版本
这个选项可以以微秒设置
这是
个了不起
功能
旦你消除了所有查询时间超过1秒
查询
介绍说明调整非常成功
这样可以帮助 你在问题变大的前消除问题SQL
3、log_queries_not_using_indexes
开启这个选项是个不错主意
它真实地记录了返回所有行
查询
小结
我们介绍了MySQL参数 5大类设置
平时我们
般都很少碰它们
在进行MySQL性能调优和故障诊断时这些参数还是非常有用
MySQL中缓存Cache查询包括两个解析查询计划
以及返回
数据集
如果基础表数据或结构有变化
将会使查询缓存Cache中
项目无效
1、query_cache_min_res_unit
MySQL参数中query_cache_min_res_unit查询缓存Cache中块是以这个大小进行分配
使用下面
公式计算查询缓存Cache
平均大小
根据计算结果设置这个变量
MySQL就会更有效地使用查询缓存Cache
缓存Cache更多
查询
减少内存
浪费
2、query_cache_size
这个参数设置查询缓存Cache总大小
3、query_cache_limit
这个参数告诉MySQL丢掉大于这个大小查询
般大型查询还是比较少见
如运行
个批处理执行
个大型报表
统计
因此那些大型结果集不应该填满查询缓存Cache
复制代码 代码如下:
qcache hit ratio = qcache_hits / (qcache_hits + com_select)
使用
复制代码 代码如下:
SQL> show status like ‘qcache%';
SQL> show status like ‘com_%';
找到这些变量
复制代码 代码如下:
average query size = (query_cache_size – qcache_free_memory)/qcache_queries_in_cache
使用
复制代码 代码如下:
SQL> show variables like ‘query%';
qcache_* status variables you can get with:
SQL> show status like ‘qcache%';