Вплив видалення великої к-ті рядків в БД

🔍 Вплив на зовнішні ключі:

  • Цілісність даних: Зовнішні ключі забезпечують зв'язок між таблицями. В момент масового видалення, система перевіряє кожен зовнішній ключ, що може істотно сповільнювати процес.

  • Залежності: Якщо видаляються дані, що мають залежності в інших таблицях, можливі помилки цілісності або навіть каскадне видалення.

🔍 Вплив на Індексацію:

  • Перебудова індексів: Після масових видалень індекси потребують перебудови, що вимагає чимало ресурсів.

  • Погіршення продуктивності запитів: Продуктивність запитів, що базуються на цих індексах, може знизитися.

🔍 Продуктивність та використання ресурсів:

  • Навантаження на сервер: Масові видалення вимагають багато ресурсів ЦПУ і пам'яті, впливаючи на продуктивність сервера.

  • Затримка: Можуть виникати затримки через блокування рядків або таблиць, заважаючи іншим конкурентним транзакціям.

🔍 Вплив на Транзакції:

  • Довгі транзакції: Масові видалення можуть призвести до створення довгих транзакцій, ускладнюючи управління ними та відновлення після збоїв.

  • Збільшення журналу транзакцій: Багато видалень = збільшений обсяг журналу транзакцій.

🔍 Альтернативні підходи:

  • Пакетне видалення: Видаляти дані невеликими порціями.

  • Розподіл видалення у часі: Виконувати видалення у періоди з нижчим навантаженням, наприклад, вночі.

    Тоді, потрібні метрики на це видалення. Щоб мати змогу перевірити чи воно взагалі виконувалося, якщо виконувалося, щоб не занадто довго. І в разі чого згенерувати відповідні алерти.

  • Перевірка залежностей: Перед видаленням слід перевіряти залежності, аби уникнути помилок цілісності.

⚠️ Ризики та Оптимізація:

  • Безпека даних: Необхідність надійних резервних копій і стратегії відновлення даних.

  • Оптимізація процесу видалення: Використання команд, які оптимізують процес (наприклад, TRUNCATE).

  • Моніторинг та профілювання: Необхідно стежити за використанням ресурсів і продуктивністю системи.

  • Вплив на реплікацію: Масове видалення може негативно впливати на процес реплікації.

  • Блокуючий виклик: Ні в якому разі не робити “велике” видалення через REST(блокуючі підходи) — виклик впаде по тайм-ауту і транзакція ролбекнеться

📌 Висновок: Масове видалення даних одним запитом може мати серйозні наслідки. Рекомендується використовувати обережні стратегії для мінімізації потенційних проблем.

Поділись своїми ідеями в новій публікації.
Ми чекаємо саме на твій довгочит!
Oleksandr Klymenko
Oleksandr Klymenko@overpathz

Java Software Engineer

4.6KПрочитань
1Автори
71Читачі
На Друкарні з 19 квітня

Більше від автора

  • Secure networking. Deep Dive

    Глибоке занурення в протоколи TLS/SSL та інфраструктуру відкритих ключів (PKI). Основні поняття, процес встановлення захищеного з'єднання, роль сертифікатів та ланцюжка довіри

    Теми цього довгочиту:

    Security
  • Поширені помилки у дизайні REST API

    У довгочиті розглядаються поширені помилки при проектуванні REST API та способи їх уникнення: версіонування, використання DTO, підхід CQRS, робота з мікросервісами, та інші практики для підвищення продуктивності, безпеки й зручності API

    Теми цього довгочиту:

    Java
  • Java. Короткий огляд еволюції багатопотоковості

    У перших версіях Java багатопоточність реалізовувалася за допомогою класу Thread, який дозволяв створювати нові потоки. Проте ця модель мала багато недоліків:

    Теми цього довгочиту:

    Java

Вам також сподобається

Коментарі (0)

Підтримайте автора першим.
Напишіть коментар!

Вам також сподобається