(轉)mysql數據文件解析

一 數據文件php

在 MySQL中每個數據庫都會在定義好(或者默認)的數據目錄下存在一個以數據庫名字命名的文件夾,用來存放該數據庫中各類表數據文件。不一樣的 MySQL存儲引擎有各自不一樣的數據文件,存放位置也有區別。多數存儲引擎的數據文件都存放在和 MyISAM數據文件位置相同的目錄下,可是每一個數據文件的擴展名卻各不同。如 MyISAM用「.MYD」做爲擴展名, Innodb用「 .ibd」, Archive用「 .arc」, CSV用「 .csv」,等等。數據庫

InnoDB,是MySQL的數據庫引擎之一,爲MySQL AB發行binary的標準之一。InnoDB由Innobase Oy公司所開發,2006年五月時由甲骨文公司併購。與傳統的ISAMMyISAM相比,InnoDB的最大特點就是支持了ACID兼容的事務(Transaction)功能,相似於PostgreSQL。目前InnoDB採用雙軌制受權,一是GPL受權,另外一是專有軟件受權。安全

 

MyISAMMySQL的默認數據庫引擎(5.5版以前),由早期的ISAM所改良。雖然性能極佳,但卻有一個缺點:不支持事務處理(transaction)。不過,在這幾年的發展下,MySQL也導入了InnoDB(另外一種數據庫引擎),以強化參照完整性併發違規處理機制,後來就逐漸取代MyISAM。併發

Archive引擎做用: 爲大量不多 引用的歷史、歸檔、或安全審計信息的存儲和檢索提供了完美的解決方案,區別於InnoDB、MyISAM提供壓縮功能,沒有索引。性能

 

MyISAM與Innodb的數據文件:日誌

一、「 .frm」文件索引

與表相關的元數據( meta)信息都存放在「 .frm」文件中,包括表結構的定義信息等。不管是什麼存儲引擎,每個表都會有一個以表名命名的「 .frm」文件。全部的「 .frm」文件都存放在所屬數據庫的文件夾下面。事務

 

二、「 .MYD」文件「 .MYD」文件是 MyISAM存儲引擎專用,存放 MyISAM表的數據。每個 MyISAM表都會有一個「.MYD」文件與之對應,一樣存放於所屬數據庫的文件夾下,和「 .frm」文件在一塊兒 。ip

 

三、「 .MYI」文件開發

「 .MYI」文件也是專屬於 MyISAM存儲引擎的,主要存放 MyISAM表的索引相關信息。對於 MyISAM存儲來講,能夠被cache的內容主要就是來源於「 .MYI」文件中。每個 MyISAM表對應一個「 .MYI」文件,存放於位置和「.frm」以及「 .MYD」同樣。

 

四、「 .ibd」文件和 ibdata文件

這兩種文件都是存放 Innodb數據的文件,之因此有兩種文件來存放 Innodb的數據(包括索引),是由於 Innodb的數據存儲方式可以經過配置來決定是使用共享表空間存放存儲數據,仍是獨享表空間存放存儲數據。獨享表空間存儲方式使用「 .ibd」文件來存放數據,且每一個表一個「 .ibd」文件,文件存放在和 MyISAM數據相同的位置。若是選用共享存儲表空間來存放數據,則會使用 ibdata文件來存放,全部表共同使用一個(或者多個,可自行配置)ibdata文件。 ibdata文件能夠經過 innodb_data_home_dir和 innodb_data_file_path兩個 參數共 同配置 組成,innodb_data_home_dir 配置 數據存 放的總 目錄, 而innodb_data_file_path 配 置 每 一 個 文 件 的 名 稱。 當 然 , 也 可 以 不 配 置innodb_data_home_dir而直接在 innodb_data_file_path參數配置的時候使用絕對路徑來完成配置。 innodb_data_file_path中能夠一次配置多個 ibdata文件。文件能夠是指定大小,也能夠是自動擴展的,可是 Innodb限制了僅僅只有最後一個 ibdata文件可以配置成自動擴展類型。當咱們須要添加新的 ibdata文件的時候,只能添加在 innodb_data_file_path配置的最後,並且必須重啓 MySQL才能完成 ibdata的添加工做。不過若是咱們使用獨享表空間存儲方式的話,就不會有這樣的問題,可是若是要使用裸設備的話,每一個表一個裸設備,可能形成裸設備數量很是大,並且不太容易控制大小,實現比較困難,而共享表空間卻不會有這個問題,容易控制裸設備數量。

 

而無論Innodb 使用的是共享仍是獨享表空間的方式來存儲數據,與事務相關的undo 信息以及其餘的一些元數據信息,都是存放在「innodb_data_home_dir」和「innodb_data_file_path」這兩個參數所設定的數據文件中的

 

Innodb 還有本身存放redo 信息和相關事務信息,日誌文件在「innodb_log_group_home_dir」參數所設定的位置。

相關文章
相關標籤/搜索