Postgres8.3.3增强版(添加SQL执行信息统计功能)
一直都在从事数据库性能测试方面的工作,遇到过各种各样的性能问题。深感若没有SQL执行信息,数据库性能分析便无从谈起。 利用业余时间修改了Postgres8.3.3的源代码,在其中加入了统计SQL执行信息的功能。它可以显示每条 SQL 语句的执行次数、执行时间、消耗的CPU时间、读cache次数、命中cache 次数。 它可以帮你找到执行时间最长,消耗资源最多的SQL。对于事务处理,如果一条SQL语句在执行时读cache的次数达到了2000以上,极有可能是优化器产生的执行计划太差, 如果你在使用potgres时遇到性能问题,不妨使用一下。 这是一个完整的postgres软件包, 直接解开便可使用。 现在只有Linux 32位版的。 基于的postgres的版本是8.3.3, 使用旧版本的需要升级。 只需要用psql连上数据库,输入命令"dump sql_stats;" 或 "dump sql_stats reset;", 所有SQL语句的执行信息便会被写到一个数据文件中,该数据文件位于子目录sql_dump下面。 假定你的数据库位于目录/home/postgres/database 下,那么你可以在/home/postgres/database/sql_dump下找到该数据文件。 该数据文件的名字以sql_dump打头,后面是文件建立的时间, 如sql_dump_2008_09_24_12_42_25 表示该文件是2008年9月24日12点42分45秒创建的。如果是第一次执行dump sql_stats,它将会将所有的从数据库启动到执行该命令期间运行的 SQL语句的信息导出到外部文件中,否则,它将会将所有的从上次执行dump sql_stats reset命令到本次执行该命令期间运行的SQL语句的信息导出到外部文件中。如果在Linux 下查看该文件,LANG环境变量应设为zh_CN.gb1803(我用的是openSuse 11)。 下面是我的机器上的一个数据文件实例, 其中含有两条SQL语句的执行信息: yan@yan:/home/postgres_bin/database/sql_dump> more sql_dump_2008_09_24_12_42_25 ------------------------------------------------------------------------------------------------- 第1条SQL drop table pxtest1 ; 执行次数:1 读cache次数:103 命中cache次数:103 执行时间: 1661.000000 消耗的CPU时间:0.000000 平均读cache次数:103 平均命中cache次数:103 平均执行时间: 1661.000000 平均消耗的CPU时间:0.000000 ------------------------------------------------------------------------------------------------- 第2条SQL select * from foo where id in ( select id2 from ( select id1 , id2 from bar union select id1 , id2 from bar ) as s ) ; 执行次数:1 读cache次数:0 命中cache次数:0 执行时间: 342.000000 消耗的CPU时间:0.000000 平均读cache次数:0 平均命中cache次数:0 平均执行时间: 342.000000 平均消耗的CPU时间:0.000000 ------------------------------------------------------------------------------------------------- 以第一条SQL为例,第一行显示的是具体的SQL语句,第二行显示的是该语句的执行次数, 第三行显示的是这条语句执行时总的读cache次数、总的命中cache次数、总的执行时间和总的CPU时间。 第四行显示的是平均每次执行的读cache次数、命中cache次数、执行时间和消耗的CPU时间,实际上就是用第三行的值除以SQL语句的执行次数得来的。注意执行时间和CPU时间的单位是0.000001秒,即微秒。 dump sql_stats 与 dump sql_stats reset的区别在于,加上reset以后,所有SQL执行统计信息在被导出到外部文件中后,数据库将会清除掉这些信息,重新开始统计。没有加reset,则所有 SQL执行
文件列表
Postgres8.3.3增强版(添加SQL执行信息统计功能)
(预估有个1134文件)
libpq.a
157KB
libpq.so.5.1
122KB
libecpg.so.6
71KB
libpgtypes.so.3.0
68KB
libecpg_compat.so.3.0
23KB
libpgtypes.a
79KB
libecpg_compat.a
13KB
libecpg_compat.so.3
23KB
libpgtypes.so.3
68KB
libpq.so.5
122KB
暂无评论