Öppna serverns aktivitetshanterare och se att CPU-processen alltid har varit 99 %, och vyn är upptagen av MySQL-processen, som har varit hög.
Utdata från processlist-kommandot visar vilka trådar som körs, och du kan kontrollera databasens aktuella körstatus.
1. Gå till mysql/bin-katalogen och skriv in mysqladmin processlist; 2. Starta MySQL och ange visa processlista. Om du har SUPER-behörighet kan du se alla trådar, annars kan du bara se trådarna på ditt konto.
Betydelsen och syftet med varje kolumn
id: En identifierare user: visar den nuvarande användaren, om den inte är root kommer detta kommando endast att visa SQL-satser inom dina behörigheter. host: visar vilken IP detta uttalande kommer från vilken port db: Visar databasen som processen för närvarande är ansluten till. kommando: Visar kommandon som utförs av den aktuella anslutningen, vanligtvis viloläge, fråga och ansluta. tid: Den tid detta tillstånd varar, i sekunder. Tillstånd: Visar statusen för SQL-satsen som använder den aktuella anslutningen, men endast ett visst tillstånd i exekveringen av satsen, en SQL-sats, har förfrågats, till exempel kan den behöva gå igenom kopiering till tmp-tabell, sorteringsresultat, sändande data, etc info: Visar denna SQL-sats, eftersom längden är begränsad, så den långa SQL-satsen visas inte fullt ut, men den är en viktig grund för att bedöma problemsatsen.
Det visar sig att det finns två SQL-frågesatser som tar längst tid och inte har körts mer än 1000 sekunder, och de SQL-satser vi kopierade från infofältet är en gemensam fråga, enligt följande:
Välj cast(count(*) som SIGNED) som col_0_0_ från 'RatedPassenger' ratedpasse0_, 'BaseInfoCompany' baseinfoco1_, 'OrderMatch' ordermatch2_ där baseinfoco1_. CompanyId=ratedpasse0_. FöretagsID och ordermatch2_. OrderId=ratedpasse0_. OrderId Vi dödar processen med dessa två frågesatser
Efter att ha väntat i 10 sekunder upptäckte jag att CPU:n hade tappat mycket, men den var fortfarande väldigt hög, och jag kommer fortsätta att fråga orsaken!
För join-gemensam frågesats, lägg till ett index i det tillhörande fältet eller modifiera programfrågekoden. Skapa en index-SQL-sats
Slut
|