我一直在分析我的应用程序的一些部分,我发现了这一点
在执行完全相同的脚本时,PgAdmin3明显快于psql.
我正在使用unix套接字,Ubuntu 12.04和 Postgresql 9.1以及pgadmin3 v1.14.我有一个简单的脚本,如下所示:
在执行完全相同的脚本时,PgAdmin3明显快于psql.
我正在使用unix套接字,Ubuntu 12.04和 Postgresql 9.1以及pgadmin3 v1.14.我有一个简单的脚本,如下所示:
BEGIN INSERT INTO key_value(section,key,value) VALUES('section','key1','value'); .... INSERT INTO key_value(section,'key10000','value'); COMMIT;
这是表格:
CREATE TABLE key_value ( key text NOT NULL,value text,CONSTRAINT key_value_pkey PRIMARY KEY (section,key ) ) WITH ( OIDS=FALSE );
此脚本中有10000个插入.在pgadmin3中执行它需要大约0.5秒,在psql中执行它需要2.5~3.5秒.两者都包含在一个事务中,所以应该没有什么区别.在重新创建表,完全真空等结果是一致的.登录Postgresql服务器显示postgres在psql中执行时为每个insert语句执行日志,但在从pgadmin3执行时只有一个日志.
psql执行完成以下操作:
psql -n -t -f p.sql -o/dev/null
并且还测试了
psql -n -t -1 -f p.sql -o/dev/null
我的问题是为什么psql这么慢以及为什么我们postgresql在一个客户端中记录每个语句但在另一个客户端只记录整个事务,而且有一个简单的修复psql.
编辑只是为了澄清,我记录的持续时间不是声明:
2012-10-02 12:20:32 CEST LOG: duration: 0.283 ms .... 2012-10-02 12:20:35 CEST LOG: duration: 0.285 ms 2012-10-02 12:20:35 CEST LOG: duration: 0.291 ms 2012-10-02 12:20:35 CEST LOG: duration: 0.279 ms 2012-10-02 12:20:35 CEST LOG: duration: 0.284 ms 2012-10-02 12:20:35 CEST LOG: duration: 0.279 ms 2012-10-02 12:20:35 CEST LOG: duration: 0.299 ms .... 2012-10-02 12:20:36 CEST LOG: duration: 5.779 ms
使用pgadmin3执行时:
2012-10-02 12:23:21 CEST LOG: duration: 532.695 ms
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。