Використання PG 9.1 на Ubuntu 12.04.
Наразі для запуску великого набору операцій UPDATE на базі даних, які мають форму:
UPDATE table
SET field1 = constant1, field2 = constant2, ...
WHERE id = constid
(Ми просто перезаписуємо поля об’єктів, ідентифікованих за ідентифікатором.) Значення надходять із зовнішнього джерела даних (ще не в БД у таблиці).
У таблицях є декілька індексів, кожен та відсутність зовнішніх ключових обмежень. COMMIT не робиться до кінця.
Щоб імпортувати pg_dump
цілу БД, потрібно 2 години . Це здається базовим рівнем, на який ми мусимо розумно орієнтуватися.
Окрім створення спеціальної програми, яка якимось чином реконструює набір даних для PostgreSQL для повторного імпорту, чи є щось, що ми можемо зробити, щоб наблизити основну продуктивність UPDATE до рівня імпорту? (Ми вважаємо, що це область, з якою ми вважаємо, що дерева злиття з структурованими журналами добре справляються, але нам цікаво, чи є щось, що ми можемо зробити в PostgreSQL.
Деякі ідеї:
- скасування всіх індексів без ідентифікації та відновлення після цього?
- збільшуючи контрольні_сегменти, але чи насправді це допомагає підтримувати довгострокову пропускну спроможність?
- використовуючи згадані тут методи ? (Завантажте нові дані у вигляді таблиці, а потім "зробіть" старі дані, де ідентифікатор не знайдеться в нових даних)
В основному є маса речей, які слід спробувати, і ми не впевнені, що є найбільш ефективним або якщо ми не помічаємо інших речей. Ми проведемо наступні кілька днів на експерименти, але ми подумали, що запитаємо і тут.
У мене є одночасне навантаження на стіл, але це лише для читання.
explain analyze
що він використовує індекс для пошуку?