В настоящее время я очищаю таблицу с 2 индексами и 250 миллионами активных строк и примерно таким же количеством мертвых строк (или более). Я выполнил команду VACCUM FULL ANALYZE со своего клиентского компьютера (ноутбука) на моем сервере. Он занимался своими делами последние 3-4 дня или около того; Мне интересно, закончится ли это в ближайшее время, потому что у меня много работы!
Сервер оснащен четырехкодовым процессором Xeon 2,66 ГГц, 12 ГБ или ОЗУ и контроллером RAID, подключенным к жестким дискам SAS 2 x 10 К / мин, 146 ГБ в конфигурации RAID 1; это работает Suse Linux. Мне интересно ...
Теперь, во-первых, процесс postmaster VACUUM, похоже, использует только одно ядро. Во-вторых, я не вижу очень высокого отношения ввода-вывода к времени простоя ввода-вывода. В-третьих, из вызова procinfo
я могу экстраполировать, что процесс VACUUM тратит большую часть своего времени (88%) в ожидании I / 0.
Так почему же он не использует больше ядер через потоки, чтобы перегрузить контроллер RAID (увеличьте число операций ввода-вывода и простоя)? Почему он ожидает ввода / вывода, если нагрузка ввода / вывода не высока? Почему он не идет быстрее со всей этой мощью / ресурсами у его пальцев? Мне кажется, что VACUUM может и должен быть многопоточным, особенно если он работает на огромном столе и работает только один!
Кроме того, есть ли способ настроить postgresql.conf для обеспечения многопоточности таких VACUUM? Могу ли я убить его и все же извлечь выгоду из его частичной очистки? Мне нужно поработать над этим столом.
[Я использую PostgreSQL 8.1]
Спасибо еще раз