一、文件(數(shù)據(jù)文件、日志文件)
1、相關(guān)參數(shù):
innodb_data_home_dir
innodb_data_file_path=file_name:file_size[:autoextend[:max:max_file_size]]
注:
a、innodb_data_file_path的值應(yīng)該為一個(gè)或多個(gè) 數(shù)據(jù)文件規(guī)格的列表。如果命名一個(gè)以上的數(shù)據(jù)文件,用 分號(hào)(‘;’)分隔它們
b、autoextend屬性和后面跟著的屬性只可被用來(lái)對(duì)innodb_data_file_path行里最后一個(gè)數(shù)據(jù)文件。
c、InnoDB不創(chuàng)建目錄,所以在啟動(dòng)
服務(wù)器之前請(qǐng)確認(rèn)/ibdata目錄的確存在
d、如果沒(méi)有指定innodb_data_home_dir,則默認(rèn)為MySQL數(shù)據(jù)目錄
e、如果你指定innodb_data_home_dir為一個(gè)空字符串,你可以為列在innodb_data_file_path值里的數(shù)據(jù)文件指定絕對(duì)路徑。
[mysqld]
innodb_data_home_dir =
innodb_data_file_path=/ibdata/ibdata1:50M;/ibdata/ibdata2:50M:autoextend
二、參數(shù)
1、innodb_autoextend_increment(動(dòng)態(tài),默認(rèn)為8M)
當(dāng)自動(dòng)擴(kuò)展表空間被填滿(mǎn)之時(shí),為擴(kuò)展而增加的尺寸(MB為單位)。
2、innodb_fast_shutdown(動(dòng)態(tài),默認(rèn)為1)
0:在關(guān)閉之前做一個(gè)完全凈化、插入緩沖合并和刷臟頁(yè),最慢,但重啟最快
1:InnoDB在關(guān)閉之時(shí)跳過(guò)purge和insert buffer merge,只刷臟頁(yè)
2:刷新日志并強(qiáng)制關(guān)閉,類(lèi)似crash,數(shù)據(jù)不會(huì)丟,但在啟動(dòng)時(shí)會(huì)做一次崩潰恢復(fù)
mysql在關(guān)閉的時(shí)候進(jìn)行的操作:
1、purge all:刪除無(wú)用的undo頁(yè)
2、merge insert buffer
3、flush dirty page
3、innodb_flush_log_at_trx_commit(動(dòng)態(tài),默認(rèn)為1)
0:最快,日志緩沖按默認(rèn)每秒一次地刷到磁盤(pán),但在事務(wù)提交時(shí)不做操作,mysql崩潰時(shí)會(huì)丟失最后一秒的事務(wù)
1:最安全,日志緩沖按默認(rèn)每秒一次地刷到磁盤(pán),并在事務(wù)提交時(shí)刷新到日志文件,同時(shí)調(diào)用fsync刷新到磁盤(pán)
2:折中,日志緩沖按默認(rèn)每秒一次地刷到磁盤(pán),并在事務(wù)提交時(shí)刷新到日志文件,但不調(diào)用fsync,只有在系統(tǒng)崩潰時(shí)才會(huì)丟失最后一秒的事務(wù)
4、innodb_force_recovery(靜態(tài),默認(rèn)為0),用于從損壞的DB轉(zhuǎn)儲(chǔ)數(shù)據(jù)
0:表示當(dāng)需要恢復(fù)時(shí)執(zhí)行所有的恢復(fù)操作(即校驗(yàn)數(shù)據(jù)頁(yè)/purge undo/insert buffer merge/rolling back&forward).當(dāng)不能進(jìn)行有效的恢復(fù)操作時(shí),mysql有可能無(wú)法啟動(dòng),并記錄下錯(cuò)誤日志.
1.(SRV_FORCE_IGNORE_CORRUPT): 忽略檢查到的corrupt頁(yè).
2.(SRV_FORCE_NO_BACKGROUND): 阻止主線(xiàn)程的運(yùn)行,如主線(xiàn)程需要執(zhí)行full purge操作,會(huì)導(dǎo)致crash.
3.(SRV_FORCE_NO_TRX_UNDO): 不執(zhí)行事務(wù)回滾操作.
4.(SRV_FORCE_NO_IBUF_MERGE): 不執(zhí)行插入緩沖的合并操作.
5.(SRV_FORCE_NO_UNDO_LOG_SCAN): 不查看重做日志,InnoDB存儲(chǔ)引擎會(huì)將未提交的事務(wù)視為已提交.
6.(SRV_FORCE_NO_LOG_REDO): 不執(zhí)行前滾的操作.
當(dāng)設(shè)置參數(shù)值大于0后,可以對(duì)表進(jìn)行select、create、drop操作,但insert、update、delete這類(lèi)操作是不允許的
5、innodb_lock_wait_timeout
InnoDB事務(wù)在回滾之前可以等待一個(gè)鎖定的秒數(shù)
6、innodb_max_dirty_pages_pct
InnoDB中的主線(xiàn)程試著從緩沖池寫(xiě)頁(yè)面,使得臟頁(yè)的百分比不超過(guò)這個(gè)值。
在show innodb status的log段中,可以查看Last checkpoint at與Log flushed up to的距離判斷當(dāng)前臟頁(yè)的情況
在BUFFER POOL AND MEMORY中,查看Modified db pages與Buffer pool size的比例關(guān)系,該值約等于innodb_max_dirty_pages_pct
show innodb status\G;
LOG
---
Log sequence number 16 881655880
Log flushed up to 16 881649862
Last checkpoint at 16 546135914
可以看到檢查點(diǎn)與log sequence number,Log flushed up to都有相當(dāng)大的差距。
----------------------
BUFFER POOL AND MEMORY
----------------------
Total memory allocated 19338953832; in additional pool allocated 13600768
Buffer pool size 1048576
Free buffers 17666
Database pages 1009478
Modified db pages 204553
修改的頁(yè)占到整個(gè)數(shù)據(jù)庫(kù)buffer pool頁(yè)將近20%,大小為204553*16k/1024=3.196G
7、innodb_max_purge_lag
8、innodb_mirrored_log_groups(默認(rèn)為1,沒(méi)有鏡像)
為數(shù)據(jù)庫(kù)保持的日志組內(nèi)同樣拷貝的數(shù)量。
9、innodb_open_files
在InnoDB中,這個(gè)選項(xiàng)僅與你使用多表空間時(shí)有關(guān)。它指定InnoDB一次可以保持打開(kāi)的.ibd文件的最大數(shù)目。最小值是10。 默認(rèn)值300。
對(duì).ibd文件的文件描述符是僅對(duì)InnoDB的。它們獨(dú)立于那些由--open-files-limit服務(wù)器選項(xiàng)指定的描述符,且不影響表緩存的操作。
innodb_thread_concurrency
InnoDB試著在InnoDB內(nèi)保持操作系統(tǒng)線(xiàn)程的數(shù)量少于或等于這個(gè)參數(shù)給出的限制。如果有性能問(wèn)題,并
且SHOW INNODB STATUS顯示許多線(xiàn)程在等待信號(hào),可以讓線(xiàn)程“thrashing” ,并且設(shè)置這個(gè)參數(shù)更小或更
大。如果你的計(jì)算機(jī)有多個(gè)處理器和磁盤(pán),你可以試著這個(gè)值更大以更好地利用計(jì)算機(jī)的資源。一個(gè)推薦的值
是系統(tǒng)上處理器和磁盤(pán)的個(gè)數(shù)之和。值為500或比500大會(huì)禁止 調(diào)用并發(fā)檢查。默認(rèn)值是20,并且如果設(shè)置大
于或等于20,并發(fā)檢查將被禁止。
· innodb_status_file
這個(gè)選項(xiàng)讓InnoDB為周期的SHOW INNODB STATUS輸出創(chuàng)建一個(gè)文件/innodb_status.
本文名稱(chēng):MySQLInnoDB常見(jiàn)參數(shù)詳解
文章源于:
http://weahome.cn/article/psessg.html