bsp; OFF 缓冲类型,决定缓冲什么样的查询,不能随便设置,必须设置为数字,可选项目
0 off,不缓冲或重新得到结果
1 on 缓存所有的结果,除了select sql_no_cache ...查询
2 dnmand 仅缓存select sql_cache...查询
query_cache_wlock_invalidata 当有客户端正对MyLSAM表进行写操作,如果查询在query cache中,是否返回cache结果还是等写操作完成在读表获取结果
查询缓冲碎片率 = qcache_free_blocks/qcache_total_blocks * 100%
碎片率低于25%说明query_cache_size设置过大,可适当减小,查询缓冲利用率在80*以上而且qcache_lowmen_prunes>50说明query_cache_size可能有点小,要不碎片太多
查询缓冲命中率=qcache_hits/(qcache_hits+qcache_inserts)*100%
query cache的限制
所有子查询中的外部查询sql不能被cache
在procedure,function以及trigger中的query不能被cache
包含其他很多每次执行可能得到不一样的结果的函数的query不能被cache
mysql中与安全有关的计数器值:max_connect_errors,负责阻止过多尝试失败的客户端以防暴力破解密码,超过指定次数,将禁止host连接请求。直到mysl服务器重启或通过flush hosts命令清空此host的相关信息。
需要进行排序的线程分配该大小的一个缓冲区:sort_buffer_size。加速order by或group by操作。sort_buffer_size是一个connections级参数,每个connection第一次需要使用这个buffer的时候,一次性分配设置的内存。这个值不是越大越好,过大高并发可能会耗尽传统内存资源
限制server接收数据包大小,大的插入和更新会收max_allowed_packet参数限制,导致写入或者更新失败。最大值是1GB,必须设置1024的倍数。
表间关联缓存的大小,与sort_buffer_size一样,对应的分配内存也是每个连接独享
服务器线程缓存,表示可以重新利用保持在缓冲中线程的数量,端口连接时,客户端的线程放到缓存中以响应下一个客户而不是销毁,如果线程重新被请求,请求将从缓存中读取,缓存中是空的或者是新的请求,这个线程将被重新创建,如果有很多新线程,增加这个值可以改善系统性能,通过比较connections和threads_created状态的变量,可以看到这个变量的作用
试图连接mysql的连接数:show status like 'conections';
试图连接mysql的连接数(不管连接是否成功):show status like 'threads_%';
配置InnoDB的几个变量
修改/etc/my.cnf文件,在[mysqld]下面添加
innoDB_buffer_pool_size = 2048M
相当于key_buffer_size对于MyLSAM表的作用一样。InnoDB使用该参数指定大小的内存来缓冲数据和索引,单独的mysql数据库,最大可以把该值设成物理内存的80&innodb_buffer_pool_size
控制innodb将log buffer中的数据写入日志文件并flush磁盘的时间点,取值分别是0,1,2.0表示事务提交时,不做日志写入操作,而是每秒钟将log buffer中的数据写入日志文件并flush磁盘一次;1在每秒钟或每次事务的提交会引起日志文件写入flush磁盘的操作,确保了事务的ACID;2每次事务提交引起写入日志文件的动作,但每秒钟完成一次flush磁盘操作。
实际操作发现,该值对插入数据的速度影响大,设置为2是插入10000条记录只需要2秒,设置为0是只需1秒,设置为1是需要229秒。因此mysql手册建议尽量将插入操作合并和一个事务,可以提高速度。
设置innodb线程的并发数量,默认值为0表示不限制,若要设置则与服务器cpu核数相同或是cpu的核数的2倍,建议使用默认设置,一般为8.:innodb_thread_concurrency = 0
确定此日志文件所用内存大小,以M为单位,缓冲区更大能提高性能,对于较大的事务,可以增大缓存大小 innodb_log_bugger)size = 32M
确定日志文件的大小,以M为单位,更大的设置可以提供性能:innodb_log_file_size = 50M
提高性能,mysql可以以循环方式将日志文件写到多个文件,推荐设置为3:innodb_log_iles_in_group = 3
mysql读入缓冲区大小,对表进行顺序扫描的请求将分配一个读入缓冲区,mysql会