#Собес #deadlock #transaction #index
🤔 Какие причины могут привести к возникновению deadlock при конкурентных запросах к базе данных и как их предотвращать?
💬 Кратко:
Deadlock появляется, когда два запроса блокируют ресурсы друг друга в пересекающемся порядке: один заблокировал строку A и ждёт строку B, а другой — наоборот. Причины: несогласованный порядок обновлений, долгие транзакции, отсутствие индексов, смешивание SELECT FOR UPDATE и UPDATE на разных путях. Чтобы избегать deadlock: соблюдать единый порядок обновления сущностей, делать транзакции короткими, использовать правильные индексы, избегать сканирования больших таблиц под блокировками и по возможности минимизировать конкурирующие UPDATE по одним и тем же строкам.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
🤔 Какие причины могут привести к возникновению deadlock при конкурентных запросах к базе данных и как их предотвращать?
💬 Кратко:
Deadlock появляется, когда два запроса блокируют ресурсы друг друга в пересекающемся порядке: один заблокировал строку A и ждёт строку B, а другой — наоборот. Причины: несогласованный порядок обновлений, долгие транзакции, отсутствие индексов, смешивание SELECT FOR UPDATE и UPDATE на разных путях. Чтобы избегать deadlock: соблюдать единый порядок обновления сущностей, делать транзакции короткими, использовать правильные индексы, избегать сканирования больших таблиц под блокировками и по возможности минимизировать конкурирующие UPDATE по одним и тем же строкам.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#Собес #deadlock #postgresql #transaction
🤔 Как СУБД (например, PostgreSQL) обрабатывает взаимоблокировки?
💬 Кратко:
PostgreSQL автоматически обнаруживает взаимоблокировки с помощью графа ожидания блокировок. Когда обнаруживается цикл в этом графе (что указывает на deadlock), СУБД выбирает одну транзакцию в качестве "жертвы" и откатывает ее, освобождая заблокированные ресурсы. Выбранная транзакция получает ошибку, а остальные могут продолжить выполнение. Критерий выбора "жертвы" обычно основан на стоимости отката — отменяется транзакция с наименьшей стоимостью отката.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
🤔 Как СУБД (например, PostgreSQL) обрабатывает взаимоблокировки?
💬 Кратко:
PostgreSQL автоматически обнаруживает взаимоблокировки с помощью графа ожидания блокировок. Когда обнаруживается цикл в этом графе (что указывает на deadlock), СУБД выбирает одну транзакцию в качестве "жертвы" и откатывает ее, освобождая заблокированные ресурсы. Выбранная транзакция получает ошибку, а остальные могут продолжить выполнение. Критерий выбора "жертвы" обычно основан на стоимости отката — отменяется транзакция с наименьшей стоимостью отката.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#Собес #balance #transaction
🤔 Как бы вы спроектировали хранение пользовательского баланса в базе данных?
💬 Кратко:
Баланс нельзя хранить как обычное число без защиты от гонок. Необходимо обеспечить атомарность операций и защиту от конкурентных обновлений. Часто используется модель с журналом операций и вычисляемым или агрегированным балансом. Это снижает риск потери денег и упрощает аудит.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
🤔 Как бы вы спроектировали хранение пользовательского баланса в базе данных?
💬 Кратко:
Баланс нельзя хранить как обычное число без защиты от гонок. Необходимо обеспечить атомарность операций и защиту от конкурентных обновлений. Часто используется модель с журналом операций и вычисляемым или агрегированным балансом. Это снижает риск потери денег и упрощает аудит.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#Собес #transaction_anomalies #dirty_read #non-repeatable_read
🤔 Какие аномалии транзакций существуют?
💬 Кратко:
Аномалии транзакций — это проблемы, возникающие при параллельном выполнении нескольких транзакций без должной изоляции. Основные типы: "грязное чтение" (чтение незафиксированных данных), "неповторяющееся чтение" (изменение строки другой транзакцией между чтениями), "фантомное чтение" (появление новых строк между чтениями) и "потерянное обновление" (перезапись изменений другой транзакции). Понимание этих аномалий помогает выбрать подходящий уровень изоляции в СУБД для баланса между целостностью данных и производительностью.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
🤔 Какие аномалии транзакций существуют?
💬 Кратко:
Аномалии транзакций — это проблемы, возникающие при параллельном выполнении нескольких транзакций без должной изоляции. Основные типы: "грязное чтение" (чтение незафиксированных данных), "неповторяющееся чтение" (изменение строки другой транзакцией между чтениями), "фантомное чтение" (появление новых строк между чтениями) и "потерянное обновление" (перезапись изменений другой транзакции). Понимание этих аномалий помогает выбрать подходящий уровень изоляции в СУБД для баланса между целостностью данных и производительностью.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа