PmaControl logo PmaControl
  • Strona główna
  • Strona główna
    • PmaControl PmaControl
    • PmaControl PmaControl
    • PmaControl PmaControl
    • Historia wersji Wszystkie stabilne wersje 5.x
    • Marketplace Wtyczki społeczności
    • PmaControl PmaControl
    • Agenci AI Agenci AI
    Klienci
    • MariaDB 35 artykułów
    • MySQL 15 artykułów
    • Galera Cluster 6 artykułów
    • MaxScale 4 artykuły
    • ProxySQL 3 artykuły
    • Amazon Aurora MySQL 0 artykuły
    • Azure Database 0 artykuły
    • ClickHouse 0 artykuły
    • GCP CloudSQL 0 artykuły
    • Percona Server 0 artykuły
    • SingleStore 0 artykuły
    • TiDB 0 artykuły
    • Vitess 0 artykuły
    Bazy danych
    • Rozwiązania Rozwiązania
    • Observabilité SQL Rozwiązania
    • Haute disponibilité Rozwiązania
    • Disaster Recovery Rozwiązania
    • Sécurité & conformité Wsparcie 24×7
    • Migration & upgrade Wsparcie 24×7
  • PmaControl
  • Cennik
    • PmaControl Zasoby
    • Centrum optymalizacji MySQL Indeks Markdown, metryki, parametry, incydenty
    • Agenci AI Zasoby
    • Zasoby Zasoby
    • Zasoby Zasoby
    • Dokumentacja Dokumentacja
    Blog
    • Observabilité SQL Obszary ekspertyzy
    • Haute disponibilité Rozwiązania
    • Sécurité & conformité Obszary ekspertyzy
    • Disaster Recovery Rozwiązania
    • Performance & optimisation Obserwowalność SQL
    • Migration & upgrade Obserwowalność SQL
    Wydajność i optymalizacja
    • Szybkie linki Szybkie linki
    • Szybkie linki Szybkie linki
    • Rozwiązania Rozwiązania
    • Szybkie linki Szybkie linki
  • Rozwiązania
  • Szybkie linki
Szybkie linki
🇫🇷 FR Français 🇬🇧 EN English 🇵🇱 PL Polski 🇷🇺 RU Русский 🇨🇳 ZH 中文 🇸🇦 AR العربية
Cennik › Centrum optymalizacji MySQL › Kalkulator pamięci InnoDB MariaDB / MySQL

Kalkulator pamięci InnoDB MariaDB / MySQL

Oblicz scenariusz pamięci InnoDB i serwera na podstawie rzeczywistych ustawień. Wartości przykładowe opisują serwer 16 GiB; nie są zaleceniami.

Jednostki binarne: 1 GiB = 1024 MiB. Obsługuje bajty lub K/M/G/T, np. 268435456, 256M, 8G. Obliczenia pozostają w przeglądarce.

Włącz JavaScript, aby użyć kalkulatora. Objaśnienia i zapytania są dostępne poniżej.

Serwer i współbieżność
Pamięć InnoDB

Pula i bufor logu są globalne. Rezerwa 10% to przybliżenie z dokumentacji MySQL, nie stała MariaDB. Dodaj nieujęte alokacje: słownik, blokady, transakcje, adaptive hash, kompresję. Nie dodawaj pomiaru obejmującego już pulę.

Inna pamięć globalna
Pamięć podstawowa na połączenie

Model jednego wątku na połączenie: stos + dwa początkowe bufory sieciowe + digest + rezerwa. Dostosuj rezerwę dla puli wątków. Wzrost buforów sieciowych uwzględnij w rezerwie połączenia lub pamięci zapytań.

Bufory na aktywne zapytanie

Bufory są przydzielane na żądanie. Dopasuj liczby do planu; użyj 0 dla nieużywanej operacji. Rezerwa obejmuje pakiety, tekst SQL, BLOB, binlog i nieujęte alokacje. Złożone złączenia mogą wymagać wielu buforów.

Tabele tymczasowe

MariaDB i MEMORY: min(tmp_table_size, max_heap_table_size) na tabelę, nie sesję. TempTable: wspólny limit RAM, bez max_heap_table_size. Przed MySQL 8.0.28 tmp_table_size nie ogranicza TempTable. Bloki lokalne, zwykle 1 MiB lub więcej, są poza limitem i mogą pozostać do końca wątku. Mmap i tabele użytkownika MEMORY wymagają dodatkowej rezerwy.

Opcjonalne pomiary, niezależne od obliczeń

0 oznacza brak pomiaru. Liczniki obejmują tylko śledzone alokacje; ich suma nie jest RSS. Pomiary nie są dodawane do modelu.

Wyniki scenariusza

Pamięć InnoDB
Scenariusz obciążenia
Obciążenie przy max_connections
Zapas scenariusza
Alokacje globalne i rezerwy
Podstawa połączeń
Bufory aktywnych zapytań
Tabele tymczasowe i bloki lokalne
Budżet serwera bazy danych
Instrumentowane InnoDB, bieżący pomiar
RSS procesu, bieżący pomiar

Oszacowanie, nie gwarantowane maksimum

Obciążenie, ustawienia sesji i nieinstrumentowane alokacje mogą przekroczyć model. Scenariusz stresowy zachowuje liczby operacji i aktywuje wszystkie połączenia. Sprawdź RSS, limity cgroup, swap i szczyty przy reprezentatywnym obciążeniu. Pliki redo/undo i innodb_redo_log_capacity to przestrzeń dyskowa, nie równoważne alokacje RAM.

Wzory i założenia

C = połączenia; A = aktywne zapytania; T = tabele tymczasowe na zapytanie. Rezerwy dodaje się raz.

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

Dokładniejsze szacowanie pamięci InnoDB

Pamięć InnoDB nie ogranicza się do innodb_buffer_pool_size. Kalkulator uwzględnia pulę buforów, regulowaną rezerwę na jej struktury, globalny innodb_log_buffer_size oraz wskazane dodatkowe alokacje InnoDB. MySQL opisuje około 10% dodatkowej pamięci na struktury puli; rzeczywista rezerwa zależy od wersji i obciążenia, szczególnie w MariaDB. Użyj rzeczywistej wartości działającego serwera, która może różnić się od konfiguracji po zaokrągleniu rozmiaru puli.

Słownik, indeks adaptive hash, blokady, struktury transakcji i kompresja mogą zajmować dodatkową pamięć. Dodawaj tylko alokacje nieuwzględnione już w puli lub rezerwie. Pojemność redo, pliki redo i przestrzenie undo są zasobami dyskowymi: ich rozmiar nie jest alokacją RAM. Suma InnoDB nie obejmuje innych silników, Performance Schema, buforów połączeń i zapytań ani systemu.

Zbierz aktywne ustawienia

Poniższe instrukcje tylko odczytują dane. Nieobsługiwane zmienne są pomijane przez SHOW ... WHERE. Threads_running obejmuje zapytanie pomiarowe i jest chwilowym odczytem; użyj reprezentatywnej współbieżności i zarejestrowanych szczytów. Max_used_connections to szczyt połączeń, nie aktywnych zapytań. Sprawdź także ustawienia sesji aplikacji: bieżąca sesja nie opisuje wszystkich sesji.

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;

Zmierz InnoDB i proces

Jeśli wersja udostępnia tę tabelę pamięci Performance Schema i instrumenty InnoDB są aktywne, sprawdź bieżące alokacje. Zakres pomiaru zależy od wersji; późne włączenie liczników nie odtwarza wszystkich wcześniejszych alokacji. Brak wierszy lub zera nie oznaczają braku użycia pamięci. Nie sumuj maksimów instrumentów jako jednoczesnego szczytu. Wpisz bieżącą sumę jako opcjonalny pomiar InnoDB; pozostanie niezależna od modelu.

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/%';

W Linuksie RSS poniżej podawany jest w KiB: użyj sufiksu K lub podziel przez 1024, aby uzyskać MiB. RSS obejmuje cały proces. Uwzględnij limity cgroup, pamięć podręczną systemu, pamięć zatrzymaną przez alokator i inne usługi.

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

Tabele tymczasowe i ograniczenia

Dla MariaDB i MySQL używającego MEMORY mniejsza wartość tmp_table_size i max_heap_table_size ogranicza każdą wewnętrzną tabelę tymczasową. W zapytaniu może istnieć wiele tabel i buforów złączeń. Model mnoży wybrane liczby operacji przez aktywne zapytania, nie przez bezczynne połączenia.

W MySQL TempTable limit temptable_max_ram jest wspólny dla sesji. Od 8.0.28 tmp_table_size ogranicza także pojedynczą tabelę; wcześniejszy profil stosuje tylko limit wspólny. Bloki lokalne nie są wliczane do limitu RAM. Model rezerwuje blok na każde połączenie, ponieważ może on pozostać do końca wątku; blok może przekraczać przykładowy 1 MiB. Pliki mmap mogą zwiększać pamięć rezydentną; limit ich rozmiaru nie jest równoważny alokacji RAM.

Scenariusz stresowy aktywuje wszystkie połączenia max_connections z tym samym kształtem zapytań. Nie stanowi gwarantowanej granicy. Dodaj rezerwy na tabele użytkownika MEMORY, wzrost buforów sieciowych, SQL/BLOB, binlog, replikację, przygotowane instrukcje, pamięć podręczną wątków i inne alokacje. Porównaj model z rzeczywistymi szczytami. Ani model, ani cel strojenia nie wymusza limitu pamięci.

Źródła i weryfikacja

Sprawdzono 13 października 2026. Oryginalne objaśnienia oparto na Releem i dokumentacji serwerów. Przykład Releem podaje 200 połączeń i limity 32 MiB, lecz mnoży przez 16 MB. Spójny wynik dla jednej tabeli na połączenie to 6400 MiB = 6,25 GiB. Zasady konkretnego silnika mają pierwszeństwo przed ogólnym wzorem.

  • 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
Platforma eksploatacji SQL GitHub Platforma eksploatacji SQL
Platforma eksploatacji SQL © 2014-2026 PmaControl — 68Koncept