MySql SQL Statement Performance Test

风行水上 @ 2011-12-03 10:17:51
标签:

    在对SQL语句进行优化和分析的过程中,有时会想测量SQL语句的查询效率。本文主要是针对MySql数据库的探讨。

    为了使测量结果尽可能精确,下面的条件是值得先行考虑的,虽然并不是必须:

    • 没有使用持久链接(Persistant Connection)
    • 尽量避免网络链接,即和数据库server在同一台机器上进行测试
    • 没有别的进程使用被测的数据库,主要是指对数据表的锁定(row/table locks)
    • 机器上没有其他占用较多机器资源的进程(heavy process)
    • 其他影响因素....

    借助SQL命令查询

    禁用查询缓存(Query Cache)

    查询缓存可能会导致被测的SQL语句没有实际被执行。用下面的语句禁用查询缓存:

    SET SESSION query_cache_type = OFF
    
    ### 或者在查询语句中禁用查询缓存
    SELECT SQL_NO_CACHE * FROM tbl_name;
    

    使用函数BENCHMARK

    为了避各单次查询中的偶然因素,BENCHMARK函数允许你执行一条SQL语句指定次数以统计执行时间。用法如下:

    SELECT BENCHMARK(500, (SELECT html FROM html_db LIMIT 1);
    

    BENCHMARK函数要求补测的SQL语句只返回一行记录,并且这条记录只能有一列。

    用SHOW STATUS查看结果

    执行查询之前和之后,可以用"SHOW STATUS"语句来显示服务器状态,并比较它们的不同。

    借助工具 mysqlslap

    mysqlslap是MySql自带的一个用于数据库服务器压力测试的工具。

    TODO

    参考资源

    标签:

      分享到:
      comments powered by Disqus

      23/27ms