Domanda

Ho un unico database di circa 4,5 GB in esecuzione su un server con 8 GB di RAM. La stragrande maggioranza delle tabelle MyISAM sono (circa 4.3GB), ma sono ben presto andando a convertire alcuni di loro a InnoDB. (Sta andando essere un processo lento, concentrandosi sulle maggior parte dei tavoli ad alta intensità di scrittura in un primo momento).

C'è sbagliato nulla con l'esecuzione di un server dedicato in cui esistono entrambi i tipi di motori di archiviazione?

È stato utile?

Soluzione

Non c'è niente di sbagliato con l'utilizzo di storage engine multipli sulla stessa macchina fisica, fino a quando a capire i pro ei contro di ciascuna. Ci sono considerazioni sulle prestazioni, le limitazioni delle funzionalità e casi d'uso per tutti i tipi di archiviazione plugin.

Per esempio, se si dispone di un piccolo tavolo che è il 90% scrive, è possibile scegliere MyISAM. Se i dati possono essere rigenerati con facilità ed è un piccolo tavolo, ad esempio per fare la coda, è possibile scegliere di memoria. Se si dispone di una tabella che è il 90% legge, ei dati ha avuto modo di essere lì quando si guarda per esso, allora si sarebbe probabilmente scegliere un motore di storage che supporta le transazioni e atomicità configurabile, come ad esempio InnoDB. Se si desidera che l'accessibilità attraverso il file system w / o danneggiare i dati, è possibile scegliere CSV.

Tuttavia, si può tranquillamente utilizzare i motori di storage multipli all'interno dello stesso schema, così come l'host fisico.

Mi permetta di notare, però, che i buffer di svolgere un ruolo in tutto questo casino. Se si utilizza sia MyISAM e InnoDB, sarà necessario stare attenti che il vostro key_buffer e innodb_buffer_pool non sostengono. Questo richiederà un'attenta pianificazione da parte vostra, ma questo è quello che facciamo.

Altri suggerimenti

Non posso dirvi se questa è una pratica comune. Posso dire circa la mia esperienza personale.

Ho sempre utilizzare lo strumento migliore per il lavoro, in modo da mescolare i motori per tutto il tempo. La maggior parte dei miei progetti usano MyISAM come motore di default.

Quando ho bisogno di caratteristiche speciali solo disponibili sul InnoDB, vado per esso.

Quando una tabella è in gran parte di sola lettura, scelgo il motore Archivio prima di riuscire a lampeggiare.

Sapendo che server di macchina ha memoria sufficiente, tutti i miei dati temporanei sono store on tabelle Heap.

ho visto in passato, MyISAM alcuni rallentamenti miscelazione e InnoDB, ma questo non è un problema specifico di MySQL. Si tratta di un problema di progettazione, non apparente quando si utilizza un solo motore. In realtà usando il motore di sbagliato provoca più il rallentamento non importa se è solo MyISAM, InnoDB solo o un mix di entrambi. E 'difficile definire una formula per sapere quando il rallentamento sarebbe accaduto. Basta test reali potevano dire a voi.

Naturalmente, non poteva preservare l'integrità e la coerenza miscelazione InnoDB e MyISAM su una query unico.

Cerco di evitare di mescolare le tabelle MyISAM e InnoDB nello stesso database, ma questo è per la sanità mentale, piuttosto che motivi di ordine pratico. Tuttavia, trovo utile avere una banca dati con le tabelle MyISAM per la ricerca full-text in modo da poter eseguire tale su siti. Tenendolo in un database separato con una chiave esterna per ogni voce rende facile per gli altri sviluppatori che lavorano sul DB per vedere cosa sta succedendo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a dba.stackexchange
scroll top