Щоб оптимізувати швидкість вставки, об'єднати багато малих операцій в одну велику операцію. В ідеалі ви створюєте одне з’єднання, надсилаєте дані для багатьох нових рядків одночасно та відкладаєте всі оновлення індексів і перевірку узгодженості до самого кінця.
Для найшвидших вставок я зазвичай роблю наступне:
- Надсилання великої кількості елементів зазвичай у формі масиву json, що містить n елементів, для вставки в збережену процедуру.
- Додатково можна використовувати проміжну таблицю без індексів або обмежень, як хтось запропонував, або видаляти індекси та обмеження перед вставленням і створювати їх після.
Покращення продуктивності вставки
- Використовуйте індекси в помірних кількостях. Наявність правильних індексів може пришвидшити ваші запити, але це не ідеальна куля. …
- Перегляньте обмеження зовнішнього ключа. …
- Уникайте непотрібних УНІКАЛЬНИХ ключів. …
- Використовуйте окремі диски для WAL і даних. …
- Використовуйте продуктивні диски.
Масові вставки значно швидші, ніж окремі вставки під час роботи з базою даних з кількох причин: Зменшення мережевого трафіку: масові вставки зменшують обсяг даних, що передаються між програмою та сервером бази даних. У багатьох випадках затримка мережі може бути вузьким місцем для продуктивності бази даних.
a) той факт, що ви використовуєте імпорт, він повинен бути завантажений. б) той факт, що якщо ви використовуєте імпорт, він робить речі швидше послідовно (без паралельних операцій), а якщо у вас є longs/lobs – він робить речі рядок за рядком, що буде дуже повільно. Єдиний реальний спосіб пришвидшити імпорт — це реалізувати паралелізм «зроби сам»..