Selle käsu kõige kriitilisem on olekuveerg ning mysql-is loetletud olekud on peamiselt järgmised:
Kontrollilaud Andmelehe kontrollimine (see on automaatne). Tabelite sulgemine Tabelis muudetud andmed loputatakse kettale ning kasutatud tabel suletakse. See on kiire operatsioon, kui mitte, peaksid kontrollima, kas ketta ruum on täis või kas ketas on koormuse all. Connect Out Replikatsiooni orjaserver ühendub esmase serveriga. Kopeerimine tmp tabelisse kettal Kuna ajutine tulemuste hulk on suurem kui tmp_table_size, konverteeritakse ajutine tabel mälust kettasalvestuseks, et mälu säästa. TMP tabeli loomine Luuakse ajutine tabel, kuhu salvestatakse osa päringute tulemustest. Kustutamine põhitabelist Server teeb mitme tabeli kustutamise esimest osa ja on just esimese tabeli kustutanud. Kustutamine viitetabelitest Server teostab mitme tabeli kustutamise teist osa, mis tähendab kirjete kustutamist teistest tabelitest. Loputustabelid Teen FLUSH TABELEID, ootan, kuni teised lõimed andmetabeli sulgevad. Tapetud Kui tapmistaotlus saadetakse lõime, kontrollib lõim tapmislippu ja loobub järgmisest tapmissoovist. MySQL kontrollib igas põhitsüklis tapmislippe, kuigi mõnel juhul võib lõim lühikeseks ajaks surra. Kui lõim on lukustatud teise lõimega, jõustub tapmistaotlus kohe, kui lukustus vabastatakse. Lukustatud Lukus teiste päringute poolt. Andmete saatmine SELECT-päringu kirjet töödeldakse, samal ajal kui tulemused saadetakse kliendile. Grupi sorteerimine Sorteerimine GRUPI JÄRGI. Sorteerimine tellimuse järgi Sorteerimine toimub TELLIMUSE JÄRGI. Avamislauad See protsess peaks olema kiire, kui seda ei sega muud tegurid. Näiteks ei saa andmetabelit avada teise lõime poolt enne, kui ALTER TABLE või LOCK TABLE lause on käivitatud. Püüan lauda avada. Duplikaatide eemaldamine SELECT DISTINCT päringut täidetakse, kuid MySQL ei suuda optimeerida duplikaatkirjeid eelmises etapis. Seetõttu peab MySQL duplikaatkirjed uuesti eemaldama enne tulemuste saatmist kliendile. Taasava laud Laual on lukk, kuid seda tuleb muuta pärast tabeli struktuuri muutmist. Olen juba luku lahti lasknud, andmelehe sulgenud ja üritab andmetabelit uuesti avada. Parandamine sorteerimise teel Parandamiskäsk on sorteerimine, et luua indeks. Parandamine keycache'iga Parandusdirektiiv on kasutada indeksi vahemälu uute indeksite loomiseks ükshaaval. See on aeglasem kui sorteerimise parandamine. Otsin ridadest uuendusi Sobivad dokumendid tuvastatakse uuendusteks. See tuleb teha enne, kui UUENDUS muudab vastavat kirjet. Magamine Ootan, et klient saadaks uue päringu. Süsteemi lukk Ootan, et saada väline süsteemilukk. Kui samal ajal ei tööta ühtegi mysqld serverit, mis taotleks sama tabelit, võib välised süsteemilukud keelata, lisades –skip-external-locking parameetri. Luku uuendamine INSERT DELAYED üritab saada lukustustabelit, et sisestada uus kirje. Uuendamine Sobivate dokumentide otsimine ja nende muutmine. Kasutajalukk ootab GET_LOCK(). Laudade ootamine Teemale teatati, et andmelehe struktuuri on muudetud ja see tuleb uuesti avada, et saada uus struktuur. Seejärel, et andmetabelit uuesti avada, pead ootama, kuni kõik teised lõimed tabeli sulgevad. See teavitus ilmneb järgmistel juhtudel: FLUSH TABLES tbl_name, ALTER TABLE, RENAME TABLE, REPAIR TABLE, ANALYZE TABLE või OPTIMIZE TABLE. Ootan käsitleja sisestust INSERT DELAYED on töödelnud kõik ootel insertid ja ootab uut taotlust. Enamik olekuid vastab kiiretele operatsioonidele, kui lõim jääb mõneks sekundiks samasse olekusse, võib tekkida probleem, mida tuleb kontrollida. |