Open de server taakbeheer en zie dat het CPU-proces altijd 99% heeft gehad, en dat het zicht wordt ingenomen door het MySQL-proces, dat hoog is geweest.
De output van het processlist-commando toont welke threads draaien, en je kunt de huidige loopstatus van de database controleren.
1. Ga naar de mysql/bin-map en voer mysqladmin processlist in; 2. Start MySQL en voer de proceslijst aan. Als je SUPER-toestemming hebt, kun je alle threads zien, anders kun je alleen de threads van je account zien.
De betekenis en het doel van elke kolom
id: Een identificatie user: toont de huidige gebruiker, als het geen root is, toont dit commando alleen SQL-instructies binnen uw permissies. host: geeft aan van welk IP deze instructie van welke poort komt db: Toont de database waarmee het proces momenteel verbonden is. commando: Toont de commando's die door de huidige verbinding worden uitgevoerd, meestal slaap, query en connect. tijd: De tijd die deze staat duurt, in seconden. State: Toont de status van de SQL-instructie die de huidige verbinding gebruikt, maar alleen een bepaalde status in de uitvoering van de statement, een SQL-statement, is geraadpleegd, bijvoorbeeld, het kan nodig zijn om te kopiëren naar tmp-tabel, Sorteerresultaat, Verzenddata, enzovoort info: Toont deze SQL-instructie, omdat de lengte beperkt is, waardoor de lange SQL-instructie niet volledig wordt weergegeven, maar het is een belangrijke basis om de probleemstelling te beoordelen.
Er blijkt dat er twee SQL-query-statements zijn die het langst duren en niet langer dan 1000 seconden zijn uitgevoerd, en de SQL-statements die we uit het infoveld hebben gekopieerd zijn een gezamenlijke query, als volgt:
selecteer cast (count(*) als SIGNED) als col_0_0_ uit 'RatedPassenger' ratedpasse0_, 'BaseInfoCompany' baseinfoco1_, 'OrderMatch' ordermatch2_ waar baseinfoco1_. CompanyId=ratedpasse0_. CompanyId en ordermatch2_. OrderId=ratedpasse0_. OrderId We beëindigen het proces van deze twee query-statements
Na 10 seconden wachten ontdekte ik dat de CPU flink was uitgevallen, maar het was nog steeds erg hoog, en ik blijf de reden navragen!
Voor de join joint query-instructie voeg je een index toe aan het bijbehorende veld of wijzig je de programmaquerycode. Maak een index SQL-instructie aan
Einde
|