修改mysql配置文件,优化缓存大小和连接数连接方式,优化sql语句 ,记得mysql好像是有工具可以查看最占用资源的sql语句,找到他,优化他。
安装好mysql后,配制文件应该在/usr/local/mysql/share/mysql目录中,配制文件有几个,有my-huge.cnf my-medium.cnf my-large.cnf my-small.cnf,不同的流量的网站和不同配制的服务器环境,当然需要有不同的配制文件了。
一般的情况下,my-medium.cnf这个配制文件就能满足我们的大多需要;一般我们会把配置文件拷贝到/etc/my.cnf 只需要修改这个配置文件就可以了,使用mysqladmin variables extended-status _u root _p 可以看到目前的参数,有3个配置参数是最重要的,即key_buffer_size,query_cache_size,table_cache。
key_buffer_size只对MyISAM表起作用,
key_buffer_size指定索引缓冲区的大小,它决定索引处理的速度,尤其是索引读的速度。一般我们设为16M,实际上稍微大一点的站点 这个数字是远远不够的,通过检查状态值Key_read_requests和Key_reads,可以知道key_buffer_size设置是否合理。比例 key_reads / key_read_requests应该尽可能的低,至少是1:100,1:1000更好(上述状态值可以使用SHOW STATUS LIKE ‘key_read%’获得)。 或者如果你装了phpmyadmin 可以通过服务器运行状态看到,笔者推荐用phpmyadmin管理mysql,以下的状态值都是本人通过phpmyadmin获得的实例分析:
这个服务器已经运行了20天
key_buffer_size _ 128M
key_read_requests _ 650759289
key_reads - 79112
比例接近1:8000 健康状况非常好
线程池缓存大小( 当客户端断开连接后 将当前线程缓存起来 当在接到新的连接请求时快速响应 无需创建新的线程 )
查看 thread_cache_size
show global variables like 'thread_cache_size'
设置 thread_cache_size
set global thread_cache_size = 20 (立即生效重启后失效)
MySQL 配置文件 my.cnf 中 mysqld 下添加 thread_cache_size
[mysqld]
thread_cache_size = 20
可以通过如下几个MySQL状态值来适当调整线程池的大小
可以通过 show global status like 'Threads_%' 命令查看以上4个状态值
当 Threads_cached 越来越少 但 Threads_connected 始终不降 且 Threads_created 持续升高
这时可适当增加 thread_cache_size 的大小
MySQL 5.7 参考手册 - thread_cache_size
表文件描述符的缓存大小( 当打开一个表后 会把这个表的文件描述符缓存下来 )
查看 table_open_cache
show global variables like 'table_open_cache'
设置 table_open_cache
set global table_open_cache = 2048 (立即生效重启后失效)
MySQL 配置文件 my.cnf 中 mysqld 下添加 table_open_cache
[mysqld]
table_open_cache = 2048
table_open_cache 设置多少合适呢 ?
不是越大越好 table_open_cache过大占用大量文件描述符资源而不释放
用尽了系统文件描述符资源导致无法接入新的连接
如何判断 table_open_cache 大小是否够用?
可根据MySQL的两个状态值来分析
通过以上两个值来判断 table_open_cache 是否到达瓶颈
当缓存中的值 open_tables 临近到了 table_open_cache 值的时候
说明表缓存池快要满了 但 Opened_tables 还在一直有新的增长 这说明你还有很多未被缓存的表
这时可以适当增加 table_open_cache 的大小
MySQL 5.7 参考手册 - table_open_cache
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)