资源描述:
《mysql优化技巧总结》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、MySQL自带slowlog的分析工具mysqldumpslow,但是没有说明。本文通过分析该脚本,介绍了其用法。slowlog是MySQL根据SQL语句的执行时间设定,写入的一个文件,用于分析执行较慢的语句。只要在my.cnf文件中配置好:log-slow-queries=[slow_query_log_filename]即可记录超过默认的10s执行时间的SQL语句。如果要修改默认设置,可以添加:long_query_time=5设定为5s。如果要记录所有SQL语句,可以写入:log-long-format#t=time,l=locktime
2、,r=rows#at,al,以及ar是对应的平均值mysqldumpslow可以接受的参数有:'v+',#verbose'd+',#debug's=s',#排序(t,at,l,al,r,aretc)'r!',#倒排序(largestlastinsteadoffirst)'t=i',#显示最高的n个查询'a!',#不把所有的数字以N,字符串以'S'显示'n=i',#abstractnumberswithatleastndigitswithinnames'g=s',#grep:onlyconsiderstmtsthatincludethisstri
3、ng'h=s',#hostnameofdbserverfor*-slow.logfilename(canbewildcard)'i=s',#nameofserverinstance(ifusingmysql.serverstartupscript)'l!',#don'tsubtractlocktimefromtotaltimemysqlexplain的使用说明explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。使用方法,在select语句前加上explain就可以了:如:ex
4、plainselectsurname,first_nameforma,b where a.id=b.id分析结果形式如下:引用mysql>explainSELECT*FROM`whisper`WHEREto_id=6696ANDdel=0 ANDwhisper=0ORDERBY`send_time`DESCLIMIT4;+----+-------------+---------+------+---------------+-------+---------+-------+------+----------------------------
5、-+
6、id
7、select_type
8、table
9、type
10、possible_keys
11、key
12、key_len
13、ref
14、rows
15、Extra
16、+----+-------------+---------+------+---------------+-------+---------+-------+------+-----------------------------+
17、 1
18、SIMPLE
19、whisper
20、ref
21、to_id
22、to_id
23、 4
24、const
25、 1
26、Usingwhere;Usingf
27、ilesort
28、+----+-------------+---------+------+---------------+-------+---------+-------+------+-----------------------------+1rowinset(0.00sec)EXPLAIN列的解释:table显示这一行的数据是关于哪张表的type 这是重要的列,显示连接使用了何种类型。从最好到最差的连接类型为const、eq_reg、ref、range、indexhe和ALLpossible_keys显示可能应用在这张表中的索引。如果为
29、空,没有可能的索引。可以为相关的域从WHERE语句中选择一个合适的语句key实际使用的索引。如果为NULL,则没有使用索引。很少的情况下,MYSQL会选择优化不足的索引。这种情况下,可以在SELECT语句中使用USEINDEX(indexname)来强制使用一个索引或者用IGNOREINDEX(indexname)来强制MYSQL忽略索引key_len使用的索引的长度。在不损失精确性的情况下,长度越短越好ref显示索引的哪一列被使用了,如果可能的话,是一个常数rowsMYSQL认为必须检查的用来返回请求数据的行数Extra关于MYSQL如何解析
30、查询的额外信息。将在表4.3中讨论,但这里可以看到的坏的例子是Usingtemporary和Usingfilesort,意思MYSQL根本不能使用索引