2015-11-09 3 views
0

Я пытаюсь создать индекс на столе с несколькими миллионами записей. К сожалению, всякий раз, когда я пытаюсь это сделать, процессор поднимается, и я должен убить его примерно на 90% загрузки процессора, потому что в противном случае это может повредить производство.Создание частичного индекса занимает CPU

Что я могу сделать для создания индекса? Это частичный индекс. Я уже установил maintenance_work_mem на 2 ГБ. Я не могу изменить checkpoint_segments во время работы базы данных. CREATE INDEX CONCURRENTLY будет быстрее загружать базу данных.

Итак, что еще я мог сделать?

+0

Вы можете настроить процесс базы данных на более низкий приоритет процесса. Вы получите ту же загрузку процессора, но она будет вести себя намного лучше с точки зрения совместного использования. Для этого вам может потребоваться запустить PostgreSQL вручную из командной строки и использовать 'nice' с подходящим приоритетом во время сборки. – 0xCAFEBABE

+0

Что именно использует этот 90% процессор? –

ответ

1

Создание индекса, конечно же, не может поразить 90% процессор на современной многоядерной системе (главным образом потому, что использует только одно ядро). Скорее всего, вы блокируете все запросы к таблице. Просим сообщать индекс CONCURRENTLY (manual).

Смежные вопросы