PmaControl logo PmaControl
  • Главная
  • PmaControl
    • ИИ-агенты 13 on-premise агентов
    • Тарифы Community, Cloud, On-Premise, Premium
    • Документация Руководства, API, архитектура
    • История версий Все стабильные версии 5.x
    • Маркетплейс Плагины сообщества
    • Клиенты 28+ компаний
    • FAQ 25 вопросов / 7 категорий
    Базы данных
    • MariaDB 35 статей
    • MySQL 15 статей
    • Galera Cluster 6 статей
    • MaxScale 4 статьи
    • ProxySQL 3 статьи
    • Amazon Aurora MySQL 0 статьи
    • Azure Database 0 статьи
    • ClickHouse 0 статьи
    • GCP CloudSQL 0 статьи
    • Percona Server 0 статьи
    • SingleStore 0 статьи
    • TiDB 0 статьи
    • Vitess 0 статьи
    Решения
    • Поддержка 24×7 Экстренная помощь MariaDB & MySQL
    • Observabilité SQL Мониторинг, алерты, топология
    • Haute disponibilité Репликация, failover, Galera
    • Disaster Recovery Backup, restore, RPO/RTO
    • Sécurité & conformité Аудит, GDPR, SOC2
    • Migration & upgrade Zero downtime, pt-osc, gh-ost
  • Тарифы
  • Ресурсы
    • Документация Технические руководства и API
    • Центр оптимизации MySQL Markdown-индекс, метрики, параметры, инциденты
    • FAQ 25 частых вопросов
    • Отзывы Отзывы клиентов и кейсы
    • Блог Статьи и аналитика
    • Roadmap Планируемые функции
    Области экспертизы
    • Observabilité SQL Мониторинг, алерты, топология Dot3
    • Haute disponibilité Репликация, failover, Galera
    • Sécurité & conformité Аудит, GDPR, SOC2, ISO 27001
    • Disaster Recovery Backup, restore, RPO/RTO
    • Performance & optimisation Digests, EXPLAIN, tuning
    • Migration & upgrade Zero downtime, pt-osc
    Быстрые ссылки
    • Wiki GitHub 26 страниц — установка, движок, плагины
    • Исходный код Официальный репозиторий GitHub
    • Поддержка 24×7 Экстренная помощь MariaDB & MySQL
    • Записаться на демо 30 мин — реальная архитектура
  • Поддержка 24×7
  • Записаться на демо
Записаться на демо
🇫🇷 FR Français 🇬🇧 EN English 🇵🇱 PL Polski 🇷🇺 RU Русский 🇨🇳 ZH 中文 🇸🇦 AR العربية
Ресурсы › Центр оптимизации MySQL › Калькулятор памяти InnoDB MariaDB / MySQL

Калькулятор памяти InnoDB MariaDB / MySQL

Рассчитайте сценарий памяти InnoDB и сервера по действующим настройкам. Примеры значений описывают сервер с 16 GiB; это не рекомендации.

Двоичные единицы: 1 GiB = 1024 MiB. Допустимы байты или K/M/G/T: 268435456, 256M, 8G. Все расчёты выполняются в браузере.

Включите JavaScript для калькулятора. Пояснения и запросы доступны ниже.

Сервер и параллелизм
Память InnoDB

Пул и буфер журнала глобальны. Резерв 10% — оценка из документации MySQL, а не константа MariaDB. Добавьте неучтённые выделения: словарь, блокировки, транзакции, adaptive hash, сжатие. Не добавляйте измерение, уже включающее пул.

Другая глобальная память
Базовая память на подключение

Модель одного потока на подключение: стек + два начальных сетевых буфера + digest + резерв. При пуле потоков скорректируйте резерв. Рост сетевых буферов учитывайте в резерве подключения или памяти запросов.

Буферы на активный запрос

Буферы выделяются по необходимости. Настройте количество по плану; 0 означает отсутствие операции. Резерв включает пакеты, текст SQL, BLOB, binlog и неучтённые выделения. Сложные соединения могут требовать нескольких буферов.

Временные таблицы

MariaDB и MEMORY: min(tmp_table_size, max_heap_table_size) на таблицу, не сессию. TempTable: общий лимит RAM без max_heap_table_size. До MySQL 8.0.28 tmp_table_size не ограничивает TempTable. Локальные блоки, обычно от 1 MiB, не входят в лимит и могут сохраняться до завершения потока. Mmap и пользовательские MEMORY-таблицы требуют отдельного резерва.

Необязательные измерения, отдельно от расчёта

0 означает отсутствие измерения. Счётчики охватывают только отслеживаемые выделения; их сумма не равна RSS. Измерения не прибавляются к модели.

Результаты сценария

Память InnoDB
Сценарий нагрузки
Нагрузка при max_connections
Запас сценария
Глобальные выделения и резервы
Базовая память подключений
Буферы активных запросов
Временные таблицы и локальные блоки
Бюджет сервера базы данных
Измеренная инструментами память InnoDB
Текущий RSS процесса

Оценка, а не гарантированный максимум

Нагрузка, настройки сессий и неотслеживаемые выделения могут превышать модель. Стресс сохраняет количество операций, активируя все подключения. Проверьте RSS, лимиты cgroup, swap и пики под типичной нагрузкой. Файлы redo/undo и innodb_redo_log_capacity — дисковое пространство, а не равный объём RAM.

Формулы и допущения

C = подключения; A = активные запросы; T = временные таблицы на запрос. Резервы учитываются один раз.

InnoDB = innodb_buffer_pool_size × (1 + overhead / 100) + innodb_log_buffer_size + dictionary + locks + transactions + adaptive_hash + compression + InnoDB_extra G = InnoDB + key_buffer_size + aria_pagecache_buffer_size (MariaDB) + query_cache_size (MariaDB / MySQL 5.7) + other_global B = thread_stack + 2 × net_buffer_length + max_digest_length + session_extra Q = sort_buffer_size × sorts + join_buffer_size × joins + read_buffer_size × scans + read_rnd_buffer_size × random_reads + query_extra Total = G + C × B + A × Q + Temp Stress: C = A = max_connections

Точная оценка памяти InnoDB

Память InnoDB не ограничивается innodb_buffer_pool_size. Калькулятор учитывает буферный пул, настраиваемый резерв для его структур, глобальный innodb_log_buffer_size и указанные дополнительные выделения InnoDB. В документации MySQL описано около 10% дополнительной памяти для структур пула; реальный резерв зависит от сборки и нагрузки, особенно в MariaDB. Используйте действующее значение работающего сервера: после округления размера пула оно может отличаться от конфигурации.

Словарь, adaptive hash, блокировки, структуры транзакций и сжатие могут требовать дополнительной памяти. Учитывайте только выделения, отсутствующие в пуле и резерве. Ёмкость redo, файлы redo и пространства undo — дисковые ресурсы, а не равные выделения RAM. Сумма InnoDB не включает другие движки, Performance Schema, буферы подключений и запросов, а также ОС.

Получите действующие настройки

Запросы ниже только читают данные. Неподдерживаемые переменные пропускаются в SHOW ... WHERE. Threads_running включает измерительный запрос и отражает один момент; используйте типичный параллелизм и записанные пики. Max_used_connections — пик подключений, а не активных запросов. Проверяйте настройки сессий приложения: текущая сессия не описывает все сессии.

SELECT VERSION();
SHOW GLOBAL VARIABLES WHERE Variable_name IN (
  'innodb_buffer_pool_size', 'innodb_log_buffer_size', 'innodb_page_size',
  'key_buffer_size', 'aria_pagecache_buffer_size', 'query_cache_size',
  'max_connections', 'thread_handling', 'thread_stack', 'net_buffer_length',
  'max_digest_length', 'max_allowed_packet', 'sort_buffer_size',
  'join_buffer_size', 'read_buffer_size', 'read_rnd_buffer_size',
  'tmp_table_size', 'max_heap_table_size', 'internal_tmp_mem_storage_engine',
  'temptable_max_ram', 'temptable_max_mmap', 'temptable_use_mmap'
);
SHOW GLOBAL STATUS WHERE Variable_name IN (
  'Threads_connected', 'Threads_running', 'Max_used_connections',
  'Created_tmp_tables', 'Created_tmp_disk_tables',
  'Innodb_buffer_pool_pages_total', 'Innodb_buffer_pool_pages_data',
  'Innodb_buffer_pool_pages_free'
);
SHOW SESSION VARIABLES WHERE Variable_name IN (
  'sort_buffer_size', 'join_buffer_size', 'read_buffer_size',
  'read_rnd_buffer_size', 'tmp_table_size', 'max_heap_table_size',
  'internal_tmp_mem_storage_engine', 'max_allowed_packet'
);
SHOW ENGINE INNODB STATUS;

Измерьте память InnoDB и процесса

Если версия предоставляет эту таблицу памяти Performance Schema и инструменты InnoDB активны, изучите текущие выделения. Охват зависит от версии; позднее включение счётчиков не восстанавливает все прошлые выделения. Отсутствие строк или нулевые значения не доказывают отсутствие памяти. Не складывайте максимумы отдельных инструментов для оценки одновременного пика. Укажите текущую сумму в необязательном измерении InnoDB; она остаётся отдельно от модели.

SELECT EVENT_NAME,
       ROUND(CURRENT_NUMBER_OF_BYTES_USED / 1048576, 2) AS current_mib,
       ROUND(HIGH_NUMBER_OF_BYTES_USED / 1048576, 2) AS high_mib
FROM performance_schema.memory_summary_global_by_event_name
WHERE EVENT_NAME LIKE 'memory/innodb/%'
ORDER BY CURRENT_NUMBER_OF_BYTES_USED DESC;

SELECT ROUND(SUM(CURRENT_NUMBER_OF_BYTES_USED) / 1048576, 2)
       AS instrumented_innodb_mib
FROM performance_schema.memory_summary_global_by_event_name
WHERE EVENT_NAME LIKE 'memory/innodb/%';

В Linux RSS ниже указан в KiB: используйте суффикс K или делите на 1024 для MiB. RSS относится ко всему процессу. Учитывайте лимиты cgroup, системный кэш, удержание памяти аллокатором и другие службы.

ps -C mariadbd,mysqld -o pid=,rss=,comm=

Временные таблицы и ограничения

В MariaDB и MySQL с MEMORY меньшая из величин tmp_table_size и max_heap_table_size ограничивает каждую внутреннюю временную таблицу. В одном запросе могут сосуществовать несколько таблиц и буферов соединений. Модель применяет выбранное количество операций к активным запросам, а не к простаивающим подключениям.

В MySQL TempTable лимит temptable_max_ram общий для сессий. Начиная с 8.0.28 tmp_table_size также ограничивает отдельную таблицу; более ранний профиль использует только общий лимит. Локальные блоки не входят в лимит RAM. Модель резервирует блок для каждого подключения, поскольку он может сохраняться до завершения потока и превышать пример в 1 MiB. Файлы mmap могут добавлять резидентные страницы; предел размера файла не равен выделенной RAM.

Стресс активирует все подключения max_connections с той же формой запроса. Это не гарантированная верхняя граница. Добавьте резервы для пользовательских MEMORY-таблиц, сетевого роста, SQL/BLOB, binlog, репликации, подготовленных запросов, кэша потоков и других выделений. Сравните модель с пиками процесса под типичной нагрузкой. Оценка и цель настройки не обеспечивают принудительный лимит памяти.

Источники и проверка

Проверено 13 октября 2026 года. Оригинальные пояснения основаны на Releem и документации серверов. Пример Releem задаёт 200 подключений и лимиты 32 MiB, но умножает на 16 MB. Согласованный результат для одной таблицы на подключение: 6400 MiB = 6,25 GiB. Правила конкретного движка важнее общей формулы.

  • Releem — memory calculator
  • Releem — MySQL memory usage
  • Releem — tmp_table_size
  • MariaDB — memory allocation
  • MySQL — memory use
  • MySQL — temporary tables
  • MySQL — InnoDB parameters
PmaControl
+33 6 63 28 27 47 contact@pmacontrol.com
Юридическая информация GitHub Контакты
Не ждите инцидента, чтобы понять свою архитектуру. © 2014-2026 PmaControl — 68Koncept