下面是运行MariaDB10-0.14的服务器的系统规范。操作系统是CentOS6.5,服务器只托管MariaDB及其测试工具(sysbench和mysqlslap)。此db服务器是位于另一台计算机上的另一台MariaDB服务器的从副本。数据库服务器中的所有数据库中大约有1000个表,所有表都是无害的。来自应用程序的读取(400同时)多于插入(60同时),但是插入的数量也是一个很好的数字。下面是关于我的linux服务器的一些信息:
[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以下是数据库服务器上最大的表:

问题:通过提供的信息,最好的变量设置是:
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发布于 2014-11-25 11:06:18
innodb_buffer_pool_size
如果可能的话:比所有表空间文件加起来还要大一点
如果那是不可能的:尽可能大
显示引擎INNODB状态中的缓冲池命中率将提示缓冲池大小是否是潜在的瓶颈。
innodb_log_buffer_size
如果你能负担得起的话:直到innodb_log_file_size
innodb_log_file_size
至少是您期望处理的最大事务的10倍
innodb_flush_log_at_trx_commit
如果您关心您想要激活的数据,如果您可以忍受在mysqld或系统故障上丢失一些事务,您可以使用“每秒只有一次”设置之一.
innodb_lock_wait_timeout
这完全取决于应用程序的需要,例如,在等待行锁被授予时,延迟时间是可以接受的。
innodb_doublewrite
如果您关心数据的完整性,那么您肯定希望激活该功能,除非您所在的文件系统内部具有类似的功能(据我所知,ZFS、btrfs可以这样做,其他人则不这么认为)
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
完全取决于您的实际工作负载,缺省值通常应该是可以的。
https://stackoverflow.com/questions/26777378
复制相似问题