Często nieużywany, ale bardziej szczegółowy
POKAŻ PEŁNĄ LISTĘ PROCESÓW
jest przydatny, ale nie tak dobry jak niesamowity analizator zapytań dla przedsiębiorstw - włącz tak
mysql> ustaw profilowanie = 1;
Zapytanie OK, dotyczy 0 wierszy (0,00 s)
Te dwa zapytania są śmieciami, które wypełniają tabelę profili,
mysql> wybierz * z _test.customers;
BŁĄD 1146 (42S02): Tabela „_test.customers” nie istnieje
mysql> wybierz * z test.customers limit 0;
Pusty zestaw (0,00 s)
Uzyskaj listę wszystkich zapytań profilowanych i ich czas trwania
mysql> pokaż profile;
+ ---------- + ------------ + ------------------------- ------ +
| Query_ID | Czas trwania | Zapytanie |
+ ---------- + ------------ + ------------------------- ------ +
| 1 | 0,00013400 | wybierz * z _test.customers |
| 2 | 0,01546500 | wybierz * z test.customers |
+ ---------- + ------------ + ------------------------- ------ +
Wyświetl informacje dla ostatniego zapytania to po prostu „pokaż profil” - lub możesz określić zapytanie
mysql> pokaż profil dla zapytania 2;
+ ---------------------- + ---------- +
| Status | Czas trwania |
+ ---------------------- + ---------- +
| początek | 0,000053 |
| sprawdzanie uprawnień | 0,000007 |
| Otwieranie stołów | 0,000014 |
| Blokada systemu | 0,000006 |
| Blokada stołu | 0,000008 |
| init | 0,000065 |
| optymalizacja | 0,000003 |
| wykonanie | 0,000201 |
| koniec | 0,000003 |
| koniec zapytania | 0,000002 |
| uwalnianie przedmiotów | 0,000020 |
| rejestrowanie powolnego zapytania | 0,000002 |
| sprzątanie | 0,000004 |
+ ---------------------- + ---------- +
13 rzędów w zestawie (0,00 s)
Możesz także zażądać między innymi określonych informacji, takich jak CPU, BLOCK IO i SWAPS ( wszystkie na stronie podręcznika )
mysql> pokaż profil procesora dla zapytania 2;
+ ---------------------- + ---------- + ---------- + ---- -------- +
| Status | Czas trwania | Użytkownik_procesora | System_ CPU |
+ ---------------------- + ---------- + ---------- + ---- -------- +
| początek | 0,000056 | 0,001000 | 0,000000 |
| sprawdzanie uprawnień | 0,000007 | 0,000000 | 0,000000 |
| Otwieranie stołów | 0,000010 | 0,000000 | 0,000000 |
| Blokada systemu | 0,000005 | 0,000000 | 0,000000 |
| Blokada stołu | 0,000007 | 0,000000 | 0,000000 |
| init | 0,000059 | 0,000000 | 0,000000 |
| optymalizacja | 0,000003 | 0,000000 | 0,000000 |
| statystyki | 0,015022 | 0,000000 | 0,000000 |
| przygotowywanie | 0,000014 | 0,001000 | 0,000000 |
| wykonanie | 0,000004 | 0,000000 | 0,000000 |
| Wysyłanie danych | 0,000245 | 0,000000 | 0,000000 |
| koniec | 0,000004 | 0,000000 | 0,000000 |
| koniec zapytania | 0,000002 | 0,000000 | 0,000000 |
| uwalnianie przedmiotów | 0,000021 | 0,000000 | 0,000000 |
| rejestrowanie powolnego zapytania | 0,000002 | 0,000000 | 0,000000 |
| sprzątanie | 0,000004 | 0,000000 | 0,000000 |
+ ---------------------- + ---------- + ---------- + ---- -------- +
16 rzędów w zestawie (0,00 s)
Nie zapomnij go później wyłączyć, ponieważ rejestrowanie zwiększa koszty.
mysql> ustaw profilowanie = 0;
Zapytanie OK, dotyczy 0 wierszy (0,00 s)
Niektóre polecenia MySQL, które nie zawsze są powszechnie znane lub zapamiętywane.
Zmień orientację zestawu wyników na pionową, aby ułatwić czytanie i wklejanie.
Anuluj obecnie wpisywane zapytanie, pozostawiając je w swojej historii.
Edytuj zapytanie lub ostatnie zapytanie (odpowiednio) za pomocą ulubionego edytora $ EDITOR.
Wyczyść wyjście konsoli.
Porównaj zestawy wyników według skrótu MD5.
Zmień swój monit.
Przeszukaj historię poleceń pod kątem określonego ciągu (np. Bash).
Zacznij wpisywać wyszukiwane hasło i powtórz ^ R, aby przewijać wyniki.
źródło
md5sum -
pomysł używania go jako pagera. Niezupełnie specyficzny dla mysqlNauczyłem się sztuczek, które mogą się przydać niektórym:
Aby uruchomić wcześniej zapisany plik:
Posługiwać się "\!" aby uzyskać dostęp do poleceń powłoki. Na przykład:
Więc jeśli chcesz zapisać swoją instrukcję do pliku (bez użycia opcji edytora), możesz wpisać:
Jeśli wejdziesz
następnie twoje instrukcje i wyniki zapytań zostaną skierowane / wydrukowane na podaną nazwę pliku. Użyj,
\\t
aby to wyłączyć.Zakończ zapytanie za pomocą
\\G
zamiast „;” w celu wyświetlenia wyniku w formacie wiersza zamiast w kolumnach.Nie wykluczaj stosowania klauzuli Where ... LIKE z instrukcją SHOW. Na przykład:
Wreszcie, aby znaleźć lokalizację katalogu danych MySQL bez patrzenia na
my.cnf
plik, użyj:źródło
Osobiście podoba mi się
SHOW
polecenieMożesz zrobić
SHOW PROCESSLIST
- Aby zobaczyć wszystkie działające połączenia z mysqlSHOW CREATE TABLE TableName
- Aby zobaczyć sql użyty do utworzenia tabeliSHOW CREATE PROCEDURE ProcedureName
- Aby zobaczyć sql użyty do utworzenia SPSHOW VARIABLES
- Aby zobaczyć wszystkie zmienne systemowePobierz pełną listę tutaj
źródło
Faktycznie udokumentowane , ale bardzo denerwujące: automatyczne konwersje daty dla niepoprawnych danych.
Czasami będziesz miał szczęście, gdy MySQL nie dostosuje danych wejściowych do pobliskich ważnych dat, ale zamiast tego zapisze je jako takie,
0000-00-00
które z definicji są nieprawidłowe. Jednak nawet wtedy mógłbyś chcieć, aby MySQL zawiódł, zamiast dyskretnie przechowywać tę wartość dla ciebie.źródło
Kolejną cechą, która odróżnia MySQL od innych baz danych, jest
REPLACE INTO
polecenie. Możesz to zrobić:Możesz także napisać instrukcję replace, tak jak piszesz instrukcję aktualizacji:
źródło
Naprawdę nie jest to ukryta funkcja, ale jest mniej znana i używam jej często, aby zaoszczędzić, wykonując zapytanie, aby sprawdzić, czy coś istnieje przed wykonaniem UPDATE lub INSERT
Dokumentacja jest tutaj
źródło
Aby zobaczyć plan wykonania zapytania, użyj
EXPLAIN
na przykład
źródło
Nie bardzo ukryte, ale dziennik spowolnionych zapytań może być naprawdę pomocny w śledzeniu przyczyn problemów z wydajnością w godzinach szczytu.
W pliku
my.cnf
sekcja [mysqld] - dodaj:źródło
Cóż, nie mogę oznaczyć tego jako duplikatu, ponieważ jest to inna strona (i nie mam tutaj przedstawiciela), ale po prostu odsyłam do tego znakomitego postu dotyczącego przepływu stosu w przypadku tego samego pytania :
źródło
Jako dodatek do odpowiedzi pQD (jako noobie nie jestem jeszcze w stanie dodać komentarza), jeśli jeszcze nie dodałeś ścieżki do dziennika powolnych zapytań w poprawnym pliku my.cnf, dziennik błędów będzie zapisany w katalogu danych (użyj SHOW VARIABLES LIKE 'datadir'; aby dowiedzieć się, gdzie to jest), a nazwa pliku będzie miała format [nazwa systemu] -slow.log
źródło