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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Java Software Engineer

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

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

  • Як насправді працює @Async у Spring і коли його використання створює більше проблем, ніж вирішує

    Розбираємо небезпеки анотації @Async у Spring — як вона працює за кулісами, чому втрачається контекст логування, підводні камені з транзакціями та self-invocation

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

    Java
  • RFC 7807. Що це і для чого він потрібен бекенд розробникам

    Як стандарт RFC 7807 змінює підхід до обробки помилок у Java розробці. У статті: що це таке, як працює формат "Problem Details", приклади використання та готовий код для інтеграції у Spring Boot

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

    Java
  • Java. jOOQ

    Довгочит буде про jOOQ — бібліотеку, яка зручно поєднує світ Java і SQL. Якщо ви працюєте з базами даних у Java, то, скоріш за все, зустрічались з такими дилемами:

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

    Java

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

  • Why SQL is a Must-Have Skill for Data Analytics Experts

    This article delves into why SQL is a must-have skill for data analytics experts and how it forms the backbone of data analysis, enabling professionals to work efficiently and effectively with data.

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

    Sql
  • Прискорення компіляції Rust коду

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

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

    Rust

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

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

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

  • Why SQL is a Must-Have Skill for Data Analytics Experts

    This article delves into why SQL is a must-have skill for data analytics experts and how it forms the backbone of data analysis, enabling professionals to work efficiently and effectively with data.

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

    Sql
  • Прискорення компіляції Rust коду

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

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

    Rust