基准测试和寻找性能瓶颈---high performance mysql读书笔记之一

OLTP, TCP测试,联机事务的处理性能。有DBT2(我没运行成功,它的手册中最后需要执行的文件我用find找了下也没有)
重视暖机过程和测试数据:这个是主要是为了一些缓存内容
单组件测试工具
mysqlslap
sysbench
dbt2
mysql benchmark suite(sql-bench)
super smack(支持多用户复杂测试,推荐使用)


性能分析(profilng)
使用JDBC驱动或者PHP的类在程序中嵌入mysql查询执行时间的代码。
还有就是使用mysql的慢日志查询


使用mysql-pathes 来将long_query_time时间粒度降低到毫秒。但是5.1版本之前需要自己手动进行编译进去。
将long_query_time = 0 可以记录所有的查询
手动编译这个补丁还能获得其它的慢查询的信息: 查询的连接ID,查询缓存,联接类型,临时表,排序,以及innodb的一些信息。
慢日志分析工具:
mysqldumpslow
mysql_slow_log_filer
mysql_slow_log_parser
mysqlsla

 mysqldumpslow -s c -t 20 -g select ../temp/db100-slow.log 

显示数量最多的前20条select
-v verbose
-d debug
-s ORDER what to sort by (t, at, l, al, r, ar etc), ‘at’ is default
-r reverse the sort order (largest last instead of first)
-t NUM just show the top n queries
-a don’t abstract all numbers to N and strings to ‘S’
-n NUM abstract numbers with at least n digits within names
-g PATTERN grep: only consider stmts that include this string
-h HOSTNAME hostname of db server for -slow.log filename (can be wildcard),
default is ‘
‘, i.e. match all
-i NAME name of server instance (if using mysql.server startup script)
-l don’t subtract lock time from total time
mysql_slow_log_parser的使用方法很简单


mysql性能分析工具
mysqladmin extended -r -i 10 #每10秒刷新一次
| grep Com_* # 服务器正在执行的命令
| grep Created_* #在查询执行期间创建的临时表和文件
| Bytes_received 和 Bytes_sent #来往之间的流量
| grep Handler_* #在存储引擎操作
| grep Select_* # 不同类型的连接执行计划
| grep Sort_* #几种排序信息
show profile #只针对5.0.37有补丁支持
mysqlreport
tuning-primer.sh
2010-04-22
Best regards
Timo Seven

twitter: https://twitter.com/zauc ######也请翻墙浏览####################
UNIX System Admin & MySQL DBA