加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

为什么PostgreSQL 9.2在我的测试中比9.1慢?

发布时间:2020-12-13 15:54:26 所属栏目:百科 来源:网络整理
导读:我已经从PostgreSQL 9.1.5升级到9.2.1: "PostgreSQL 9.1.5 on x86_64-unknown-linux-gnu,compiled by gcc (GCC) 4.4.6 20120305 (Red Hat 4.4.6-4),64-bit""PostgreSQL 9.2.1 on x86_64-unknown-linux-gnu,64-bit" 它与默认的PostgreSQL配置文件在同一台机
我已经从PostgreSQL 9.1.5升级到9.2.1:

"PostgreSQL 9.1.5 on x86_64-unknown-linux-gnu,compiled by gcc (GCC) 4.4.6 20120305 (Red Hat 4.4.6-4),64-bit"
"PostgreSQL 9.2.1 on x86_64-unknown-linux-gnu,64-bit"

它与默认的PostgreSQL配置文件在同一台机器上(只更改了端口).

出于测试目的,我有简单的表格:

CREATE TEMP TABLE test_table_md_speed(id serial primary key,n integer);

我测试使用的功能:

CREATE OR REPLACE FUNCTION TEST_DB_SPEED(cnt integer) RETURNS text AS $$
DECLARE
    time_start timestamp;
    time_stop timestamp;
    time_total interval;
BEGIN
    time_start := cast(timeofday() AS TIMESTAMP);
    FOR i IN 1..cnt LOOP
        INSERT INTO test_table_md_speed(n) VALUES (i);
    END LOOP;
    time_stop := cast(timeofday() AS TIMESTAMP);
    time_total := time_stop-time_start;

    RETURN extract (milliseconds from time_total);
END;
$$LANGUAGE plpgsql;

我打电话给:

SELECT test_db_speed(1000000);

我看到奇怪的结果.对于PostgreSQL 9.1.5,我得到“8254.769”,对于9.2.1,我得到:“9022.219”.这意味着新版本更慢.我找不到原因.

任何想法为什么这些结果不同?

解决方法

你说两者都在同一台机器上.据推测,较新版本的数据文件稍后添加.后来的文件往往更靠近拼盘的中心,访问速度较慢.

在Greg Smith’s book on PostgreSQL performance中有一个很好的部分,包括测量和绘制效果的方法.通过巧妙地使用dd实用程序,您可以对每个位置的相对速度进行一些临时测试,至少对于读取而言.

9.2版本通常比早期版本更好地扩展到大量内核,尽管在某些基准测试中单独运行的单个查询的性能略有下降.不过,我没有看到任何基准显示出这个大的附近的影响;我敢打赌它是驱动器上的位置的结果 – 只是表明做好基准测试是多么困难.

更新:在9.2.0中进行的更改以提高某些查询的性能,使其他一些查询的性能更差.最终确定应该还原此更改,这发生在9.2.3版本中;所以在升级到维护版本后检查性能是值得的.一个正确的修复,已被确认修复问题,修复后的补丁修复而不会导致回归,将包含在9.3.0中.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读