sql >> Database >  >> RDS >> Mysql

Percona 5.6 InnoDB-probleem gebruikt indexen niet correct

Dit klinkt als:Bug #70617 Standaard persistente statistieken kunnen onverwacht lange querytijden veroorzaken

Voor wat het waard is, dit is geen Percona-bug, het is ook aanwezig in de MySQL 5.6 community-editie.

Er zijn drie mogelijke oplossingen:

  1. Gebruik STRAIGHT_JOIN om een ​​hint te geven aan de optimizer om tabelverwijzingen niet opnieuw te ordenen.

    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
    

    Ik heb je JOIN herschreven om de SQL-92-syntaxis te gebruiken, wat ik aanbeveel.

  2. Schakel de nieuwe InnoDB persistent stats functie, terugkerend naar pre-5.6-gedrag.

    In uw my.cnf-bestand:

    innodb_stats_persistent=0
    
  3. Ververs de statistieken van de InnoDB-optimalisatie handmatig nadat u een belangrijke wijziging in de gegevens hebt aangebracht (bijvoorbeeld na het laden van een mysqldump):

    ANALYZE TABLE items;
    ANALYZE TABLE formats;
    

PS:ik werk bij Percona en deze bug is ontdekt door mijn collega Justin Swanhart .




  1. Hoe kan ik MySQL gebruiken met Python 3.3 en Django 1.5?

  2. Toepassingen die op Linux draaien verbinden met Amazon Relational Database Services (RDS) voor SQL Server

  3. Zet Unix-tijdstempel om in voor mensen leesbare datum met MySQL

  4. Hoe maak je een blog in PHP en MySQL-database - Admin Posts