sviluppo-web-qa.it

Come aumentare l'utilizzo della memoria in MySQL Server per migliorare la velocità?

Ho un server Windows 2008 con 8 GB di RAM con IIS7 e MySQL. Ho monitorato la memoria, la CPU e l'utilizzo del disco sul server e ho scoperto che MySQL utilizza solo 250 MB di RAM, mantenendo i dischi molto occupati, anche se ho un sacco di RAM libera in giro.

In SQL Server posso facilmente impostare la quantità di memoria che voglio che usi, sto cercando la stessa impostazione in MySQL.

Come posso configurare MySQL per utilizzare più memoria e ridurre l'utilizzo della cpu e del disco?

30
holiveira

table_cache è la direttiva di configurazione più utile da modificare. Ogni volta che MySQL accede a una tabella, carica la tabella nella cache. Se hai un numero elevato di tabelle, è più veloce averle nella cache.

Dai un'occhiata alle variabili del tuo server eseguendo:

show status;

e cerca la variabile open_tables. Se è uguale al tuo table_cache value e opened_tables continua a salire, quindi devi aumentare il table_cache valore nel tuo file di configurazione. Troverai un equilibrio sperimentando queste variabili nelle ore di punta. Vuoi configurarlo in modo che nelle ore di punta ci sia una bassa quantità di opened_tables anche dopo che il server è attivo da molto tempo.

key_buffer_size è anche una buona variabile con cui sperimentare. Questa variabile influisce sulla dimensione del buffer dell'indice e aumentandola aumenta la velocità di gestione dell'indice di MySQL. Puoi guardare le variabili con il show variables; di nuovo il comando e confronta key_read_requests per key_reads. Idealmente, vuoi che il rapporto tra queste due variabili sia il più basso possibile, e puoi farlo aumentando la dimensione del key_buffer_size. Se imposti questa variabile su un valore superiore, avrai meno scritture e letture direttamente da e sul disco, che era la tua principale preoccupazione.

20
James

Devi modificare i valori in my.cnf file e riavvia MySQL, anche se puoi modificarne molti mentre MySQL è in esecuzione ('SET GLOBAL VARIABLE = value ').

Probabilmente vorrai guardare aumentando key_buffer_size, sort_buffer, read_buffer e table_cache per cominciare e probabilmente innodb_buffer_pool_size, se hai delle tabelle InnoDB. Alcuni di questi valori è possibile aumentare notevolmente (anche due ordini di grandezza) soprattutto in considerazione dell'hardware. Le impostazioni predefinite di MySQL sono estremamente conservative e sembravano essere rivolte ai desktop comuni a uso misto di circa dieci anni fa. Oh, e tieni presente che la versione a 32 bit avrà problemi a utilizzare più di 2 GB di RAM.

Cerca in il manuale MySQL per ulteriori informazioni e indicazioni.

6
staticsan