简体   繁体   中英

Variables for Innodb engine for MariaDB

Below are the system specs for my server where i am running my MariaDB10-0.14. The OS is CentOS-6.5, and the server only hosts MariaDB and its test tools (sysbench and mysqlslap) thats it. This db server is a slave replica of another MariaDB server sitting on another machine. There are about 1000 tables in all databases in the db server, and all tables are innodb. There are more reads(400 simultaneously) than inserts (60 simultaneously) from the application, but the number of inserts is a good number too. So here is some info about my linux server:

[root ~]# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda1       18625404 7430560  10248720  43% /
tmpfs           1958396       0   1958396   0%  /dev/shm

[root ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        18G  7.1G  9.8G  43% /
tmpfs           1.9G     0  1.9G   0% /dev/shm

[root@ ~]# free -m
             total       used       free     shared    buffers     cached
Mem:          3824       3209        615          0        146       2390
-/+ buffers/cache:        671       3153
Swap:         1999          0       1999

[root ~]# nproc
4

Below are the largest tables on the database server:

数据库服务器中最大的表

Question : With the provided info, what would be the best variables settings for:

   innodb_buffer_pool_size
    innodb_log_buffer_size
    innodb_log_file_size
    innodb_flush_log_at_trx_commit
    innodb_lock_wait_timeout:
    innodb_doublewrite
    innodb_thread_concurrency
    innodb_read_io_threads
    innodb_write_io_threads
    innodb_concurrency_tickets
    innodb_adaptive_max_sleep_delay
    innodb_commit_concurrency
    innodb_read_ahead_threshold

innodb_buffer_pool_size

If possible: a bit larger than all tablespace files combined

If that isn't possible: as large as you can make it

Buffer pool hit rate in SHOW ENGINE INNODB STATUS will provide hints whether buffer pool size is a potential bottleneck

innodb_log_buffer_size

if you can afford it: up to innodb_log_file_size

innodb_log_file_size

At least 10 times the size of the largest transaction you're expecting to handle

innodb_flush_log_at_trx_commit

If you care about your data you want to have this active, if you can live with loosing some transactions on mysqld or system failure you may use one of the "only once per second" settings ...

innodb_lock_wait_timeout

This totally depends on your applications needs, eg how long stalling while waiting for a row lock to be granted is acceptable

innodb_doublewrite

If you care about data integrity you definitely want to have this active, unless you are on a file system that has a similar feature internally (ZFS, btrfs do as far as I can tell, others not so much)

innodb_thread_concurrency innodb_read_io_threads innodb_write_io_threads innodb_concurrency_tickets innodb_adaptive_max_sleep_delay innodb_commit_concurrency innodb_read_ahead_threshold

totally depends on your actual workload, defaults should usually be fine though

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM