存儲引擎的使用
1、數據庫中的各表均被(在創建表時)指定的存儲引擎來處理。
2、 服務器可用的引擎依賴于以下因素:
● MySQL的版本
● 服務器在開發時如何被配置
● 啟動選項
3、為了解當前服務器中有哪些存儲引擎可用,可使用SHOW ENGINES語句:mysql> SHOW ENGINES\G
4、 在創建表時,可使用ENGINE選項為CREATE TABLE語句顯式指定存儲引擎。
CREATE TABLE TABLENAME (NO INT) ENGINE = MyISAM;
5、如果在創建表時沒有顯式指定存儲引擎,則該表使用當前默認的存儲引擎
6、默認的存儲引擎可在my.ini配置文件中使用default-storage-engine選項指定。
7、現有表的存儲引擎可使用ALTER TABLE語句來改變:ALTER TABLE TABLENAME ENGINE = INNODB;
8、為確定某表所使用的存儲引擎,可以使用SHOW CREATE TABLE或SHOW TABLE STATUS語句:
mysql> SHOW CREATE TABLE emp\G
mysql> SHOW TABLE STATUS LIKE 'emp' \G
(1)MyISAM存儲引擎是MySQL最常用的引擎。
(2)它管理的表具有以下特征:
● 使用三個文件表示每個表:
格式文件 — 存儲表結構的定義(mytable.frm)
數據文件 — 存儲表行的內容(mytable.MYD)
索引文件 — 存儲表上索引(mytable.MYI)
● 靈活的AUTO_INCREMENT字段處理
● 可被轉換為壓縮、只讀表來節省空間
(1).InnoDB存儲引擎是MySQL的缺省引擎。
(2)它管理的表具有下列主要特征:
● 每個InnoDB表在數據庫目錄中以.frm格式文件表示
● InnoDB表空間tablespace被用于存儲表的內容
● 提供一組用來記錄事務性活動的日志文件
● 用COMMIT(提交)、SAVEPOINT及ROLLBACK(回滾)支持事務處理
● 提供全ACID兼容
● 在MySQL服務器崩潰后提供自動恢復
● 多版本(MVCC)和行級鎖定
● 支持外鍵及引用的完整性,包括級聯刪除和更新
(1)使用MEMORY存儲引擎的表,其數據存儲在內存中,且行的長度固定,這兩個特點使得MEMORY存儲引擎非常快。
(2)MEMORY存儲引擎管理的表具有下列特征:
● 在數據庫目錄內,每個表均以.frm格式的文件表示。
● 表數據及索引被存儲在內存中。
● 表級鎖機制。
● 不能包含TEXT或BLOB字段。
(3)MEMORY存儲引擎以前被稱為HEAP引擎。
● MyISAM表最適合于大量的數據讀而少量數據更新的混合操作。MyISAM表的另一種適用情形是使用壓縮的只讀表。
● 如果查詢中包含較多的數據更新操作,應使用InnoDB。其行級鎖機制和多版本的支持為數據讀取和更新的混合操作提供了良好的并發機制。
● 可使用MEMORY存儲引擎來存儲非永久需要的數據,或者是能夠從基于磁盤的表中重新生成的數據。