MySQL 优化之 Slow Query Log
时间:03-14
来源:blog
点击:
从一种 DB 转到另一种 DB 的最初阶段,往往要找自己原来熟悉的工具。拿我自己来说,算是有点 Oracle 的经验,有时被问及 MySQL 优化的东西,就希望找到 MySQL 上类似 Oracle 等待接口或是 SQL Trace 之类的工具,多少有些路径依赖。
Slow Query Log 是 MySQL 的基本 Log 之一。这个优化思路基本上是用 SQL 执行时间 作基准(类似 Oracle 基于等待的优化思想。另外,在 MySQL 中我还没发现根据 逻辑 IO 作基准的方法,这样对于存储层的性能控制就有些不好入手)具体如何操作我就不赘述了。默认情况下,在产品环境中如果临时决定起用该特性是影响可用性的。另外,旧一些的版本时间粒度相对比较大(最小 1 秒钟)。可以通过 Microslow Patch 来解决这个问题(粒度可以到百万分之一秒)。这个 Patch 在开发测试环境也很有用武之地,有些公司的线下开发环境数据不能达到产品环境的规模,如果也把眼光放到抓取执行时间大于 1 秒钟的 SQL 无疑会漏掉很多潜在的问题语句。
在 MySQL 5.0 之后,利用 --log-queries-not-using-indexes 参数可以抓到未使用索引的慢查询。为什么 SQL 没有使用索引,这恐怕是开发 DB 应用的朋友要问的最常见的问题之一。
关于 Slow Query Log 的分析,MySQL 自带有 mysqldumpslow 分析工具,除此之外,也有包装的更好(?)一点的开源工具,比如 MyProfi,以及 Mysql-log-filter。
Sun 收购 MySQL 之后,相信很多人都会对 Dtrace 能否集成到 MySQL 比较感兴趣。其实原来就有人利用 Dtrace 来分析 MySQL 性能问题。不过这个方式门槛还比较高,也没有形成比较清晰的方法论。
网上关于 MySQL 优化的文章汗牛充栋,我这篇就当是读书笔记吧。
Slow Query Log 是 MySQL 的基本 Log 之一。这个优化思路基本上是用 SQL 执行时间 作基准(类似 Oracle 基于等待的优化思想。另外,在 MySQL 中我还没发现根据 逻辑 IO 作基准的方法,这样对于存储层的性能控制就有些不好入手)具体如何操作我就不赘述了。默认情况下,在产品环境中如果临时决定起用该特性是影响可用性的。另外,旧一些的版本时间粒度相对比较大(最小 1 秒钟)。可以通过 Microslow Patch 来解决这个问题(粒度可以到百万分之一秒)。这个 Patch 在开发测试环境也很有用武之地,有些公司的线下开发环境数据不能达到产品环境的规模,如果也把眼光放到抓取执行时间大于 1 秒钟的 SQL 无疑会漏掉很多潜在的问题语句。
在 MySQL 5.0 之后,利用 --log-queries-not-using-indexes 参数可以抓到未使用索引的慢查询。为什么 SQL 没有使用索引,这恐怕是开发 DB 应用的朋友要问的最常见的问题之一。
关于 Slow Query Log 的分析,MySQL 自带有 mysqldumpslow 分析工具,除此之外,也有包装的更好(?)一点的开源工具,比如 MyProfi,以及 Mysql-log-filter。
Sun 收购 MySQL 之后,相信很多人都会对 Dtrace 能否集成到 MySQL 比较感兴趣。其实原来就有人利用 Dtrace 来分析 MySQL 性能问题。不过这个方式门槛还比较高,也没有形成比较清晰的方法论。
网上关于 MySQL 优化的文章汗牛充栋,我这篇就当是读书笔记吧。
Sun MySQL Slow Query Log 相关文章:
- 64位线程!SUN 富士通扩展SPARC产品线(03-13)
- 风河与Sun联合推出基于UltraSPARC(R) T2处理器的电信级Linux平台(04-20)
- Sun推出全集成、高性能闪存阵列(09-20)
- 2006服务器市场Sun一枝独秀 增长速度超对手(01-23)
- Marvell获Sun授权,着手开发多线程10Gig E产品(03-13)
- 服务器市场冷却 多核处理器业务开始升温 (04-15)