2014-11-06 94 views
1

下面是我的服务器的系统规格,我正在运行我的MariaDB10-0.14。操作系统是CentOS-6.5,服务器仅托管MariaDB及其测试工具(sysbench和mysqlslap)即可。该数据库服务器是另一台机器上另一台MariaDB服务器的从副本。在数据库服务器的所有数据库中大约有1000个表,并且所有表都是innodb。与应用程序中的插入(60个同时)相比,有更多的读取(400个同时),但插入的数量也是一个很好的数字。因此,这里是我的Linux服务器的一些信息:MariaDB的Innodb引擎变量

[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 

[[email protected] ~]# 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 

下面是数据库服务器上的最大的表:

Largest Tables in the db server

问题:随着所提供的信息,这将是最好的

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 

回答

0

innodb_buffer_:变量设置pool_size

如果可能的话:比所有的表空间文件合并

大一点。如果这是不可能的:大到你可以把它

缓冲池命中SHOW ENGINE INNODB STATUS率提供线索缓冲池大小是否是一个潜在的瓶颈

innodb_log_buffer_size

如果你能负担得起:高达innodb_log_file_size

innodb_log_file_size

至少10倍你期待处理的最大交易规模

的innodb_flush_log_at_trx_commit

如果你关心你想要的数据E本活跃, 如果你能在mysqld的 或系统故障造成的数据丢失住你可以使用的“只有每 一旦第二个”设置一个...

innodb_lock_wait_timeout

这完全取决于你的应用需求,例如 多久失速在等待行锁是 理所当然是可以接受的

innodb_doublewrite

如果你关心数据的完整性你一定要 有这个活动的,除非你是在一个文件在内部有类似的功能系统 (ZFS,BTRFS做 据我所知,其他人没有这么多)

innod b_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

完全取决于你的实际工作量, 默认值通常应该罚款虽然