Tuning Mysql

Da Emigar.
Jump to navigation Jump to search

innodb (8.0+)

Impostazioni per avere un database che usa solo InnoDB:

parametri di startup linea di comando (controllare sulla documentazione cosa fanno e come si usano):

--innodb-dedicated-server
--memlock

Modificabili solo nel file di configurazione, serve poi riavvio istanza:

set persist_only disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE";

Con linux serve configurazione hugepages:

set persist_only large_pages=ON;

con 8.4 dovrebbe essere già default:

set persist_only innodb_flush_method=O_DIRECT;
set persist_only global_connection_memory_limit=536870912;
set persist_only global-connection-memory-tracking=TRUE;

Modificabili a caldo:

set persist innodb_buffer_pool_size=536870912;
set persist innodb_redo_log_capacity = 8589934592;

uso memoria

innodb_buffer_pool_size
+ key_buffer_size
+ max_connections*(sort_buffer_size+read_buffer_size+binlog_cache_size)
+ max_connections*2MB


comportamenti strani=

se si configurano hugepages (ma forse anche se non), alcune operazioni fanno allocare memoria, che non viene rilasciata. l'operazione "add constrain foreign key" su tabella grande produce questo effetto

forse usando libjemalloc2 il problema si risolve