1

我正在从 Heroku Bamboo 堆栈升级到 Cedar 堆栈。我正在按照这些说明进行升级,并按照这些说明进行 Postgres 传输。

我拍摄了 DB_1 的快照,然后将其还原到 DB_2。然后,为了检查一切顺利,我heroku pg:info在两个应用程序上运行,它显示 DB_1 有 7494 行,而 DB_2 有 7772 行。

为什么 DB_2 中还有近 300 行,即使它是来自 DB_1 的数据的直接副本,没有任何更改?

我试过heroku restart了,但情况仍然存在。根据pg:infoDB_1 is runningPostgres 9.1.9和 DB_2 is running Postgres 9.2.4,我不知道这是否有区别。

我也尝试运行这个 SQL 查询,它还报告了 DB_1 中与 DB_2 不同的行数:

 SELECT sum(reltuples) from pg_class where relname IN (SELECT c.relname
 FROM pg_catalog.pg_class c
 LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
 WHERE c.relkind = 'r'
 AND n.nspname <> 'pg_catalog'
 AND n.nspname <> 'information_schema'
 AND n.nspname !~ '^pg_toast'
 AND pg_catalog.pg_table_is_visible(c.oid))
4

1 回答 1

3

Heroku 可能使用 PostgreSQL pg_stat 表中的统计抽样来估计行数,因此它不会与数据库当前的确切行数完全匹配。

ANALYZE,可能在增加 之后default_statistics_target,可能会改变报告的结果。

于 2013-05-24T00:16:30.167 回答