【Mysql优化三章】第一章

来源:互联网 发布:留学中介机构 知乎 编辑:程序博客网 时间:2024/06/06 03:21

现在网上的好多mysql优化写的都很宽泛,没什么实际的价值,今天我们从目的,思路,工具几个方面着重讲一下。

目的:

我们mysql优化的目的是什么呢?

避免数据库连接超时出现5xx错误。

避免慢查询造成页面无法加载。

避免阻塞造成数据无法提交。


我们一般就是从sql和索引,数据库表结构,系统设置,硬件,四个方面来进行优化,而sql和索引以及数据库表结构占据了我们sql优化的大部分内容,是我们优化的基础。


接下来我们就开始搞一波事。


我们连接我们的mysql服务器,然后我们输入命令:

show variables like ‘slow_query_log’;

目的是为了查看我们的慢查询日志是否打开;


ok ,很明显我们的慢查询日志没有打开,那么我们先看一下没有使用索引的sql有没有被日志记录。

show variables like '%log%',然后我们可以看到

我这边是已经开启了的,如果你那里没有开启的话,我们只需要输入命令

set global log_query_not_using_indexes = on;

这一条命令开启就可以了,然后我们指定一下我们的慢查询日志记录的时间。

如果你的mysql 没有设置过的话,这一项的值应该为0,意思就是每次查询都会被记录,但是在生产环境中,如果设置为0的话,那么会在一段时间内产生大量的慢查询日志,占用硬盘空间。


然后我们开启我们的慢查询日志:


set global slow_query_log = on;

ok,到了这一步我们的慢查询日志就已经开启了。


ok我这有一个数据库,给大家到时候装上就可以了,首先看一下world数据库:

ok,一共三张表,我们随便写一个sql语句:


select * from country limit 20;


好了,我们现在来查看一下我们的慢查询日志。

tail -20  /data/mysql/iZm5ec880z2roqZ-slow.log


ok,日志中已经生成了我们刚才写的sql操作的日志,日志中包括了,sql执行的主机信息,sql执行的时间,sql执行的内容,sql执行的信息等。


我们接下来就使用mysql的工具来分析慢查询日志。第一个就是mysqldumpslow

然后我们使用命令:

mysqldumpslow -t 3 慢查询日志路径 

        我们也可以使用工具pt-query-digest来分析慢查询日志,这个我明天把软件装上我们再讲,本来想一口气全讲完的,看了看东西还不少,所以我们就分为三部分吧,明天讲sql和索引的优化,后天是系统设置和硬件,一般硬件的配置除非你是专业的DBA不然没多大用处,了解一下就可以了。