Mysql 优化方案
从开发角度优化mysql,让数据库效率更高、更快。
索引优化
查看mysql状态
通过周期性观察mysql状态优化,更有利于确定mysql性能瓶颈在哪里。
通过 show status 命令观察mysql的运行状态。其中比较主要的几个:
命令格式:
show [global|session] status like 'command'; 默认是session: 当前会话;global: 全局会话。
show status like "up_time"; 查看mysql启动了多长时间
show status like 'com_select'; 查看mysql执行select的次数
show status like 'com_delete'; 查看mysql执行delete的次数
show status like 'com_update'; 查看mysql执行upate的次数
show status like 'com_insert'; 查看mysql执行insert的次数
show status like 'Thread_srunning';有多少个连接正在工作
show status like 'connections';试图连接mysql的次数
show status like '
Max_used_connections';mysql的最大连接数。经常会遇见”mysql: error 1040: too many connections”的情况,一种是访问量确实很高,mysql服务器抗不住,这个时候就要考虑增加从服务器分散读压力,另外一种情况是mysql配置文件中max_connections值过小。
show status like 'Queries';一共执行了多少次查询
show status like 'Slow_queries';慢查询次数
查看mysql变量
通过 show variables like 'commond' 命令查看mysql变量值。
show variables like 'long_query_time'; 查看慢查询时间。
更新变量值:set [golabl|session] 'commond'=value 就可以更改变量值。 退出,再登录,新变量生效。
将msyql默认慢查询时间更改为1秒。
set globsl long_query_time=1;mysql默认的慢查询时间为10秒钟,该值需要根据项目的需要调整到合理值,以达到较好的效果
打开mysql记录慢查询日志功能
mysql默没有记录慢查询日志,需要手动开启慢查询记录功能。
通过命令开启慢查询功能: set global slow_query_log=on;
查看慢查询日志文件位置: show variables like '%slow%';
打开profile
set profiling=1; 打开profile功能。
show profiles; 查看执行记录。
show profile for query QueryID;[QueryID]在上条语句的执行结果中。
通过此条语句,可以详细的看到mysql再执行这条语句时,在各个细节上花费的时间。再通过explain 综合分析sql的不足之处。
show profile block io,cpu,memory,swaps for query Query_ID;
block io,分析IO消耗。
cpu,分析cpu消耗。
memory,分析内存消耗。
swaps,分析交互空间消耗。
这几个指标可以不写也可以多个组合在一起显示。
Mysql索引介绍
索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。
注:
[1]索引不是万能的!索引可以加快数据检索操