Mysql管理必备工具Maatkit详解之十二(mk-query-digest)
3 Comments2009年09月17日 作者: 大头刚
mk-query-digest 一个功能很强大的工具,能分析慢查询日志,也可以对当前的语句进行分析等。安装方法查看这里。
一、分析慢查询日志,生成报表
mysql通过log-slow-queries和long_query_time参数来记录慢查询,默认的格式如下:
# Time: 090909 4:34:28
# User@Host: sparty[sparty] @ [localhost]
# Query_time: 18 Lock_time: 0 Rows_sent: 5 Rows_examined: 52830
select * from test;
# Time: 090909 14:04:24
# User@Host: sparty[sparty] @ [localhost]
# Query_time: 20 Lock_time: 0 Rows_sent: 10 Rows_examined: 2500284
select * from test2;
每产生一条慢查询记录一行,分析起来不直观,也无法进行统计。mk-query-digest能对slow log进行了统计和分析产生报告,可以更具自己的需要,分析出想要的结果。例如
mk-query-digest –limit 2 –select Query_time,Lock_time,Rows_sent,Rows_examined,ts slow.log \
|grep -v [...]
使用Mysql的小技巧总结
Leave a Comment2009年09月02日 作者: 大头刚
使用Mysql也很长一段时间了,在使用的过程中遇到过各种各样的问题,有些看上去很小的问题,在解决的过程中却花了很长时间,解决后才发现,原来这样简单。所以总结了一些经验和技巧,把它写出来,希望对读者能有所帮助,少走弯路。
1. binary
BINARY不是函数,是类型转换运算符,它用来强制它后面的字符串为一个二进制字符串,可以理解为在字符串比较的时候区分大小写。举例:
mysql> select * from tjob;
+——-+
| title |
+——-+
| 11 |
| 22 |
| 33 |
| aa |
| bb |
| cc |
| AA |
| BB | [...]
Mysql里SQL调优公式及案例
1 Comment2009年08月27日 作者: 大头刚
SQL调优公式T=S/V (此公式来源于互联网,本文只是引用)
S指sql所需处理的资源总量,V指sql单位时间所能处理的资源量,T自然就是SQL执行所需时间了。
这个公式很简单,调优的目标是减少T,T=S/V,很简单的数学题,要减小值,那就只能是减小分子,或者是增大分母了。那么调整的对象自然就要放到这里的S和V上,所以调优的方法就是围绕减少S和增大V。
增大V,在硬件设备不变、参数不变的情况下,能控制的似乎不太多?
减少S(sql所需访问的资源总量),这通常是调优工作的重中之重,SQL调优的主要目的就是围绕着如何减少S在进行。在Mysql里,我觉得就是减少rows值,一条SQL执行所读写的rows数直接影响到SQL的执行时间。
下面举一个我在调优mysql查询的例子,需求是需要查出被点击数最大的16篇文章记录,sql如下:
mysql> select uid from test where status=1 order by today_hit desc limit 16;
+———-+
| uid |
+———-+
| 22380047 |
| 6264708 |
| 17318093 |
| 3412287 |
| 21542034 |
| 21542034 |
| 16929428 |
| 16929428 |
| 11994313 |
| 12234372 |
| 21938539 [...]
Mysql管理必备工具Maatkit详解之十一(mk-table-checksum)
Leave a Comment2009年08月19日 作者: 大头刚
mk-table-checksum - 检查数据库复制模式里,master和slave的表是否一致,安装方法可以参考这里。
mysql在5.1之前,其replication都是采用的STATEMENT模式,对表的数据是否一致要求并不严格,所以对数据一致性要求比较严格的应用,定期检查数据一致性是很有必要的,mk-table-checksum 是一个很不错的检查工具。
例如:
我要检查master=192.168.0.1,slave=192.168.0.2的两台mysql的test库里的test表是否一致,命令如下:
mk-table-checksum h=192.168.0.1,u=sg,p=sg109504 h=192.168.0.2,u=sg,p=xxxx -d test -t test
DATABASE TABLE CHUNK HOST ENGINE COUNT CHECKSUM TIME WAIT STAT LAG
test test 0 192.168.0.1 MyISAM [...]
Mysql管理必备工具Maatkit详解之十(mk-parallel-restore)
Leave a Comment2009年07月27日 作者: 大头刚
mk-parallel-restore - Load files into MySQL in parallel. 安装方法可以参考这里。
在上一篇介绍了mk-parallel-dump并行备份,会把mysql的按照database模式,每个表都生成一个单独的备份文件,并统一在你指定的目录。
mk-parallel-restore其实就是mk-parallel-dump的反向操作,也会同时启用4个mysql进程去进行恢复,默认优先恢复大表。
使用起来很简单。例如:
mk-parallel-restore -u -p -h /u01/backup/bk_mysql_20090724
如果dump的时候指定了–tab,这里也加上–tab参数
mk-parallel-restore -u -p -h –tab /u01/backup/bk_mysql_20090724
这里需要注意一下,恢复的时候,如果恢复库没有备份库的database需要提前手工创建,mk-parallel-restore不会自动创建。否则会报错
gzip: stdout: Broken pipe
Issuing rollback() for database handle being DESTROY’d without explicit disconnect().
DBD::mysql::db do failed: Unknown database ‘xxxxxx’ at /usr/bin/mk-parallel-restore line 1778.
ok,在看下其他的参数。
mk-parallel-restore –help
mk-parallel-restore loads files into MySQL in parallel. For more [...]



