MySQL è il sistema di gestione di database relazionali open source in più rapida crescita con 100 milioni di download fino ad oggi. È una scelta popolare di database da utilizzare nelle applicazioni Web ed è attualmente utilizzato da molti grandi siti Web, inclusi Facebook, Twitter, Wikipedia, Flickr, YouTube ecc. Ora scopriamo i 10 principali fatti e suggerimenti interessanti su MySQL.
Fatti interessanti e suggerimenti su MySQL
1. MySQL supporta fino a 64 indici per tabella. Ogni indice può essere composto da 1 a 16 colonne. La dimensione massima dell'indice è 1000 byte (767 per InnoDB).
2. La dimensione massima di una riga in una tabella MySQL è 65.535 byte. E il valore massimo di Signed Integer è 2.147.483.647 e il valore di Unsigned Integer è 4.294.967.295. In una tabella mista con CHAR e VARCHAR, MySQL cambierà i CHAR in VARCHAR.
3. Se un indice PRIMARY KEY o UNIQUE è costituito da una sola colonna che ha un tipo intero, puoi anche fare riferimento alla colonna come "_rowid" nelle istruzioni SELECT.
4. Per modificare il valore di AUTO_INCREMENT, utilizzare “ALTER TABLE
5. Per impedire l'accesso pubblico a MySQL, utilizzare l'opzione "skip-networking" nel file di configurazione. Quando è abilitato, MySQL ascolta solo le connessioni socket locali e ignora tutte le porte TCP. E il parametro "bind-address" che è impostato su "127.0.0.1" limita MySQL ad essere accessibile solo dal localhost.
6. Se MySQL ha stabilito molte connessioni (ovvero un sito Web senza connessioni persistenti), puoi migliorare le prestazioni impostando thread_cache_size su un valore diverso da zero. 16 è un buon valore per cominciare. Aumenta il valore fino a quando i tuoi threads_created non crescono molto rapidamente.
7. NO_AUTO_VALUE_ON_ZERO sopprime l'incremento automatico per 0. Solo NULL genera il numero di sequenza successivo. Questa modalità può essere utile se 0 è stato memorizzato nella colonna AUTO_INCREMENT di una tabella. (Memorizzare 0 non è una pratica consigliata, tra l'altro.)
8. Le opzioni di configurazione "innodb_analyze_is_persistent", "innodb_stats_persistent_sample_pages" e "innodb_stats_transient_sample_pages" forniscono una maggiore precisione delle statistiche dell'indice InnoDB e coerenza tra i riavvii di MySQL. InnoDB preelabora le statistiche che aiutano l'ottimizzatore a decidere quali indici utilizzare in una query, campionando una parte dell'indice. Puoi regolare la quantità di campionamento che InnoDB esegue per ciascun indice. Le statistiche risultanti ora possono persistere tra i riavvii del server, anziché essere ricalcolate (ed eventualmente modificate) a causa di riavvii e alcuni eventi di runtime. Le statistiche più accurate possono migliorare le prestazioni delle query e l'aspetto della persistenza può mantenere stabili le prestazioni delle query. Quando la funzione delle statistiche persistenti è abilitata, le statistiche vengono ricalcolate solo quando esegui in modo esplicito ANALYZE TABLE per la tabella.
9. InnoDB libera la memoria associata a una tabella aperta per facilitare il carico di memoria su sistemi con un numero enorme di tabelle. Un algoritmo LRU seleziona le tabelle che sono andate più a lungo senza essere accessibili. Per riservare più memoria per le tabelle aperte, aumenta il valore dell'opzione di configurazione –table_definition_cache=#.
10. Impostare il parametro table_cache in modo che corrisponda al numero di tabelle aperte e connessioni simultanee. Osserva il valore di open_tables e se sta crescendo rapidamente devi aumentare la dimensione di "table_cache". E per il parametro "open_file_limit" imposta questo limite come 20+max_connections+table_cache*2. Se hai query complesse, "sort_buffer_size" e "tmp_table_size" potrebbero essere molto importanti. I valori dipenderanno dalla complessità della query e dalle risorse disponibili, ma rispettivamente 4 Mb e 32 Mb sono punti di partenza consigliati.
Nota:questi sono valori "per connessione". Quindi, considera il tuo carico e la tua risorsa disponibile quando imposti questi parametri. Ad esempio, sort_buffer_size viene allocato solo se MySQL deve eseguire un ordinamento, fai attenzione a non esaurire la memoria.