mysql服务器分析补丁

http://ebergen.net/wordpress/2010/09/28/cool-stuff-from-tivos-mysql-patch/

虽然TiVo的mysql补丁不如google和facebook的补丁出名,但还是有一定可取之处的。
尤其是监视mysql的状态与查询优化。monitoring and query optimization。
下载地址:

http://www.tivo.com/mysql/

TiVo改动了mysqld_safe,mysqldump,以及google补丁中的”show xxxx”语句。

mysqld_safe的改动

–fallback-ledir

mysqld_safe中ledir用来设置mysqld所在的目录。
当mysqld挂掉的时候,–fallback-ledir会切换ledir的设置,从而启动一个新的mysqld。。。
如果您要把一个测试版的mysqld放到线上来应用,那么很有必要用–fallback-ledir来设置一个稳定版的mysqld,以防万一吧。

–crash-script

当mysqld挂掉的时候,会执行–crash-script设置的脚本。

mysqldump的改动

–slave-data

在mysqldump出的文件中记录了slave server中的replication position。
适用于以下情况:
从某台slave服务器上备份数据,然后把数据恢复到另外一台slave上面。

–log-pos-comment

以注释的方式记录了 slave server和master server中的replication positions。
适用于手工恢复备份的情况。

–no-bin-log

mysqldump会把

SET SQL_LOG_BIN=0;

加入到导出的sql文件顶部。
This makes dump files import only on the machine and not be written to the replication stream
这样在master server恢复数据的时候,不写入二进制日志, 这些导入的数据就不会进入slave server。

SHOW TABLE_STATISTICS and SHOW INDEX_STATISTICS

Row stats in the TiVo patch are tracked at 3 different levels, per query, per session, and globally.
google补丁中只是在globally范围内对Row stats进行统计。

mysql> SELECT * FROM t;
+------+
| t    |
+------+
|    1 |
|    2 |
|    3 |
+------+
3 rows IN SET (0.00 sec)
 
mysql> SHOW table_statistics;
+--------+-----------+--------------+-------------------------+
| TABLE  | Rows_read | Rows_changed | Rows_changed_x_#indexes |
+--------+-----------+--------------+-------------------------+
| test.t |         3 |            0 |                       0 |
+--------+-----------+--------------+-------------------------+
1 row IN SET (0.00 sec)

如果相同的语句再执行一次,show table_statistics的结果与上面相同。
但是show session table_statistics 与 show global table_statistics就不同了。

mysql> SELECT * FROM t;
+------+
| t    |
+------+
|    1 |
|    2 |
|    3 |
+------+
3 rows IN SET (0.00 sec)
 
mysql> SHOW table_statistics;
+--------+-----------+--------------+-------------------------+
| TABLE  | Rows_read | Rows_changed | Rows_changed_x_#indexes |
+--------+-----------+--------------+-------------------------+
| test.t |         3 |            0 |                       0 |
+--------+-----------+--------------+-------------------------+
1 row IN SET (0.00 sec)
 
mysql> SHOW session table_statistics;
+--------+-----------+--------------+-------------------------+
| TABLE  | Rows_read | Rows_changed | Rows_changed_x_#indexes |
+--------+-----------+--------------+-------------------------+
| test.t |         6 |            3 |                       3 |
+--------+-----------+--------------+-------------------------+
1 row IN SET (0.00 sec)

Rows_changed中的3,是之前在同一个session中创建此表,并且insert 了三条语句。

它也支持like语句,与show variables类似。

mysql> SHOW global table_statistics LIKE 'mysql%';
+----------------------+-----------+--------------+-------------------------+
| TABLE                | Rows_read | Rows_changed | Rows_changed_x_#indexes |
+----------------------+-----------+--------------+-------------------------+
| mysql.proc           |       293 |            4 |                       4 |
| mysql.user           |  10237928 |            2 |                       2 |
| mysql.help_category  |        36 |            0 |                       0 |
| mysql.help_topic     |       463 |            0 |                       0 |
| mysql.help_relation  |       733 |            0 |                       0 |
| mysql.help_keyword   |       381 |            0 |                       0 |
| mysql.db             |  10964886 |            0 |                       0 |
+----------------------+-----------+--------------+-------------------------+
8 rows IN SET (0.00 sec)

更加牛的是,出现slow query的时候,TiVo补丁会把当时的Row stats与sql语句一起写入slow query log:

# Time: 100725 14:39:33
# User@Host: tivo[tivo] @ localhost []
# Query_time: 3  Lock_time: 0  Rows_sent: 3  Rows_examined: 3
# Row_Stats: test.t:rows_read=3,rows_changed=0,rows_changed_x_indexes=0;
# Index_Stats:
SELECT *, sleep(1) FROM t;

此外,TiVo补丁还对google补丁和Percona补丁中的innodb部分进行了改进。不表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值