David Asked: 2011-06-01 10:49:38 +0800 CST2011-06-01 10:49:38 +0800 CST 2011-06-01 10:49:38 +0800 CST 我应该期望在高性能计算机上以多快的速度加载数据? 772 我正在考虑使用 PostgreSQL COPY 将数据从文件复制到表中的模型。我想知道在高端硬件上可以期待什么样的性能。以 MB/s 为单位的间隔会很好,所以我可以开始估算。如果您只知道其他数据库上的答案,我很乐意进行比较。 postgresql performance 2 个回答 Voted Best Answer ik_zelf 2011-06-01T11:46:23+08:002011-06-01T11:46:23+08:00 这个有点难说,什么是高端硬件? 在 EMC 存储 60MB/s 上使用 Oracle 肯定是可能的。在 exadata 上使用相同的旧 Oracle 可能会稍快一些,达到 300MB/s,有时甚至更高,具体取决于配置。全机架比半机架快... Sean 2011-06-01T12:28:50+08:002011-06-01T12:28:50+08:00 @David,您几乎肯定会在您的数据库服务器上受到 IO 限制,但需要注意以下(通常理解的)警告: 如果您的目标COPY使用FUNCTIONs 或TRIGGERs 或FOREIGN KEYs,预计性能会降低 如果你已经INDEX在你的数据之前创建了 es COPY,数据将被添加到 es 中INDEX,这会减慢速度。 COPY将数据加载到 PostgreSQL的最快方法是通过COPYin 到一个没有INDEXes 和 has的表fsync = off,并且checkpoint_segments = 50(或至少一些不是默认值 3 的值) in postgresql.conf。我更喜欢以下策略: BEGIN `DROP INDEX my_tbl_idx; COPY... CREATE INDEXmy_tbl_idx 开启 my_tbl COMMIT ANALYZE my_tbl ANALYZE我在之后明确添加了,COMMIT因为我通常不想等待pg_autovacuum开始。
这个有点难说,什么是高端硬件?
在 EMC 存储 60MB/s 上使用 Oracle 肯定是可能的。在 exadata 上使用相同的旧 Oracle 可能会稍快一些,达到 300MB/s,有时甚至更高,具体取决于配置。全机架比半机架快...
@David,您几乎肯定会在您的数据库服务器上受到 IO 限制,但需要注意以下(通常理解的)警告:
COPY
使用FUNCTION
s 或TRIGGER
s 或FOREIGN KEY
s,预计性能会降低INDEX
在你的数据之前创建了 esCOPY
,数据将被添加到 es 中INDEX
,这会减慢速度。COPY
将数据加载到 PostgreSQL的最快方法是通过COPY
in 到一个没有INDEX
es 和 has的表fsync = off
,并且checkpoint_segments = 50
(或至少一些不是默认值 3 的值) inpostgresql.conf
。我更喜欢以下策略:BEGIN
COPY
...CREATE INDEX
my_tbl_idx 开启 my_tblCOMMIT
ANALYZE my_tbl
ANALYZE
我在之后明确添加了,COMMIT
因为我通常不想等待pg_autovacuum
开始。