2009-12-24 13 views
13

Ho due tabelle in cui desidero maggiore robustezza e fortunatamente non richiedono frequenti rapidi pieni di dati ed esami. Tutti gli altri tavoli sarebbero inevitabilmente MyISAM.Utilizzo di una combinazione di tabelle InnoDB e MyIsam

Posso tranquillamente utilizzare entrambi (ho letto una manciata di scoraggiamenti da questo) senza temere bug o dati influenzati dalle differenze tra i motori?

risposta

11

Sì, è possibile.

Si noti che solo le transazioni supportano le tabelle InnoDB e le relazioni FOREIGN KEY.

26

è possibile, ma questo introduce una serie di svantaggi:

  • tua ottimizzazione del server sarà ora necessariamente essere un compromesso - non è possibile utilizzare tutta la memoria sia per MyISAM o InnoDB (NB: Questo non si applica se sono su server diversi)
  • La replica fallisce in un numero di casi limite, perché se si ha una transazione fallita che contiene modifiche ad alcune tabelle MyISAM, non può né eseguirne il commit né il roll back
  • È ancora possibile ' t eseguire il backup del server utilizzando MVCC, perché non si otterrà comunque un'istantanea coerente di MyISAM t ables

Fondamentalmente, ti incoraggio a passare interamente a InnoDB. Quindi puoi quasi dimenticarti di MyISAM e non dedicare risorse ad esso, e ottenere tutti i benefici dell'utilizzo di InnoDB. Chiunque pensi che MyISAM sia più veloce non sta sintonizzando correttamente InnoDB, o ha dati così piccoli che a chi importa.

MyISAM esegue scansioni più veloci delle tabelle, ma se lo fai su tavoli di grandi dimensioni, hai problemi più grandi.

+0

Bella risposta MarkR, mi chiedevo in quali "casi limite" la replica di un database InnoDB/MyIsam misto poteva fallire? Utilizzare solo le transazioni che interessano le tabelle InnoDB e MyIsam? Pensi che sia sicuro in ogni altro caso? Grazie –

+0

Se una transazione si verifica sul master che coinvolge le tabelle MyISAM e innodb, commette con successo, viene eseguito il bin-logging, quindi sullo slave, la parte InnoDB non riesce con un deadlock, la transazione verrà ritentata. Tuttavia, la parte MyISAM della transazione non può essere ripristinata, quindi lo schiavo dovrà ripeterlo (e sperare che non accada nulla di brutto) - ma può accadere qualcosa di brutto, e l'intero schiavo si rompe (la replica viene interrotta fino all'intervento manuale) . Ci sono molti altri casi, questo è un esempio che ho appena inventato. – MarkR

Problemi correlati