1. 程式人生 > 實用技巧 >MYSQL 儲存引擎(面)

MYSQL 儲存引擎(面)

  儲存引擎是MySQL的元件,用於處理不同表型別的SQL操作。不同的儲存引擎提供不同的儲存機制、索引技巧、鎖定水平等功能,使用不同的儲存引擎,還可以獲得特定的功能。

使用哪一種引擎可以靈活選擇,一個數據庫中多個表可以使用不同引擎以滿足各種效能和實際需求,使用合適的儲存引擎,將會提高整個資料庫的效能 。

MySQL伺服器使用可插拔的儲存引擎體系結構,可以從執行中的 MySQL 伺服器載入或解除安裝儲存引擎 。

  

1、檢視儲存引擎

-- 檢視支援的儲存引擎
SHOW ENGINES

-- 檢視預設儲存引擎
SHOW VARIABLES LIKE 'storage_engine'

--檢視具體某一個表所使用的儲存引擎,這個預設儲存引擎被修改了!
show create table tablename

--準確檢視某個資料庫中的某一表所使用的儲存引擎 show table status like 'tablename' show table status from database where name="tablename"

2、儲存引擎對比

常見的儲存引擎就 InnoDB、MyISAM、Memory、NDB。

InnoDB 現在是 MySQL 預設的儲存引擎,支援事務、行級鎖定和外來鍵(主鍵是能確定一條記錄的唯一標識。比如,一條記錄包括身份證號碼。外來鍵用於與另一張表相關聯。是能確認另一張表記錄的欄位,用於保持資料的一致性。比如,A表中的一個欄位,是B表的主鍵,那它就可以是A表的外來鍵。

3、檔案儲存結構對比

在 MySQL中建立任何一張資料表,在其資料目錄對應的資料庫目錄下都有對應表的 .frm 檔案,.frm 檔案是用來儲存每個資料表的元資料(meta)資訊,包括表結構的定義等,與資料庫儲存引擎無關,也就是任何儲存引擎的資料表都必須有.frm檔案,命名方式為 資料表名.frm,如user.frm。

檢視MySQL 資料儲存在哪裡:show variables like 'data%'

MyISAM 物理檔案結構為:

  • .frm檔案:與表相關的元資料資訊都存放在frm檔案,包括表結構的定義資訊等
  • .MYD (MYData) 檔案:MyISAM 儲存引擎專用,用於儲存MyISAM 表的資料
  • .MYI (MYIndex)檔案:MyISAM 儲存引擎專用,用於儲存MyISAM 表的索引相關資訊

InnoDB 物理檔案結構為:

  • .frm 檔案:與表相關的元資料資訊都存放在frm檔案,包括表結構的定義資訊等

  • .ibd 檔案或 .ibdata 檔案: 這兩種檔案都是存放 InnoDB 資料的檔案,之所以有兩種檔案形式存放 InnoDB 的資料,是因為 InnoDB 的資料儲存方式能夠通過配置來決定是使用共享表空間存放儲存資料,還是用獨享表空間存放儲存資料。

    獨享表空間儲存方式使用.ibd檔案,並且每個表一個.ibd檔案 共享表空間儲存方式使用.ibdata檔案,所有表共同使用一個.ibdata檔案(或多個,可自己配置)