資料庫目錄是資料庫伺服器存放數據檔案的地方,不僅包括有關表的檔案,還包括數據檔案和的伺服器選項檔案。不同的分發,資料庫目錄的預設位置是不同的。如果運行多個伺服器,那么您應該掌握所有數據目錄的位置。
數據目錄的位置
預設資料庫的位置編譯在伺服器中。
如果您是在一個源程式分發包中安裝 MySQL,典型的預設位置可能是 /usr/local/var;
如果在二進制分發包中安裝 MySQL,則為 /usr/local/mysql/ data;
在 RPM 檔案中安裝,為 /var/lib/mysql。
對於windwos平台上的分發,其位置時BASEDIR\data
數據目錄的位置可以在啟動伺服器時通過--datadir = / path / to / dir 明確地指定。如果您想將數據目錄放置在其他地方而非預設的位置,則這個選項是有用的。
數據目錄結構
以MySQL資料庫為例,MySQL數據目錄包含了伺服器管理的所有數據目錄,這些檔案被組織成一個樹狀結構,通過利用Unix或Windows檔案系統的層次結構直接實現。
每個資料庫對應於數據目錄下的一個目錄。
在一個資料庫中的表對應於數據目錄下的檔案。
數據目錄也包含由伺服器產生的幾個狀態檔案,如日誌檔案。這些檔案提供了關於伺服器操作的重要信息。對管理特別在出了問題而試圖確定問題原因時很有價值。例如,如果某個特定查詢殺死伺服器,你可以通過檢查日誌檔案判別搗亂的查詢。
資料庫表的表示法
資料庫中的每個表在資料庫目錄中都作為三個檔案存在:一個格式(描述)檔案、一個數據檔案和一個索引檔案。每個檔案的基名是該表名,擴展名指明該檔案的類型。擴展名如表1所示。數據和索引檔案的擴展名指明該表是否使用較老的 ISAM 索引或較新的 MyISAM 索引。當發布定義一個表結構的 CREATE TABLE tbl_name 語句時,伺服器創建 tbl_name.frm 檔案,它包含該結構的內部編碼。該語句還創建空的數據檔案和索引檔案,這些檔案的初始信息表明沒有記錄和索引(如果 CREATE TABLE 語句包含索引說明,則該索引檔案將反映這些索引)。描述表的檔案的所有權和方式被設定為只允許對 MySQL 伺服器用戶的訪問。
當發布 ALTER TABLE 語句時,伺服器對 tbl_name.frm 重新編碼並修改數據檔案和索引檔案的內容以反映由該語句表明的結構變化。對於 CREATE 和 DROP INDEX 也是如此,因為伺服器認為它們等價於 ALTER TABLE 語句。DROP TABLE 刪除代表該表的三個檔案。
儘管可以通過刪除資料庫目錄中的對應某個表的三個檔案來刪除該表,但不能手工創建或更改表。例如,如果 my_db 是當前的資料庫,DROP TABLE my_tbl 大致等價於下列命令:
來自於 SHOW TABLES my_db 的輸出結果正是 my_db 資料庫目錄中 .frm 檔案基名的一個列表。某些資料庫系統維護一個列出了資料庫中的所有表的登記。但 MySQL 不這樣做,因為沒有必要,這個“登記”隱含在了數據目錄的結構中。