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 › Kontrole schematu MySQL

Kontrole schematu MySQL

Strukturalna dokumentacja Markdown do diagnozowania, mierzenia i optymalizacji MySQL.

Ta strona jest oryginalną dokumentacją PmaControl. Zachowuje praktyczną strukturę indeksu do pracy nad optymalizacją MySQL, bez kopiowania treści zewnętrznych i bez zależności od zewnętrznego produktu.

Cel

Kontrole schematu szukają struktur kosztownych w produkcji: brakujących indeksów, zbyt szerokich kolumn, brakujących kluczy głównych, historycznych tabel MyISAM i nieużywanych indeksów.

Co sprawdzać

  1. Tabele InnoDB bez klucza głównego.
  2. Zduplikowane lub silnie nadmiarowe indeksy.
  3. Kolumny VARCHAR lub TEXT użyte w zbyt szerokich indeksach.
  4. Kolumny joinów z różnymi typami albo collation.
  5. Duże tabele bez strategii archiwizacji.
  6. Brak foreign keys tam, gdzie wymaga tego integralność biznesowa.

Przydatne zapytania

SELECT table_schema, table_name
FROM information_schema.tables t
WHERE engine = 'InnoDB'
  AND table_schema NOT IN ('mysql', 'performance_schema', 'information_schema', 'sys')
  AND NOT EXISTS (
      SELECT 1
      FROM information_schema.table_constraints c
      WHERE c.table_schema = t.table_schema
        AND c.table_name = t.table_name
        AND c.constraint_type = 'PRIMARY KEY'
  );

Najważniejsze

Dobra kontrola schematu łączy każdą anomalię z zapytaniem, planem wykonania albo mierzalnym kosztem operacyjnym.

Zinwentaryzuj rozmiary, silniki i właścicieli

Zacznij od tabel krytycznych dla biznesu i korzystających z nich zapytań. Zapisz przeznaczenie, retencję, tempo zapisów i okno serwisowe. Metadane wskazują kandydatów, ale nie dowodzą problemu wydajności. Liczba wierszy i rozmiary InnoDB są szacunkowe: służą do rankingu, nie dokładnej ewidencji. Unikaj kosztownych pełnych zliczeń tylko dla pozornej precyzji.

SELECT table_schema, table_name, engine, table_rows,
       ROUND(data_length / 1024 / 1024, 1) AS data_mib,
       ROUND(index_length / 1024 / 1024, 1) AS index_mib
FROM information_schema.tables
WHERE table_type = 'BASE TABLE'
  AND table_schema NOT IN ('mysql', 'sys', 'performance_schema',
                           'information_schema')
ORDER BY data_length + index_length DESC
LIMIT 20;

Porównaj indeksy z rzeczywistym obciążeniem

SELECT table_schema, table_name, redundant_index_name,
       dominant_index_name
FROM sys.schema_redundant_indexes
WHERE table_schema NOT IN ('mysql', 'sys');

SELECT object_schema, object_name, index_name
FROM sys.schema_unused_indexes
WHERE object_schema NOT IN ('mysql', 'sys');

Te widoki MySQL sys wymagają zainstalowanego schematu i odpowiedniej instrumentacji. Indeks jest nieużywany tylko w obserwowanej pracy: uwzględnij raporty, zamknięcie miesiąca, odczyty z replik i role po przełączeniu. Przed usunięciem sprawdź unikalność i zależności kluczy obcych. Wspólny prefiks to kandydat do analizy, nie automatycznego usunięcia. W MySQL 8+ odpowiednie indeksy można najpierw ukryć w kontrolowanym teście, lecz nadal obciążają zapisy.

Sprawdź ścieżki dostępu i zgodność kolumn

SELECT table_name, column_name, column_type, is_nullable,
       character_set_name, collation_name
FROM information_schema.columns
WHERE table_schema = 'app'
ORDER BY table_name, ordinal_position;

EXPLAIN FORMAT=JSON
SELECT id, created_at
FROM app.orders
WHERE customer_id = 42
ORDER BY created_at DESC
LIMIT 20;

Zastąp app.orders i kolumny rzeczywistym reprezentatywnym zapytaniem. Sprawdź możliwe i wybrane klucze, szacowaną liczbę wierszy, pozostałe filtry i sortowanie. W przykładzie indeks zaczynający się od (customer_id, created_at) jest kandydatem do testu, nie uniwersalnym zaleceniem. Uzgodnij typy, znak, zestawy znaków i kolacje kolumn łączonych. Konwersje i funkcje mogą zmienić ścieżkę dostępu. Sprawdzaj plan dla realistycznych parametrów, także dużych klientów.

Sklasyfikuj problemy struktury

Sygnał Jak potwierdzić Następny krok
Brak klucza głównego Definicja tabeli i identyfikacja wierszy Wybierz stabilny klucz i oceń przebudowę
Nadmiarowy indeks Definicja, zależności i zakres obciążenia Przetestuj usunięcie przed wykonaniem DDL
Niezgodne kolumny złączeń Typy, kolacje i rzeczywisty plan Zweryfikuj konwersję i semantykę aplikacji

Przekształć ustalenie w kontrolowaną migrację

  • Zapisz SHOW CREATE TABLE, zależne zapytania, klucze obce i pierwotny plan.
  • Oszacuj miejsce tymczasowe, czas, blokady metadanych i wpływ na repliki dla danego DDL i wersji. DDL online nadal może czekać na blokady metadanych.
  • Testuj na reprezentatywnych danych; porównaj odczyty, koszt zapisu, rozmiar i poprawność.
  • Zaplanuj wycofanie: odtworzenie indeksu trwa, a cofnięcie schematu może wymagać konwersji danych lub przywrócenia kopii.

Dalsza diagnostyka

  • Powiąż ustalenia ze strojeniem i zapisz w ocenie.

Oficjalne źródła

  • MySQL redundant indexes
  • MySQL unused indexes
  • MySQL online DDL
PmaControl
+33 6 63 28 27 47 contact@pmacontrol.com
Platforma eksploatacji SQL GitHub Platforma eksploatacji SQL
Platforma eksploatacji SQL © 2014-2026 PmaControl — 68Koncept