|
|
|
Мозголомная задачка на тюнинг COPY
|
|||
|---|---|---|---|
|
#18+
Есть небольшая табличка Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Количество записей - 52598424 Размер - 5870 MB По системе: памяти 2 GB, INTEL CORE 2 6300 @1.86GHz L2 Cashe 2MB, OS ubuntu 14.04 lts PostgreSQL 9.4.5 on x86_64-unknown-linux-gnu, compiled by gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2, 64-bit Кое что из настроек #------------------------------------------------------------------------------ # RESOURCE USAGE (except WAL) #------------------------------------------------------------------------------ # - Memory - shared_buffers = 512MB # min 128kB # (change requires restart) huge_pages = try # on, off, or try # (change requires restart) temp_buffers = 8MB # min 800kB work_mem = 4MB # min 64kB maintenance_work_mem = 2024MB # min 1MB #autovacuum_work_mem = -1 # min 1MB, or -1 to use maintenance_work_mem max_stack_depth = 2MB # min 100kB dynamic_shared_memory_type = posix # the default is the first option # supported by the operating system: # posix # sysv # windows # mmap # use none to disable dynamic shared memory # - Disk - #temp_file_limit = -1 # limits per-session temp file space # in kB, or -1 for no limit # - Kernel Resource Usage - #max_files_per_process = 1000 # min 25 # (change requires restart) #shared_preload_libraries = '' # (change requires restart) # - Cost-Based Vacuum Delay - #vacuum_cost_delay = 0 # 0-100 milliseconds #vacuum_cost_page_hit = 1 # 0-10000 credits #vacuum_cost_page_miss = 10 # 0-10000 credits #vacuum_cost_page_dirty = 20 # 0-10000 credits #vacuum_cost_limit = 200 # 1-10000 credits # - Background Writer - #bgwriter_delay = 200ms # 10-10000ms between rounds #bgwriter_lru_maxpages = 100 # 0-1000 max buffers written/round #bgwriter_lru_multiplier = 2.0 # 0-10.0 multipler on buffers scanned/round # - Asynchronous Behavior - #effective_io_concurrency = 1 # 1-1000; 0 disables prefetching #max_worker_processes = 8 wal_level = archive # minimal, archive, hot_standby, or logical # (change requires restart) fsync = on # turns forced synchronization on or off synchronous_commit = on # synchronization level; # off, local, remote_write, or on wal_sync_method = fsync # the default is the first option # supported by the operating system: # open_datasync # fdatasync (default on Linux) # fsync # fsync_writethrough # open_sync full_page_writes = on # recover from partial page writes wal_log_hints = off # also do full page writes of non-critical updates # (change requires restart) wal_buffers = 512kB #-1 # min 32kB, -1 sets based on shared_buffers # (change requires restart) wal_writer_delay = 200ms # 1-10000 milliseconds commit_delay = 0 # range 0-100000, in microseconds commit_siblings = 5 # range 1-1000 # - Checkpoints - checkpoint_segments = 128 # in logfile segments, min 1, 16MB each #checkpoint_timeout = 5min # range 30s-1h #checkpoint_completion_target = 0.5 # checkpoint target duration, 0.0 - 1.0 #checkpoint_warning = 30s # 0 disables WAL пишутся на отдельном физическом диске Прибил не очень нужные индексы, скорость возросла с безумно медленной до 2 минут на вставку, но всё равно неприемлемой. COPY занимает по минуте примерно. Порция 5 тысяч записей весит копейки, тормозить не должны бы. Вопрос - как можно уменьшить время записи до приемлемых значений? Менял checkpoint_segments, maintenance_work_mem, work_mem,wal_buffers - особо эффекта не заметил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 12:12 |
|
||
|
Мозголомная задачка на тюнинг COPY
|
|||
|---|---|---|---|
|
#18+
ОКТОГЕНWAL пишутся на отдельном физическом диске Прибил не очень нужные индексы, скорость возросла с безумно медленной до 2 минут на вставку, но всё равно неприемлемой. Порция 5 тысяч записей весит копейки, тормозить не должны бы. Вопрос - как можно уменьшить время записи до приемлемых значений? Менял checkpoint_segments, maintenance_work_mem, work_mem,wal_buffers - особо эффекта не заметил. fixed ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 12:14 |
|
||
|
Мозголомная задачка на тюнинг COPY
|
|||
|---|---|---|---|
|
#18+
ОКТОГЕН, а внешних ключей/триггеров никаких нет? покажите вывод \d+ tmp_tbl_test_size ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 12:40 |
|
||
|
Мозголомная задачка на тюнинг COPY
|
|||
|---|---|---|---|
|
#18+
Alexius, Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 12:57 |
|
||
|
Мозголомная задачка на тюнинг COPY
|
|||
|---|---|---|---|
|
#18+
Кстати, они заведомо не влазят в оперативку. Попробую вообще без них. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 12:58 |
|
||
|
Мозголомная задачка на тюнинг COPY
|
|||
|---|---|---|---|
|
#18+
ОКТОГЕН, а какой размер у индексов? maintenance_work_mem = 2024MB # min 1MB - это как-то много для 2ГБ машины. вставку в таблицу никто не может блокировать? select * from pg_stat_activity where waiting; ничего не показывает во время попытки записи? покажите еще вывод iostat -d -x 1 во время copy. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 13:42 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=39160024&tid=1997478]: |
0ms |
get settings: |
11ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
169ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
| others: | 252ms |
| total: | 540ms |

| 0 / 0 |
