为什么 pg_restore 在 Ubuntu 上比 Windows 花费更长的时间?

ber*_*kpi 5 postgresql windows ubuntu

我生成了一个 21 MB 左右的转储文件:

pg_dump --format=tar --verbose --file=database.backup mydatabase
Run Code Online (Sandbox Code Playgroud)

当我在 Windows 上导入此文件时:

pg_restore --dbname mydatabase --verbose database.backup
Run Code Online (Sandbox Code Playgroud)

需要1个小时才能完成。

在 Ubuntu 10.10 64 位机器上做同样的事情,大约需要 7 个小时!

当然,我说的是相同的硬件规格(Dell Studio XPS)。相同的 RAM、CPU 等。

在这两种情况下,我都使用 PostgreSQL 8.4.7 的开箱即用配置。

也许发行版配置不同......也许只是windows发行版正在做的一些优化?


额外信息:在 Windows 7 -> NTFS 上。在 Ubuntu 10.10 -> ext4


当我做

pg_dump --format=tar --verbose --file=workspace/work/dumps/loaded.backup mydb
Run Code Online (Sandbox Code Playgroud)

我只需要5秒!如果我在一个空的新数据库上恢复:

pg_restore --dbname mydb-2 --verbose workspace/work/dumps/loaded.backup
Run Code Online (Sandbox Code Playgroud)

我只需要10秒。(问题解决了?...几乎)似乎数据库人员使用不同的选项导出了原始转储。也许 --inserts 选项?

使用原始转储的 Windows 和 Ubuntu 之间的巨大差异仍然困扰着我。对此有何想法?

小智 -1

尝试在 postgresql.conf 中关闭 autovacuum。

如果这没有帮助,请尝试对光盘进行碎片整理...

另外,我想知道这两种情况下的文件系统是什么?