標籤:隔離等級 convert 不同 ted toe 日誌 http 知識 重新整理
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_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來禁止這個限制
【mysql】mysql innodb 配置詳解