设为首页 加入收藏

TOP

MySQL的配置优化(三)
2017-03-30 14:17:27 】 浏览:410
Tags:MySQL 配置 优化
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会

首页 上一页 1 2 3 4 下一页 尾页 3/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇MySQL主从复制的一些心得体会 下一篇mysqldump备份结合binlog日志恢复

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目