Найти в Дзене
Postgres DBA

Корреляционный анализ ожиданий для сценариев нагрузочного тестирования СУБД PostgreSQL.

Оглавление
Анализировать и сравнивать можно только вычисляемые сущности.
Анализировать и сравнивать можно только вычисляемые сущности.

Постановка задачи

Установить характерные признаки ожиданий и результаты корреляционного анализа в зависимости от сценариев нагрузочного тестирования .

Версия СУБД и ресурсы ВМ

Postgres Pro (enterprise certified) 15.8.1 on x86_64-pc-linux-gnu, compiled by gcc (AstraLinuxSE 8.3.0-6) 8.3.0, 64-bit

Operating System: Astra Linux

Kernel: Linux 6.1.90-1-generic

processor       : 0

  • model name      : Intel Xeon Processor (Skylake, IBRS, no TSX)
  • cpu MHz         : 2693.670
  • cpu cores       : 1

processor       : 1

  • model name      : Intel Xeon Processor (Skylake, IBRS, no TSX)
  • cpu MHz         : 2693.670
  • cpu cores       : 1

RAM: 1GB

Database-1

База данных для сбора статистической информации производительности .

Database-2

Тестовая база данных для проведения нагрузочного тестирования .

Нагрузка создается пользовательским сценарием pgbench.

Рост количества подключений pgbench - экспоненциально от 6 до 111.

Сценарии нагрузочного тестирования и результаты экспериментов

Сценарий 1 - "Select Only"

Только читающая нагрузка на тестовую БД .

Сценарий 2 - "Insert Only"

Только пишущая нагрузка на тестовую БД .

Сценарий 3 - "OLTP"

Имитация теста TPC-B . Нагрузка "SELECT + UPDATE" в тестовой БД .

Словарь терминов, используемых при анализе

Характерные признаки сценариев нагрузочного тестирования для Database-1

Сценарий 1 - "Select Only"

Относительная доля ожиданий ≈0.5-5.5%

Сценарий 2 - "Insert Only"

Относительная доля ожиданий ≈1.5-3.5%

Сценарий 3 - "OLTP"

Относительная доля ожиданий ≈0.5%

Характерные признаки сценариев нагрузочного тестирования для Database-2

Сценарий 1 - "Select Only"

Сценарий характеризуется

1. Cильной корреляцией с событиями ожидания:

  • LWLock/LockManager: Ожидание при чтении или изменении информации о «тяжёлых» блокировках.
  • LWLock/ProcArray: Ожидание при обращении к общим структурам данных в рамках процесса (например, при получении снимка или чтении идентификатора транзакции в сеансе).

2. Очень низкой долей ожиданий: менее 1%

Сценарий 2 - "Insert Only"

Сценарий характеризуется

1. Очень сильной корреляцией с событиями ожидания:

  • MultiXactOffsetSLRU: Ожидание при обращении к SLRU-кешу данных о смещениях мультитранзакций.

2. Не высокой долей ожиданий: 17-35%

Сценарий 3 - "OLTP"

Сценарий характеризуется

1. Очень сильной корреляцией с событиями ожидания:

  • Lock / transactionid: Ожидание завершения транзакции.
  • Lock / tuple: Ожидание при запросе блокировки для кортежа.

2. Высокой долей ожиданий: 62-95%.