2014-11-06 91 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

完全取決於你的實際工作量, 默認值通常應該罰款雖然