Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 11711|Risposta: 0

[Fonte] Il file di configurazione MySQL my.cnf è spiegato in dettaglio

[Copiato link]
Pubblicato su 13/11/2017 11:55:59 | | |
Regola i parametri di esecuzione di MySQL, modifica il file /etc/my.cnf Regola i parametri di esecuzione di MySQL per farli entrare in vigore dopo il riavvio di MySQL, dopo la versione 4 di MySQL alcune variabili interne possono essere impostate a runtime di MySQL, ma saranno invalide quando MySQL viene riavviato.
Programma MySQL - Directori e File
basedir = percorso # Usa la directory fornita come directory radice (directory di installazione).
datadir = path # Leggi il file del database da una data directory.
pid-file = nome file # Specificare un file per il programma mysqld per memorizzare l'ID del processo (disponibile solo per sistemi UNIX/Linux);

[mysqld]                        
socket = /tmp/mysql.sock # Specifica un file socket per la comunicazione locale tra il programma client MySQL e il server (il file predefinito su Linux è /var/lib/mysql/mysql.sock)
port=3306 # Specifica la porta che MsSQL ascolta
key_buffer = 384M # key_buffer è la dimensione del buffer utilizzato per indicizzare i blocchi, aumentando l'indice gestito meglio (per tutte le letture e multiscritture).
                               Il blocco indice è bufferizzato e condiviso da tutti i thread, e la dimensione del key_buffer dipende dalla dimensione della memoria.
table_cache = 512 # Il numero di tabelle aperte per tutti i thread. Aumentare questo valore aumenta il numero di descrittori di file richiesti da mysqld. Evita il sovraccarico di aprire frequentemente tabelle dati
sort_buffer_size = 2M # Alloca un buffer di quella dimensione per ogni thread da ordinare. Aumentare questo valore accelera le operazioni ORDER BY o GROUP BY.
                               Nota: La memoria allocata corrispondente a questo parametro è esclusiva per ogni connessione! Se ci sono 100 connessioni, allora la dimensione totale del buffer di ordinamento effettivamente allocata è 100×6 = 600MB
read_buffer_size = 2M # La dimensione del buffer che può essere utilizzato per l'operazione di lettura. Come per sort_buffer_size, anche la memoria allocata corrispondente a questo parametro è esclusiva per ogni connessione.
query_cache_size = 32M # Specifica la dimensione del buffer di risultati della query MySQL
read_rnd_buffer_size = 8M # Cambia il parametro da leggere casualmente dopo l'ordinamento usando il puntatore per riga.
myisam_sort_buffer_size =64M # Buffer necessario per riordinare le tabelle MyISAM quando cambiano
thread_concurrency = 8 # Il numero massimo di thread concorrenti è impostato come il numero di CPU logiche del server ×2, e se la CPU supporta l'hyperthreading H.T, × 2
thread_cache = 8 # #缓存可重用的线程数
Skip-locking # evita il blocco esterno di MySQL, riduce il rischio di errori e migliora la stabilità.
[mysqldump]
max_allowed_packet =16M # Il pacchetto massimo di informazioni che può essere inviato tra il server e il client

[mia, chiaro]
key_buffer = 256M
sort_buffer = 256M
read_buffer = 2M
write_buffer = 2M

Altri parametri opzionali:
back_log = 384
    Specifica il numero di possibili connessioni per MySQL.
    Quando il thread principale MySQL riceve un numero molto elevato di richieste di connessione in un periodo di tempo molto breve, questo parametro entra in vigore e il thread principale impiega un breve tempo per controllare la connessione e avviarne un nuovo thread.
    Il valore di back_log parametro indica quante richieste possono essere memorizzate nello stack per un breve periodo di tempo prima che MySQL smetta temporaneamente di rispondere a nuove richieste.
    Se il sistema ha molte connessioni in un breve periodo di tempo, è necessario aumentare il valore di questo parametro, che specifica la dimensione della coda di ascolto per le connessioni TCP/IP in ingresso.
    Cercare di impostare un limite che back_log superiore al sistema operativo sarà inefficace. Il valore predefinito è 50. Per i sistemi Linux, si raccomanda impostare un intero inferiore a 512.
max_connections = n
    Il numero massimo di connessioni al database che il server MySQL può gestire contemporaneamente (l'impostazione predefinita è 100). Se il limite viene superato, verrà segnalato l'errore Troppe connessioni
key_buffer_size = n
    Valore RMA per blocchi indice (impostazione predefinita 8M), aumentare l'indice per una migliore gestione (per tutte le letture e multiscritture)
record_buffer:
    Ogni thread che effettua una scansione sequenziale alloca un buffer di questa dimensione a ciascuna tabella che scansiona.
    Se fai molte scansioni sequenziali, potresti voler aumentare quel valore. Il valore predefinito è 131072 (128K)
wait_timeout:
    Il numero di secondi che il server aspetta un'azione su una connessione prima di spegnerla.
interactive_timeout:
    Il numero di secondi che il server aspetta un'azione su una connessione interattiva prima di spegnerla.
    Un cliente interattivo è definito come un cliente che utilizza l'opzione CLIENT_INTERACTIVE per mysql_real_connect().
    Il valore predefinito è 28800, puoi cambiarlo in 3600.
Skip-nome-risoluzione            
    Disabilita MySQL dalla risoluzione DNS sulle connessioni esterne; usando questa opzione si elimina il tempo necessario a MySQL per risolvere il DNS.
    Tuttavia, va notato che, se questa opzione è abilitata, tutte le autorizzazioni di connessione host remote devono utilizzare il metodo dell'indirizzo IP, altrimenti MySQL non sarà in grado di elaborare normalmente la richiesta di connessione!
log-slow-queries = slow.log
    Registra le query lente e ottimizzale una per una
skip-innodb
Skip-BDB
    Chiudi i tipi di tabelle indesiderati e non aggiungere questo se necessario
         
         
# > MOSTRANO VARIABILI COME '%query_cache%';
# > MOSTRA LO STATO COME 'Qcache%';
Se il valore di Qcache_lowmem_prunes è molto grande, indica che spesso c'è un buffering insufficiente;
Se il valore della Qcache_hits è molto grande, indica che il query buffer viene usato molto frequentemente, e se il valore è piccolo ma influisce sull'efficienza, allora puoi considerare di non usare il query buffering.
Se il valore Qcache_free_blocks è molto alto, indica che ci sono molti detriti nel buffer.


##########################################
###### max_allowed_packet      ######
##########################################
Un pacchetto di comunicazione è una singola istruzione SQL inviata al server MySQL o una singola riga al client.
Il pacchetto massimo possibile che può essere inviato tra il server MySQL 5.1 e il client è di 1 GB.
Quando un client MySQL o un server mysqld riceve un pacchetto superiore a max_allowed_packet byte, viene emesso un errore "il pacchetto è troppo grande" e la connessione viene chiusa. Per alcuni client, se il pacchetto di comunicazione è troppo grande, potresti incontrare l'errore "Perdita di connessione al server MySQL" durante la query.
Sia il client che il server hanno le loro variabili max_allowed_packet, quindi se prevedi di gestire pacchetti grandi, devi aggiungere quella variabile sia sul client che sul server.
Se usi un programma client MySQL, la sua variabile max_allowed_packet di default è 16MB. Per impostare un valore maggiore, puoi iniziare mysql nel modo seguente:
mysql> mysql --max_allowed_packet=32M
Imposta la dimensione del pacchetto informativo a 32MB.
Il valore predefinito max_allowed_packet del server è 1MB. Se il server deve elaborare query grandi, puoi aumentare questo valore (ad esempio, se ti stai preparando a elaborare colonne blob grandi). Ad esempio, per impostarlo a 16MB, puoi avviare il server come segue:
mysql> mysqld --max_allowed_packet=16M

Puoi anche usare i file di opzioni per impostare max_allowed_packet. Per impostare questa variabile per il server a 16MB, aggiungi il contenuto downlink al file opzioni:
[mysqld]
max_allowed_packet=16M
È sicuro aumentare il valore di questa variabile perché la memoria aggiuntiva viene allocata solo quando necessario. Ad esempio, mysqld allocherà più memoria solo se si effettua una query lunga o mysqld deve restituire lunghe righe di risultato. Il piccolo valore predefinito di questa variabile è una misura precauzionale per rilevare i pacchetti di errore tra client e server e per garantire che i sovraplessi di memoria non siano causati dall'uso accidentale di pacchetti di grandi dimensioni.
Se usi valori di blob grandi e non concedi il permesso a mysqld per accedere a abbastanza memoria per elaborare query, incontrerai anche strani problemi legati ai pacchetti grandi. Se sospetti che sia così, prova a iniziare ad aumentare ulimit -d 256000 in mysqld_safe script e riavvia MySQLD.
##########################################
##### Come aprire e chiudere tabelle del database in MySQL #####
##########################################
table_cache, max_connections e max_tmp_tables influenzano il numero massimo di file che il server mantiene aperti. Se aumenti uno o entrambi questi valori, puoi incontrare il limite imposto dal tuo sistema operativo sul numero di descriptori di file che ogni processo apre. Tuttavia, puoi aumentare il limite su molti sistemi. Chiedi alla documentazione del tuo sistema operativo di capire come fare, perché i metodi per modificare i limiti variano molto da sistema a sistema.
table_cache legato a max_connections. Ad esempio, per 200 join aperti, dovresti avere un buffer di tabella di almeno 200 * n, dove n è il numero massimo di tabelle in una join.
La cache delle tabelle aperte può essere aumentata fino a un massimo di un table_cache (64 di default; Questo può essere fatto con la -O table_cache=#选项来改变 di mysqld). Una tabella non viene mai chiusa tranne quando la cache è piena e un altro thread cerca di aprire una tabella o se usi mysqladmin refresh o mysqladmin flush-tables.
Quando la cache della tabella è piena, il server utilizza la seguente procedura per trovare una voce di cache da utilizzare:
Le tabelle attualmente non in uso vengono rilasciate, nell'ordine di meno utilizzo (LRU).
Se la cache è piena e non ci sono tabelle da rilasciare, ma è necessario aprire una nuova tabella, la cache deve essere temporaneamente ingrandita.
Se la cache è in uno stato temporaneo espanso e una tabella passa da attiva a inattiva, viene chiusa e rilasciata dalla cache.
Apri una tabella per ogni accesso concorrente. Questo significa che se hai 2 thread che accedono alla stessa tabella o la tabellone due volte nella stessa query (con AS), la tabella deve essere aperta due volte. La prima apertura di qualsiasi tabella contiene 2 descrittori di file; Ogni uso aggiuntivo della tabella rappresenta un solo descrittore di file. Per la prima apertura, viene usato un descrittore aggiuntivo per indicizzare il file; Questa descrizione è condivisa tra tutti i thread




Precedente:Comprendi la directory /etc/init.d e gli script /etc/rc.local sui sistemi Linux
Prossimo:Come confermare che il servizio MySQL sia stato avviato con Linux CentOS
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com