追踪MySQL中长时间运行的事务

https://github.com/yoshinorim/MySlowTranCapture 获取执行时间超过 milliseconds事务语句的工具; 很多时候我们需要追踪事务的执行情况以判定应用程序的操作行为, 比如启了事务, 却忘记提交而造成InnoDB事务的History List不断增大. 这是很复杂的场景, 因为很难找到一个有效的方式来识别是那种sql引起的这种问题, 追踪一个长时间运行的事务不像记录一条慢查询语句, 比如执行以下事务语句: ysql root@[localhost:s3306 test] > begin; Query OK, 0 rows affected (0.00 sec) mysql root@[localhost:s3306 test] > insert into b1…

Continue reading

MyISAM表转为InnoDB表注意事项

MyISAM转InnoDB表注意事项 基于引擎存储格式和索引组织方式的不同, 表从MyISAM引擎转换到InnoDB引擎需要注意以下事项: 1. AUTO_INCREMENT列不在多列索引的首位的MyISAM表不能转换 见 http://dev.mysql.com/doc/refman/5.5/en/replication-features-auto-increment.html , 包含AUTO_INCREMENT列的InnoDB表, innodb 表中只能设置1个auto 属性的列, 且 auto 列必须定义为 key, 可以是单 key, 也可以是组合 key, 如果是组合key, auto 列必须在最左边; 比如 MyISAM 支持 idx_name_id(`name`, `auto_id`) 的组合索引, 但是…

Continue reading

innodb buffer pool 过小引起查询更新缓慢症状分析

场景: 业务(读写分离)的流量增大,使得MySQL Server压力增大很多, 表现为iostat显示频繁的写操作, master(只写)中show processlist出现大量的update线程, slave出现大量的select 线程; 表设计和索引相对正常(尽管整体的设计显得不合理,不过对于sql语句及表而言,尽管存在冗余的索引等信息,不过对于业务而言显得可以胜任); 分析: 1. master(只写说明): master说明:

Continue reading