Search code examples
mysqlmysql-workbenchinnodbdatabase-administration

How to optimize InnoDB memory parameters for performance?


I am using Mysql server 5.6. I don't have much idea about setting in my.ini file under MySql folder.

In my my.ini file the memory pool size is set to 679M. We are using InnoDB engine for mysql. Can I change the memory pool size? If yes, how much memory I have to give for better performance? Here below I specify my my.ini file settings.

What are the required settings for the Innodb engine?

Please mention settings which are unnecessary in my.ini file if engine used for mysql is innodb.

My my.ini file:

default-storage-engine=INNODB
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

log-output=FILE    
general_log_file="INDIAN-SERVER.log"

slow-query-log=1    
slow_query_log_file="INDIAN-SERVER-slow.log"

long_query_time=10    
log-error="INDIAN-SERVER.err"
server-id=1

max_connections=151    
query_cache_size=0

table_open_cache=2000    
tmp_table_size=107M

thread_cache_size=10    
myisam_max_sort_file_size=100G    
myisam_sort_buffer_size=204M

key_buffer_size=8M    
read_buffer_size=64K    
read_rnd_buffer_size=256K

sort_buffer_size=256K    
innodb_additional_mem_pool_size=15M    
innodb_flush_log_at_trx_commit=1

innodb_log_buffer_size=8M    
innodb_buffer_pool_size=679M    
innodb_log_file_size=48M

innodb_thread_concurrency=9    
innodb_autoextend_increment=64    
innodb_buffer_pool_instances=8

innodb_concurrency_tickets=5000    
innodb_old_blocks_time=1000    
innodb_open_files=300

innodb_stats_on_metadata=0    
innodb_file_per_table=1    
innodb_checksum_algorithm=0

back_log=80    
flush_time=0

join_buffer_size=256K    
max_allowed_packet=4M    
max_connect_errors=100

open_files_limit=4161    
query_cache_type=0    
sort_buffer_size=256K

table_definition_cache=1400    
binlog_row_event_max_size=8K    
sync_master_info=10000

sync_relay_log=10000    
sync_relay_log_info=10000

Solution

  • See memory for discussion of what to set it to. (It depends on how much RAM you have available.)

    Those settings need to be in the [mysqld] secdion of the config file. The value look like they were generated by some install script; they are probably reasonable. Most people do not need to touch the config, especially if the install script does things such as adjust for RAM size.

    To have my.ini (or my.cnf) values take effect, stop and restart the server. The details of that are OS-dependent.