Estou considerando um modelo em que uso PostgreSQL COPY para copiar dados de um arquivo para uma tabela. Eu queria saber que tipo de desempenho esperar em hardware de ponta. Um intervalo em MB/s seria bom para que eu possa começar a estimar. Se você apenas souber a resposta em outros bancos de dados, eu estaria interessado em comparar.
Isso é um pouco difícil de dizer, o que é hardware de ponta?
Usar o Oracle no armazenamento EMC de 60 MB/s é certamente possível. Usar o mesmo antigo Oracle no exadata pode ser um pouco mais rápido, 300 MB/s e às vezes mais alto, novamente, dependendo da configuração. Um rack completo é mais rápido que meio rack ...
@David, é quase certo que você será vinculado ao IO em seu servidor de banco de dados, com as seguintes advertências (comumente entendidas):
COPY
usosFUNCTION
s ouTRIGGER
s ouFOREIGN KEY
s, espere um desempenho mais lentoINDEX
es antesCOPY
de seus dados, os dados serão adicionados aoINDEX
, o que tornará as coisas mais lentas.A maneira mais rápida de
COPY
carregar dados no PostgreSQL é por meioCOPY
de uma tabela que não possuiINDEX
es e possuifsync = off
, echeckpoint_segments = 50
(ou pelo menos algum valor que não seja o padrão de 3) empostgresql.conf
. Eu prefiro a seguinte estratégia:BEGIN
COPY
...CREATE INDEX
my_tbl_idx ON my_tblCOMMIT
ANALYZE my_tbl
Eu adiciono explicitamente o
ANALYZE
depois doCOMMIT
porque normalmente não quero esperar parapg_autovacuum
começar.