ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Mysql调优

Mysql调优 Mysql调优影响处理速度的因素硬件配置低网络带宽窄存储架构不合理复杂的查询语句服务运行参数设置不合理启用慢查询日志保存耗时较长的日志vim/etc/my.cnf[mysqld]slow-query-log#启用慢查询long-query-time0.3#查询超时时间systemctl restart mysqld统计日志信息ls/var/lib/mysql/主机名-slow.log mysqldumpslow /var/lib/mysql/主机-slow.logsql.txt设置查询缓存查询的内容如果在查询缓存中有则从查询缓存中拿取没有则从硬盘里查询保存到查询缓存中在进行拿取。mysqlshow variables like%query_cache%;#have_query_cache YES 启用缓存查询#query_cache_type YES 允许查找的内容放入查询缓存里#query_cache_size 缓存大小vim/etc/my.cnf[mysqld]query_cache_size10485760#10Mquery_cache_typeON#ON、OFF、DEMAND(按需缓存)systemctl restart mysqld验证内容是否在查询缓存里查找的mysqlshow status like%qcache%;#Qcache_hits 0 在缓存里找到的数据#Qcache_inserts 0 在硬盘里找到的数据mysqlshow status like%com_select%;#查询访问总量,内存里找的不会变#查询缓存命中率 (Qcache_hits / Com_select) * 100% 数字越低越好创建索引创建索引mysqlcreate index 名称 on 库.表(表头名);删除索引mysqldrop index 名称 on 库.表;测试索引mysqlexplainselect查询命令;设置索引缓存索引缓存划分物理内存空间单独存放索引信息表名.MYI (/var/lib/mysql/库/表.MYI)mysqlshow variables likekey_buffer_size;#默认给的缓存大小默认8M也是.myi的大小,通过/etc/my.cnf更改大小mysqlshow global status likekey_read%;#Key_read_requests 6 索引请求总数#Key_reads 3 磁盘IO总数#Key_reads / Key_read_requests 比例越小越好修改的size越合理补充查询访问多的表使用myisam存储引擎desc 表名 来自表名.frm (结构)show index 来自表名.MYI (索引)select * 来自表名.MYD (数据)Innodb存储引擎.frm .idb(索引数据)设置缓存表访问表存放在/var/lib/mysql/库/表.MYD 表.ibd先打开文件——查询——关闭第二次也是这个动作缓存表可以同时打开多表不用关闭查看已打开、打开过多少个表mysqlshow global status likeopen%tables;#open_tables open_table_cache值 并且 Opened_tables值变化不大查看可以缓存的表可以同时打开多少张表不用关闭mysqlshow variables liketable_open_cache;设置并发连接数查看并发连接mysqlshow variables likemax_connections;max_connections#允许的最大并发连接数mysqlshow status likeMax_used_connections;Max_used_connections#当前最大连接数Max_used_connections / max_connections *100% ≈85%设置重用线程可以重复使用的线程数量不销毁处理完访问连接的线程让线程继续在内存里运行着等待客户端连接查看重用线程mysqlshow variables likethread_%_size;thread_cache_size9#查看可以重用的线程查看当前线程状态mysqlshow global status likethreads_%;Threads_running1#正在活跃的线程Threads_created4#已创建的线程Threads_connected3#当前正在连接的线程Threads_cached2#缓存的线程Threads_connectionsthread_cache_size#合理
返回列表