[mysql]innodb檔案介紹
表空間檔案
innodb在儲存上也模仿了oracle的設計,資料按表空間進行儲存,但是和oracle不一樣的是,oracle的表空間是個邏輯的概念,而innodb的表空間是個物理的概念。
你可以通過引數innodb_data_file_path來設定預設的表空間檔案,所有基於innodb儲存引擎的表都會儲存在該檔案內。如果你想基於每個表單獨生成乙個表空間檔案,可以設定引數innodb_file_per_table為on,這樣表的資料、索引和插入緩衝等訊息儲存在單獨的表空間檔案中,但其餘資訊還是儲存在預設的表空間檔案中。
下圖顯示了表空間檔案的儲存方式:
上圖中主要有以下幾種儲存檔案:
1)表結構定義檔案(.frm):mysql裡每個表和每個檢視都有乙個對應的.frm檔案用於記錄表和檢視的定義。注意:該檔案和儲存引擎無關,屬於mysql資料庫本身的檔案。
2)預設表空間檔案(ibdata)
3)單獨表空間檔案(.ibd)
重做日誌檔案
重做日誌檔案對innodb儲存引擎至關重要,記錄了事務日誌,如果資料庫由於宕機導致例項失敗,重新啟動時,就可以利用重做日誌恢復到宕機前的一致性狀態。
mysql的重做日誌和oracle的很類似,通過迴圈的方式覆蓋重用,下圖顯示了乙個擁有3個重做日誌檔案的重做日誌檔案組:
這裡有個疑問,同樣是記錄事務日誌,innodb的重做日誌檔案和mysql自身的二進位制檔案有什麼區別?它們的區別主要有以下三點:
1)首先,範圍不同。二進位制檔案記錄所有與mysql相關的日誌記錄,包括innodb,myisam,heap等儲存引擎的日誌。而innodb的重做日誌只記錄innodb相關的事務日誌。
2)其次,內容不同。二進位制檔案記錄的是關於乙個事務的具體操作內容,而innodb的重做日誌記錄每個資料頁(page)更改的物理情況。
3)寫入的時間不同。二進位制檔案在事務提交之前記錄,在事務進行過程中,不斷有重做日誌條目寫入重做日誌檔案中。
mysql innodb常用引數介紹
show variables like default storage engine 在 my.cnf加入,重啟生效 default storage engine innodb設定預設儲存引擎 show variables like innodb buffer pool size 建議值,不超過物理...
MySQL InnoDB資料儲存檔案型別說明
前言 linux伺服器上安裝好mysql資料庫之後,進入以下目錄 var lib mysql 會發現已經建立好的schema檔案和資料檔案,進入其中乙個schema資料夾,基本主要有以下三種型別的檔案,如下舉例,我們已經有乙個表是message push record mysql檔案型別說明 1.d...
MySQL innoDB效能優化
起因 有乙個innodb引擎的表table,在乙個大概3000次的foreach迴圈中執行 insert into table columna,columnb values valuea,valueb 結果居然超出了60s的php執行限制 當然這個限制可以在php.ini中修改 讓我很不解為何插入效...