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


28

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?

Risposte:


20

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_cachevalore e opened_tablescontinua a salire, devi aumentare il table_cachevalore nel tuo file di configurazione. Troverai un equilibrio sperimentando queste variabili nelle ore di punta. Si desidera configurarlo in modo che nelle ore di punta, ci sia una bassa quantità opened_tablesanche dopo che il server è stato acceso per 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. Potete guardare le variabili con il show variables;comando di nuovo, e confrontare key_read_requestsa key_reads. Idealmente, vuoi che il rapporto tra queste due variabili sia il più basso possibile e puoi farlo aumentando la dimensione di 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.


11
In realtà il comando è show status; vedere variabili di stato come Open_tablese Opened_tables. table_cachesembra essere stato rimosso nelle recenti versioni di MySQL.
Matt Fenwick,

5

È necessario modificare i valori nel my.cnffile e riavviare MySQL, anche se è possibile modificarne molti mentre MySQL è in esecuzione ('SET GLOBAL VARIABLE = value ').

Probabilmente si vuole guardare ad aumentare key_buffer_size, sort_buffer, read_buffere table_cacheper cominciare e, probabilmente innodb_buffer_pool_size, se avete le tabelle InnoDB. Alcuni di questi valori possono aumentare di molto (anche due ordini di grandezza), specialmente in considerazione dell'hardware. Le impostazioni predefinite di MySQL sono estremamente conservative e sembravano essere indirizzate 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.

Consulta il Manuale di MySQL per ulteriori informazioni e indicazioni.

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.