Cosa devo sapere prima di andare in diretta con un database InnoDB?


10

Cosa deve sapere e fare un amministratore di server o DB prima di rendere disponibile un database InnoDB.

Sto pensando a cose come impostare valori corretti per innodb_buffer_pool_sizeeinnodb_log_file_size

Quindi quali cose semplici potresti dimenticare di configurare che farebbero funzionare meno efficacemente l'applicazione che utilizza il database?

Risposte:


14

Ci sono alcune opzioni di configurazione che dovresti considerare prima di iniziare.

Fintanto che non usi affatto myisam, puoi allocare in modo sicuro quasi tutto (mantienilo sufficiente per far funzionare il tuo sistema operativo comodamente e abbastanza per te max_connections) la tua memoria innodb_buffer_pool. La cosa bella di InnoDB è che gestisce quasi tutta la memoria da sola, non c'è bisogno di separare cose come cache di query, buffer di chiavi ecc.

Consiglierei di abilitarlo innodb_file_per_table, semplicemente perché rende molto più semplice sfogliare il file system e vedere quanto spazio necessitano le diverse tabelle e database. Avrai comunque bisogno di un file ibdata generico per l'uso interno di InnoDB, ma puoi semplicemente definirlo come 10M:autoextend. Non è necessario definire molti file di dati innodb diversi con dimensioni pre-allocate.

innodb_log_file_sizee innodb_log_buffer_sizecombinati devono essere più grandi di dieci volte l'oggetto BLOB più grande se ne hai molti di grandi dimensioni. Se non lo fai (e non dovresti [ 1 , 2 ]), non c'è davvero bisogno di preoccuparsene molto. Controlla il blog sulle prestazioni di MySQL per un rapporto dettagliato su come calcolare.

E quando esegui MySQL per un po ', controlla le tue impostazioni con MySQLTuner o MySQL Tuning Primer .

Per un rapporto più dettagliato, prova mysqlreport e, per il monitoraggio live, controlla mytop .


Una cosa da ricordare su innodb_file_per_table è che i metodi utilizzati per recuperare lo spazio su disco sono diversi. Con i file ibdata puoi recuperare spazio nel tablespace eliminando la fine delle tue tabelle. Con i singoli file di tabella lo spazio non viene ripristinato eliminando, è necessario ricostruire la tabella con la tabella di ottimizzazione per restituire spazio al filesystem. L'ottimizzazione blocca la tabella e quindi può causare tempi di inattività nell'applicazione.
mtinberg,

2

Una leggera "sorpresa" per me è stata che innodb utilizza, per impostazione predefinita, un file per tutti i database / tabelle. A differenza delle tabelle MyISAM che utilizzano una directory per database e file per tabella / tableindex.

Ciò potrebbe importare se sei abituato a ridurre i file fisici su una tabella (ottimizza la tabella xxx)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.