Struchkov Mark
efdea249be
All checks were successful
continuous-integration/drone/push Build is passing
38 lines
3.8 KiB
Markdown
38 lines
3.8 KiB
Markdown
---
|
||
aliases:
|
||
- OLTP
|
||
tags:
|
||
- maturity/🌱
|
||
date: 2024-03-31
|
||
---
|
||
OLTP (Online Transaction Processing) — это тип нагрузки, который характеризуется выполнением большого количества коротких транзакций, таких как операции вставки, обновления и удаления. OLTP-системы обычно используются для поддержки оперативной деятельности, где важна быстрая обработка данных.
|
||
|
||
**Особенности:**
|
||
- Множество маленьких и быстрых [[Транзакция БД|транзакций]].
|
||
- Частое выполнение операций `INSERT`, `UPDATE`, `DELETE`.
|
||
- Подавляющее большинство операций затрагивает только одну строку.
|
||
- Запросы должны выполняться максимально быстро.
|
||
- Высокая степень нормализации таблиц
|
||
|
||
Примеры задач:
|
||
- Продажа товаров пользователям.
|
||
- Прием платежей за сотовую связь.
|
||
## Лучшие практики для оптимизации производительности
|
||
- **Использование индексов**: правильно настроенные [[Индекс базы данных|индексы]] позволяют быстрее выполнять операции и уменьшить количество операций чтения.
|
||
- [[../../../../_inbox/Шардирование БД|Шардинг]] (разделение таблиц): разделение таблиц на части снижает нагрузку и улучшает производительность.
|
||
- **Избегание блокировок**: минимизация блокировок таблиц и строк особенно важна при большом количестве параллельных транзакций.
|
||
- Для OLTP-нагрузки не следует использовать параллельное выполнение запросов, так как это забирает ядро процессора у другого запроса, что может привести к задержкам в обработке транзакций и снижению общей производительности системы. В контексте OLTP важнее минимизировать время выполнения каждого отдельного запроса, а не распределять его между несколькими ядрами. ==Каждый запрос должен выполняться на одном ядре как можно быстрее.==
|
||
- #idea Не хранить данные, которые уже не нужны для бизнес-логики, а нужны для OLAP. Попробовать переносить архивные данные в отдельную базу данных. Но возникает вопрос, а как объединять актуальные данные с архивными, чтобы отдавать их на фронт?
|
||
|
||
***
|
||
## Мета информация
|
||
**Область**:: [[../../meta/zero/00 Реляционная база данных|00 Реляционная база данных]]
|
||
**Родитель**::
|
||
**Источник**::
|
||
**Автор**::
|
||
**Создана**:: [[2024-03-31]]
|
||
### Дополнительные материалы
|
||
- [[Online Analytical Processing]]
|
||
### Дочерние заметки
|
||
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->
|