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

Problema di Percona 5.6 InnoDB che non utilizza correttamente gli indici

Sembra:Bug #70617 Le statistiche persistenti predefinite possono causare lunghi tempi di query imprevisti

Per quel che vale, questo non è un bug di Percona, è presente anche nell'edizione della community di MySQL 5.6.

Esistono tre possibili soluzioni alternative:

  1. Usa STRAIGHT_JOIN per dare un suggerimento all'ottimizzatore di non riordinare i riferimenti alle tabelle.

    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
    

    Ho riscritto il tuo JOIN per utilizzare la sintassi SQL-92, che consiglio.

  2. Disattiva le nuove Statistiche persistenti di InnoDB funzionalità, ripristinando il comportamento precedente alla 5.6.

    Nel tuo file my.cnf:

    innodb_stats_persistent=0
    
  3. Aggiorna manualmente le statistiche dell'ottimizzatore InnoDB dopo aver apportato una modifica significativa ai dati (ad esempio, dopo aver caricato un mysqldump):

    ANALYZE TABLE items;
    ANALYZE TABLE formats;
    

PS:lavoro in Percona e questo bug è stato scoperto dal mio collega Justin Swanhart .