mysql 需关注的基本参数

mysql 关注参数:
1.open_files_limit 
可设置比较大,修改参数文件/etc/security/limits.conf
vi /etc/security/limits.conf

2. max_connect_errors
应设置比较大,避免因为连接出错而超过错误阈值,导致mysql阻止该主机连接,如被阻塞手动执行flush hosts 复位。

3.max_connections
允许并行的客户端连接数目,默认值100太小,不够用。
建议设置2000-5000,对于32位系统由于内存限制,连接数不能过大(建议小于800),否则过多导致实例崩溃。

4.max_used_connections
mysql 启动后曾经到达的最大连接数,如果达到max_connections,那么某个时刻存在突然的高峰连接时,可能会有性能问题。

5.threads_connected
当前打开的连接数量。这个值不能超过设置的max_connections*80%。需要注意及时调节max_connections的值。一旦连接数超过max_connections,就会出现客户端连接不上的错误。

6.aborted_connections
试图连接到mysql服务器失败的连接数。正常情况下,该值不会持续增加,出现连接失败的原因主要是以下几点:
1) 客户端程序退出未调用mysql_close().
2) 客户端空闲时间超过了wait_timeout 或 interactive_timeout,未向服务器发出任何请求。
3) 客户端在数据传输中突然结束。

7. aborted_clients
由于客户端没有正确关闭连接导致客户端终止而中断的连接数。
出现以下情况时,服务器将增加 aborted_clients(放弃客户端)的状态变量。
1.客户端不具有连接至数据库的权限
2.客户端采用了不正确的密码
3.连接信息包含不正确的信息
4.获取信息包的时间超过了connect_timeout 秒
 

8.thread_cache_size
当客户端断开连接时如果线程少于thread_cache_size,则客户端的线程将被放入缓存。如果有新连接请求分配线程则可以从缓存中重新利用线程,只有当缓存空了
时才会创建新线程。如果新连接很多,则可以增加该变量以提高性能。如果是大量并发的短连接,则可能会因为thread_cache_size 不够而导致性能问题,
生产环境一般设置为100-200.

9.thread_created
创建用来处理连接的线程数。 应该监视该值的增量,如果较多,则需要增加thread_cache_size的值。以上对 thread_cache_size的设置在高并发的时候会很有效。

10.thread_running
指同时运行的线程数目。这个值一般不会大于逻辑cpu的个数,如果经常有过多的线程同时运行,可能意味着有性能问题,这个指标往往表明一个系统的繁忙程度。
在系统爆发性能问题之前,会有一个上升的趋势,此时收集性能信息,将有助于诊断复杂的性能问题。

11.slow_launch_threads
如果这个值较大,则意味着创建线程太慢,可能出现性能问题,存在资源瓶颈,从而导致操作系统没有安排足够的cpu时间给新创建的线程。

12.query_cache_size
为缓存查询结果分配的内存大小,一般设置为256M,一般不能设置太大。
可监控查询缓存命中率:Qcache_hists/(Qcache_hists+Com_select).
更改这个值,会清空所有的缓存结果集,对繁忙的系统,可能会很耗时,导致服务停顿,因为mysql在删除所有的缓存查询时是逐个进行的。

13.Qcache_lowmem_prunes
该变量记录了由于查询缓存出现内存不足,而需要从缓存中删除的查询数量,可通过监控 Qcache_lowmem_prunes的数量,来衡量是否增加 query_cache_size的值。
Qcache_lowmem_prunes状态变量提供的信息能够帮助调整查询缓存的大小,他可计算为了缓存新的查询而从查询缓存区中移出到自由内存中的查询数目。查询缓存区
使用最近最少使用(LRU)策略来确定哪些查询需要从缓存中移出。

14.innodb_buffer_pool_wait_free
一般情况下,是通过后台向Innodb缓冲池中写入数据的。但是,如果需要读或创建页,并且没有干净的页可用,那么他还需要先等待页面清空。如果已经设置了缓冲池的大小
那么该值应该会很小。

15.slow_queries
查询时间超过long_query_time 秒的查询个数,应该监控次量的增量变化,一般1秒内不能超过5-10个,否则会有性能问题。

16.select_full_join
没有使用索引的连接数量,如果该值较大,则应该仔细检查一下表的索引。

17.created_tmp_tables
创建内存临时表的数量,如果created_tmp_disk_tables 较大,则应该考虑增加tmp_table_size 的大小。
应该将tmp_table_size 和 max_heap_table_size 简单调整到大小一样。32MB一般满足。对于这两个参数的控制通常基于内存引擎的临时表可以增长的阈值,若超过了这个阈值,就会转化成One-disk MyISAM表

18.created_tmp_disk_tables
服务器执行语句时在硬盘上自动创建的临时表的数量。

19.bytes_received 和 bytes_sent
可以用来监控mysql的流量

20.key_buffer_size
myisam 索引缓冲,实际用到了多少就分配多少,不一定需要分配很大空间,可参考实际观察到的值,不要大于实际值,如下命令可用于评估索引空间的大小。
select sum(index_length) from information_schema.tables where engine='MYISAm';
如下公式计算访问key的命中率:
100-((key_blocks_unused*key_cache_block_szie)*100/key_buffer_size) ,但是该值没有实际意义,相对而言,key_reads 更有实际意义。
不要把key_buffer_size 设置为0,至少应该为一个较小的值,比如32M或64M,因为mysql一些内部操作需要用到myISAM引擎表,比如临时表

21.open_tables
当前打开表的数量

22.opened_tables
已经打开的表的数量

查看open_tables及opened_tables 的增量时,如果opened_tables的增量比较大,那么可能table_open_cache(或者table_cache)不够用了。
如果open_tables对比table_cache_size 并不大,但opened_tables 还在持续增长,那么也可能是显式临时表被不断打开而导致的。

23.table_open_cache(table_cache 5.1.3之前的参数名)
默认的值 太小,生产环境应该将其设置的足够大,数千到一万是比较合理的值。
检查 opened_tables status 变量,如果该值比较大,而我们不经常运行 flush tables 命令 ,那么应该增加table_open_cache的变量值。

24.table_definition_cache
一般可以将其设置为足够高的值来缓存表定义,比如4096,这并不会耗费什么资源。默认的256太小。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值