Dan*_*kov -1 postgresql database-performance
我正在尝试加快 Postgresq 插入速度。我看到很多文章都在使用 fsync、synchronous_commit 等。我设置了参数以获得最快的写入速度,而且我仍然听到 HDD 每次插入和数据库服务器肯定会执行 IO,就像缓冲区总是满的一样。我错过了什么?
create unlogged table ...;
-- just one insert takes about 400 ms
Run Code Online (Sandbox Code Playgroud)
postgresq 配置
wal_level = minimal
fsync = off
synchronous_commit = off
full_page_writes = off
wal_compression = off
wal_buffers = 128MB
wal_writer_delay = 1000ms
wal_writer_flush_after = 4MB
Run Code Online (Sandbox Code Playgroud)
并不是每次都会INSERT导致 I/O,而是每次提交都会导致 I/O。除此之外,检查点执行大部分 I/O(如果shared_buffers足够大)。
以下是加快加载速度的技巧:
增加max_wal_size以减少不必要的检查点
看看那shared_buffers不是太小
INSERT在单个事务中使用多个s
使用准备好的语句更快
用来COPY最快
COPY (FREEZE)进入在同一事务中创建或截断的表(或分区提示)以加快速度
让你的手指远离fsync,它必须留下来on。
| 归档时间: |
|
| 查看次数: |
551 次 |
| 最近记录: |