MySql資料引擎簡介與選擇方法

2021-07-09 20:27:11 字數 2966 閱讀 4214

引自:

一、資料引擎簡介

二、選擇儲存引擎

與mysql一起提供的各種儲存引擎在設計時考慮了不同的使用情況。為了更有效地使用外掛程式式儲存體系結構,最好了解各種儲存引擎的優點和缺點。

在下面的**中,概要介紹了與mysql一起提供的儲存引擎:

可以在建立新錶時指定儲存引擎,或通過使用alter table語句指定儲存引擎。

要想在建立表時指定儲存引擎,可使用engine引數:

create table enginetest(

id int

) engine = myisam;

也可以使用type選項到create table語句來告訴mysql你要建立什麼型別的表。

create table enginetest(

id int

) type = myisam;

雖然type仍然在mysql 5.1中被支援,現在engine是首選的術語。

如果你省略掉engine或type選項,預設的儲存引擎被使用。一般的預設是myisam,但 你可以用--default-storage-engine或--default-table-type伺服器啟動選項來改變它,或者通過設定 storage_engine或table_type系統變數來改變。

要想更改已有表的儲存引擎,可使用alter table語句:

alter tableenginetestengine =archive;

alter table t engine = myisam;

alter table t type = bdb;

如果你試著使用乙個未被編譯進mysql的儲存引擎,或者試著用乙個被編譯進mysql但沒有被 啟用的儲存引擎,mysql取而代之地建立乙個myisam型別的表。當你在支援不同儲存引擎的mysql伺服器之間拷貝表的時候,上述的行為是很方便 的。(例如,在乙個複製建立中,可能你的主伺服器為增加安全而支援事務儲存引擎,但從伺服器為更快的速度而僅使用非事務儲存引擎。)

在不可用的型別被指定時,自動用myisam表來替代,這會對mysql的新使用者造成混淆。無論何時乙個表被自動改變之時,產生乙個警告。

mysql總是建立乙個.frm檔案來保持表和列的定義。表的索引和資料可能被儲存在乙個或多個檔案裡,這取決於表的型別。伺服器在儲存引擎級別之上建立.frm檔案。單獨的儲存引擎建立任何需要用來管理表的額外檔案。

乙個資料庫可以包含不同型別的表。

四、儲存引擎和事務

下述儲存引擎支援事務:

·         innodb:通過mvcc支援事務,允許commit、rollback和儲存點。

·         ndb:通過mvcc支援事務,允許commit和rollback。

·         bdb:支援事務,允許commit和rollback。

事務安全表(tst) 比起非事務安全表 (ntst)有幾大優勢:

·         更安全。即使mysql崩潰或遇到硬體問題,要麼自動恢復,要麼從備份加事務日誌恢復,你可以取回資料。

·         你可以合併許多語句,並用commit語句同時接受它們全部(如果autocommit被禁止掉)。

·         你可以執行rollback來忽略你的改變(如果autocommit被禁止掉)。

·         如果更新失敗,你的所有改變都變回原來。(用非事務安全表,所有發生的改變都是永久的)。

·         事務安全儲存引擎可以給那些當前用讀得到許多更新的表提供更好的部署。

非事務安全表自身有幾個優點,因為沒有事務開支,所有優點都能出現:

·         更快

·         需要更少的磁碟空間

·         執行更新需要更少的記憶體

你可以在同乙個語句中合併事務安全和非事務安全表來獲得兩者最好的情況。儘管如此,在autocommit被禁止掉的事務裡,變換到非事務安全表依舊即時提交,並且不會被回滾。

雖然mysql支援數個事務安全儲存引擎,為獲得最好結果,你不應該在乙個事務那混合不同表型別。如果你混合表型別會發生問題,

五、插入搜尋引擎

能夠使用儲存引擎之前,必須使用install plugin語句將儲存引擎plugin(外掛程式)裝載到mysql。例如,要想載入example引擎,首先應載入ha_example.so模組:

install pluginha_examplesoname 'ha_example.so';

檔案.so必須位於mysql伺服器庫目錄下(典型情況下是installdir/lib)。

六、拔出儲存引擎

要想拔出儲存引擎,可使用uninstall plugin語句:

uninstall pluginha_example;

如果拔出了正被已有表使用的儲存引擎,這些表將成為不可訪問的。拔出儲存引擎之前,請確保沒有任何表使用該儲存引擎。

為了安裝外掛程式式儲存引擎,plugin檔案必須位於恰當的mysql庫目錄下,而且發出install plugin語句的使用者必須具有super許可權。

建立table時可以通過engine關鍵字指定使用的儲存引擎,如果省略則使用系統預設的儲存引擎:

create table t (i int) engine = myisam;

檢視系統中支援的儲存引擎型別:

mysql> show engines;

標準安裝程式中只提供部分引擎的支援,如果需要使用其他的儲存引擎,需要使用源**加不同的引數重新編譯。其中default表明系統的預設儲存引擎,可以通過修改配置引數來變更:

default-storage-engine=myisam

檢視某個儲存引擎的具體資訊

mysql> show engine innodb status\g;

MySQL各種儲存引擎簡介與選擇

mysql有多種儲存引擎 myisam innodb merge memory heap bdb berkeleydb example federated archive csv blackhole。mysql支援數個儲存引擎作為對不同表的型別的處理器。mysql儲存引擎包括處理事務安全表的引擎和處...

mysql 資料庫引擎簡介

這是mysql 5.5或更高版本的預設儲存引擎。它提供了事務安全 acid相容 表,支援外來鍵引用完整性約束。它支援提交 回滾和緊急恢復功能來保護資料。它還支援行級鎖定。當在多使用者環境中使用時,它的 一致非鎖 定讀取 提高了效能。它將資料儲存在集群索引中,從而減少了基於主鍵的查詢的i o。支援事務...

mysql儲存引擎 mysql儲存引擎簡介

精品推薦 什麼是儲存引擎 mysql儲存引擎是資料庫如何儲存資料 怎樣建立索引以及如何查詢更新資料等技術的實現方法,資料通過使用不同的技術儲存在檔案中,使用不同的儲存機制 索引方式來提供不同的功能。在mysql這種關係型資料中心來說,資料是以表的方式來儲存的,因此,簡單點來說,儲存引擎就是儲存和操作...