Конкретні параметри СУБД для оптимізації UBD: memory, locking, indexing, query plans.
UBD працює з трьома основними СУБД: Microsoft SQL Server, Oracle Database, IBM Db2. Для кожної є специфічні параметри, що дають істотний приріст продуктивності. Стаття — для DBA або системного адміністратора, який налаштовує СУБД під UBD-навантаження.
Незалежно від конкретної СУБД, три речі найбільше впливають на продуктивність:
Кеш-буфер БД (buffer pool, SGA, bufferpool — назва залежить від СУБД) — основний споживач пам’яті. Принцип: гарячі дані повинні поміщатися у пам’ять. Якщо БД 100 GB, а кеш-буфер 16 GB — більшість запитів читає з диска, що на порядки повільніше.
Орієнтовний розмір кеш-буфера: 60-80% RAM сервера БД. Решта — для ОС, тимчасових структур, з’єднань.
Оптимізатор запитів використовує статистику для побудови плану виконання. Застаріла статистика → погані плани → повільні запити.
Принцип: статистика автоматично оновлюється, але для активно змінюваних таблиць — додатково ручне оновлення раз на тиждень.
UBD генерує запити через свою ORM-логіку. Найчастіше — фільтрація по статусу, даті, ID власника, tenant_id. Індекси на ці колонки обов’язкові. Без них — повний scan таблиці на кожний запит.
Default: 0 (auto, всі ядра). Оптимально для UBD: 4-8.
SQL Server може паралелити один запит на кілька ядер. Для аналітичних запитів — це добре. Для OLTP-навантаження UBD (багато коротких запитів) — поганий компроміс: один запит займає кілька ядер, інші запити чекають.
Налаштування: EXEC sp_configure 'max degree of parallelism', 4;
tempdb — спільна тимчасова БД. SQL Server активно використовує її для сортувань, тимчасових таблиць, snapshot isolation. Вузьке місце на навантажених системах.
Налаштування:
Для UBD рекомендується READ COMMITTED SNAPSHOT. Це зменшує блокування читання-запису: читачі бачать «знімок» даних, не чекають на закінчення транзакції-писача.
Налаштування: ALTER DATABASE ubd SET READ_COMMITTED_SNAPSHOT ON;
Ціна: додаткове використання tempdb для version store. Враховувати при tempdb sizing.
SGA — спільна область пам’яті (buffer pool, shared pool, redo buffers). PGA — приватна область сесій.
Для UBD типове співвідношення: SGA 60% RAM, PGA 20% RAM, решта — ОС. Конкретно: на сервері 96 GB — SGA 58 GB, PGA 20 GB.
Параметри: sga_max_size, sga_target, pga_aggregate_target. З Oracle 11g+ доступний automatic memory management — спрощує налаштування.
UBD активно використовує sequence для генерації первинних ключів. Default CACHE 20 — мало для високого навантаження.
Налаштування: ALTER SEQUENCE my_seq CACHE 1000;. Кеш у RAC-конфігурації — окрема історія, потрібен NOORDER щоб уникнути cross-instance синхронізації.
Automatic Workload Repository — стандартний інструмент Oracle для аналізу продуктивності. Перед tuning обов’язково — AWR-звіт за пік-годину.
На що дивитись: Top SQL by elapsed time, Top events, latch contentions. Найчастіше виявляються 5-10 запитів, що дають 80% загального часу — їх і tunуємо.
Аналог buffer pool. Для UBD: окремий bufferpool для системних tablespace, окремий для даних. Розмір — 60-80% RAM.
Налаштування: CREATE BUFFERPOOL ubd_bp SIZE 16000000 PAGESIZE 8K; (значення у сторінках, не байтах).
Default: 50 сторінок. Оптимально: AUTOMATIC або великий розмір (5000+).
Замала LOCKLIST → lock escalation (рядки → таблиця) → блокування. Симптом: SQL0911N deadlock-помилки у логах.
Налаштування: UPDATE DB CFG FOR ubd USING LOCKLIST AUTOMATIC;
Аналог UPDATE STATISTICS у MS SQL. Для активно змінюваних таблиць — щонайменше раз на тиждень з WITH DISTRIBUTION AND DETAILED INDEXES ALL.
УBD генерує запити певних типів. Розуміння цих патернів допомагає правильно індексувати:
(tenant_id, status).DESC для уникнення sort step.owner_id.| Проблема | Хто вирішує |
|---|---|
| Повільний запит, поганий план виконання | DBA (індекси, статистика, hints) |
| Велике навантаження на CPU/IO сервера БД | DBA (memory, parallelism, I/O subsystem) |
| UBD генерує неоптимальний запит | UBD-консультант (model design, API params) |
| Lock contention на конкретній таблиці | Спільно: DBA + UBD-консультант (isolation level, model refactor) |
| Sequence/identity bottleneck | DBA (caching, alternative key strategies) |
| Авторизаційні запити повільні | UBD-консультант (AuthZ cache, policy refactor) |
UBD сертифіковано у експертному висновку Г-3 для роботи з MS SQL Server 2017+, Oracle 19c+, IBM Db2 11.5+. Для кожної СУБД доступна референсна конфігурація — набір рекомендованих параметрів, протестований на типовому навантаженні. Використання інших версій СУБД технічно можливе, але вимагає окремої перевірки в рамках експертизи замовника.