Nejkritičtější z tohoto příkazu je sloupec stavů, přičemž stavy uvedené v mysql jsou převážně následující:
Kontrolní stůl Kontrola datasheetu (to je automatické). Závěrečné stoly Data upravená v tabulce jsou přenášena na disk a spotřebovaná tabulka se uzavírá. Je to rychlá operace, pokud ne, měli byste zkontrolovat, jestli je místo na disku plné nebo jestli je disk pod zátěží. Connect Out Replikační slave server se připojuje k primárnímu serveru. Kopírování do tmp tabulky na disku Protože dočasná sada výsledků je větší než tmp_table_size, dočasná tabulka je převáděna z paměťového úložiště na diskové úložiště za účelem úspory paměti. Vytváření tabulky tmp Vytváří se dočasná tabulka, která uchovává některé výsledky dotazů. Mazání z hlavní tabulky Server provádí první část vícestolečného mazání a právě smazal první tabulku. mazání z referenčních tabulek Server provádí druhou část mazání více tabulek, což je mazání záznamů z jiných tabulek. Splachovací tabulky Dělám FLUSH TABLES, čekám, až ostatní vlákna datatable uzavřou. Zabit Pokud je žádost o zabití odeslána vláknu, vlákno zkontroluje vlajku zabití a opustí další žádost o zabití. MySQL kontroluje zastavení v každé hlavní smyčce, i když v některých případech může vlákno na krátkou dobu přestat fungovat. Pokud je vlákno zamčeno jiným vláknem, požadavek na ukončení najde účinnost okamžitě, jakmile je zámek uvolněn. Zamčeno Zamčeno jinými dotazy. Odesílání dat Záznam dotazu SELECT je zpracováván, zatímco výsledky jsou odesílány klientovi. Třídění pro skupinu Třídění pro SKUPINU PO. Třídění podle pořadí Třídění probíhá pro ORDER BY. Otevírací tabulky Tento proces by měl být rychlý, pokud do toho nezasahují jiné faktory. Například datová tabulka nemůže být otevřena jiným vláknem, dokud není vykonán příkaz ALTER TABLE nebo LOCK TABLE. Snažím se otevřít stůl. Odstraňování duplikátů Provádí se dotaz SELECT Distinct, ale MySQL nedokáže optimalizovat duplicitní záznamy v předchozí fázi. Proto musí MySQL před odesláním výsledků klientovi duplicitní záznamy znovu odstranit. Znovu otevřít stůl Na tabuli je dosaženo zámku, ale po úpravě struktury tabulky jej je nutné upravit. Už jsem uvolnil zámek, zavřel datasheet a snaží se datatable znovu otevřít. Oprava tříděním Instrukce fix je třídění pro vytvoření indexu. Oprava pomocí keycache Fix Directive spočívá v používání indexové cache k vytváření nových indexů jeden po druhém. Bude to pomalejší než oprava díky třídění. Vyhledávání řádků pro aktualizaci Způsobilé záznamy jsou identifikovány pro aktualizace. Musí to být provedeno dříve, než AKTUALIZACE upraví příslušný záznam. Spí Čekání, až klient pošle nový požadavek. Systémový zámek Čekám na získání externího systémového zámku. Pokud současně neběží žádné mysqld servery požadující stejnou tabulku, lze externí systémové zámky zakázat přidáním parametru –skip-external-lock. Modernizační zámek INSERT DELAYED se snaží přimět lock table, aby vložil nový záznam. Aktualizace Hledání shodných záznamů a jejich úprava. Uživatelský zámek čeká na GET_LOCK(). Obsluha stolů Vlákno bylo informováno, že struktura datasheetu byla upravena a je třeba ji znovu otevřít, aby získala novou strukturu. Pak, abyste mohli datovou tabulku znovu otevřít, musíte počkat, až všechna ostatní vlákna tabulku uzavře. Toto oznámení se objevuje v následujících případech: FLUSH TABLES tbl_name, ALTER TABLE, RENAME TABLE, REPAIR TABLE, ANALYZE TABLE nebo OPTIMIZE TABLE. Čekání na vložení handlera INSERT DELAYED zpracoval všechny čekající vložené položky a čeká na nový požadavek. Většina stavů odpovídá rychlým operacím, pokud vlákno zůstane ve stejném stavu několik sekund, může nastat problém, který je třeba zkontrolovat. |