sql >> Database teknologi >  >> RDS >> Mysql

Percona 5.6 InnoDB problem ikke bruger indekser korrekt

Dette lyder som:Bug #70617 Standard persistent statistik kan forårsage uventede lange forespørgselstider

For hvad det er værd, er dette ikke en Percona-fejl, det er også til stede i MySQL 5.6-fællesskabsudgaven.

Der er tre mulige løsninger:

  1. Brug STRAIGHT_JOIN til at give et tip til optimeringsværktøjet om ikke at omarrangere tabelreferencer.

    SELECT STRAIGHT_JOIN
      i.item_name, i.item_key, i.item_date, f.format_long
    FROM items i
    INNER JOIN formats f
      ON i.item_format = f.format_id
    WHERE i.item_private = 0 
    ORDER BY i.item_id DESC LIMIT 8
    

    Jeg har omskrevet din JOIN til at bruge SQL-92-syntaks, hvilket jeg anbefaler.

  2. Deaktiver den nye InnoDB persistent stats funktion, der vender tilbage til adfærd før 5.6.

    I din my.cnf-fil:

    innodb_stats_persistent=0
    
  3. Opdater InnoDB optimizer statistik manuelt, efter du har foretaget en væsentlig ændring af dataene (for eksempel efter indlæsning af en mysqldump):

    ANALYZE TABLE items;
    ANALYZE TABLE formats;
    

PS:Jeg arbejder hos Percona, og denne fejl blev opdaget af min kollega Justin Swanhart .




  1. Hvordan vælger man pagineringsmæssigt N antal poster fra MySQL-databasen?

  2. pip installer mysqlclient på amazon linux

  3. Sådan kører du PHP-scriptet på planlagt tidspunkt

  4. Fremme ydeevne i en hybrid cloud-opsætning