MySql -InnoDB服務器端設定

MySql InnoDB服務器端設定

 
  innodb_buffer_pool_size:這是InnoDB最重要的設置,對InnoDB性能有決定性的影響。默認的設置只有8M,所以默認的數據庫設置下面InnoDB性能很差。在只有InnoDB存儲引擎的數據庫服務器上面,可以設置60-80%的內存。更精確一點,在內存容量允許的情況下面設置比InnoDB tablespaces大10%的內存大小。
 
  innodb_data_file_path:指定表數據和索引存儲的空間,可以是一個或者多個文件。最後一個數據文件必須是自動擴充的,也只有最後一個文件允許自動擴充。這樣,當空間用完後,自動擴充數據文件就會自動增長(以8MB爲單位)以容納額外的數據。例如: innodb_data_file_path=/disk1/ibdata1:900M;/disk2/ibdata2:50M:autoextend兩個數據文件放在不同的磁盤上。數據首先放在ibdata1中,當達到900M以後,數據就放在ibdata2中。一旦達到50MB,ibdata2將以 8MB爲單位自動增長。如果磁盤滿了,需要在另外的磁盤上面增加一個數據文件。
 
  innodb_autoextend_increment: 默認是8M, 如果一次insert數據量比較多的話, 可以適當增加.
 
  innodb_data_home_dir:放置表空間數據的目錄,默認在mysql的數據目錄,設置到和MySQL安裝文件不同的分區可以提高性能。
 
  innodb_log_file_size:該參數決定了recovery speed。太大的話recovery就會比較慢,太小了影響查詢性能,一般取256M可以兼顧性能和recovery的速度。
 
  innodb_log_buffer_size:磁盤速度是很慢的,直接將log寫道磁盤會影響InnoDB的性能,該參數設定了log buffer的大小,一般4M。如果有大的blob操作,可以適當增大。
 
  innodb_flush_logs_at_trx_commit=2: 該參數設定了事務提交時內存中log信息的處理。
 
  1) =1時,在每個事務提交時,日誌緩衝被寫到日誌文件,對日誌文件做到磁盤操作的刷新。Truly ACID。速度慢。
 
  2) =2時,在每個事務提交時,日誌緩衝被寫到文件,但不對日誌文件做到磁盤操作的刷新。只有操作系統崩潰或掉電纔會刪除最後一秒的事務,不然不會丟失事務。
 
  3) =0時, 日誌緩衝每秒一次地被寫到日誌文件,並且對日誌文件做到磁盤操作的刷新。任何mysqld進程的崩潰會刪除崩潰前最後一秒的事務
 
  innodb_file_per_table:可以存儲每個InnoDB表和它的索引在它自己的文件中。
 
  transaction-isolation=READ-COMITTED: 如果應用程序可以運行在READ-COMMITED隔離級別,做此設定會有一定的性能提升。
 
  innodb_flush_method: 設置InnoDB同步IO的方式:
 
  1) Default – 使用fsync()。
 
  2) O_SYNC 以sync模式打開文件,通常比較慢。
 
  3) O_DIRECT,在Linux上使用Direct IO。可以顯著提高速度,特別是在RAID系統上。避免額外的數據複製和double buffering(mysql buffering 和OS buffering)。
 
  innodb_thread_concurrency: InnoDB kernel最大的線程數。
 
  1) 最少設置爲(num_disks+num_cpus)*2。
 
  2) 可以通過設置成1000來禁止這個限制
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章