MySQL
Configurazione e messa a punto
Ricerca…
Osservazioni
La configurazione avviene in uno dei 3 modi:
- opzioni della riga di comando
- il file di configurazione
my.cnf
- impostazione delle variabili dall'interno del server
Le opzioni della riga di comando hanno la forma mysqld --long-parameter-name=value --another-parameter
. Gli stessi parametri possono essere inseriti nel file di configurazione my.conf
. Alcuni parametri sono configurabili utilizzando le variabili di sistema da MySQL. Controlla la documentazione ufficiale per un elenco completo dei parametri.
Le variabili possono avere dash -
o underscore _
. Gli spazi possono esistere attorno al =
. I numeri grandi possono essere suffissi da K
, M
, G
per kilo-, mega- e giga-. Un'impostazione per riga.
Flags: solitamente ON
e 1
sono sinonimi, idem per OFF
e 0
. Alcune bandiere non hanno nulla dietro di loro.
Quando si inseriscono le impostazioni in my.cnf
, tutte le impostazioni per il server devono essere nella sezione [mysqld]
, quindi non aggiungere ciecamente le impostazioni alla fine del file. (Nota: per gli strumenti che consentono a più istanze di mysql di condividere un my.cnf, i nomi delle sezioni potrebbero essere diversi).
Prestazioni InnoDB
Ci sono centinaia di impostazioni che possono essere inserite in my.cnf. Per l'utente "lite" di MySQL, non contano tanto.
Una volta che il tuo database diventa non banale, è consigliabile impostare i seguenti parametri:
innodb_buffer_pool_size
Questo dovrebbe essere impostato su circa il 70% della RAM disponibile (se si dispone di almeno 4 GB di RAM, una percentuale inferiore se si dispone di una minuscola VM o macchina antica). L'impostazione controlla la quantità di cache utilizzata da InnoDB ENGINE. Quindi, è molto importante per le prestazioni di InnoDB.
Parametro per consentire l'inserimento di dati enormi
Se è necessario memorizzare immagini o video nella colonna, è necessario modificare il valore in base alle esigenze dell'applicazione
max_allowed_packet = 10M
M è Mb, G in Gb, K in Kb
Aumentare il limite di stringa per group_concat
group_concat
è usato per concatenare valori non nulli in un group
. La lunghezza massima della stringa risultante può essere impostata utilizzando l'opzione group_concat_max_len
:
SET [GLOBAL | SESSION] group_concat_max_len = val;
L'impostazione della variabile GLOBAL
garantirà un cambiamento permanente, mentre l'impostazione della variabile SESSION
imposterà il valore per la sessione corrente.
Configurazione InnoDB minima
Questa è una configurazione minima per i server MySQL che utilizzano le tabelle InnoDB. Usando InnoDB, la cache delle query non è richiesta. Recupera spazio su disco quando una tabella o un database è DROP
ed. Se si utilizzano SSD, lo svuotamento è un'operazione ridondante (gli SDD non sono sequenziali).
default_storage_engine = InnoDB
query_cache_type = 0
innodb_file_per_table = 1
innodb_flush_neighbors = 0
Concorrenza
Assicurati di poter creare più di 4 thread predefiniti impostando innodb_thread_concurrency
su infinito (0); ciò consente a InnoDB di decidere in base all'esecuzione ottimale.
innodb_thread_concurrency = 0
innodb_read_io_threads = 64
innodb_write_io_threads = 64
Utilizzo del disco rigido
Impostare la capacità (carico normale) e capacity_max (massimo assoluto) di IOPS per MySQL. Il valore predefinito di 200 va bene per HDD, ma in questi giorni, con SSD in grado di migliaia di IOPS, è probabile che si desideri regolare questo numero. Esistono molti test che è possibile eseguire per determinare IOPS. I valori sopra indicati dovrebbero essere quasi quel limite se si sta utilizzando un server MySQL dedicato . Se stai eseguendo altri servizi sulla stessa macchina, dovresti ripartire come appropriato.
innodb_io_capacity = 2500
innodb_io_capacity_max = 3000
Utilizzo della RAM
Imposta la RAM disponibile su MySQL. Sebbene la regola empirica sia del 70-80%, ciò dipende in realtà dall'opportunità o meno dell'istanza di MySQL e dalla quantità di RAM disponibile. Non sprecare RAM (cioè risorse) se hai molto a disposizione.
innodb_buffer_pool_size = 10G
Proteggi la crittografia MySQL
La crittografia predefinita aes-128-ecb
utilizza la modalità Electronic Codebook (ECB), che non è sicura e non dovrebbe mai essere utilizzata. Invece, aggiungi quanto segue al tuo file di configurazione:
block_encryption_mode = aes-256-cbc