一、簡介
mysql資料庫的儲存引擎是解決以上問題的有用特性,可以讓工程師在表級別根據不同的場景使用不同的儲存模式。最常用的包括如下三種模式:
1)myisam(isam:indexed sequence access method):用來支援讀頻率遠超過寫頻率的表,提供表級鎖,不支援事務。每張表使用不同的資料檔案。
2)innodb:用來支援高頻讀寫的表。本模式支援事務,行級所和外來鍵。innodb有兩種模式:共享表空間和多表空間(不同的錶用不同的表空間)
3)memory:用來支援很少被修改的表,比如字典表。memory實際就是記憶體表,每個memory表對應磁碟上的乙個表,如果修改了memroy表中的資料,不會更新到磁碟中
4)mrg_myisam:用來支援把多個相同結構的myisam表邏輯的組織起來,作為乙個整體對外提供資料,實際提供了多個表的乙個門面。
模式 讀效率 寫效率 外來鍵 事務 鎖級別
myisam 高 低 不支援 不支援 表
innodb 較高 較高 支援 支援 行
memory 很高 高 不支援 不支援 表
mrg_myisam 高 低 不支援 不支援 表
二、檢視mysql支援的儲存引擎模式
登入後,執行show engines命令,可以看到mysql當前支援的所有引擎,比如:
三、選擇使用儲存引擎模式
可以根據你的應用系統中不同的表的情況選擇使用不同的儲存引擎。
資料庫安裝後有乙個預設的儲存引擎模式,從上表中看出系統預設的儲存引擎模式為innodb。
可以在建立表時顯示的指定所使用的儲存引擎模式:
比如,如下的鍵表語句選擇使用memory儲存引擎模式:
create table `dict_head_info` (
`dictheadid` int(11) not null,
`dictheadname` varchar(64) not null,
primary key (`dictheadid`) ) engine=memory default charset=gbk;
如果不顯示的指定儲存引擎模式,則使用預設的儲存引擎模式(前表中的innodb)。
四、總結
當工程師們為了提高資料庫的訪問效能而優化核心引數,優化sql,甚至使用集群功能時,往往沒有認真的利用mysql所提供的儲存引擎,甚至使用儲存引擎時也僅僅時從別人的建表語句中拷過來,而沒有認真的思考使用場景,從而確定與使用場景對應的儲存引擎模式。我認為,在合理的資料庫設計的基礎上,要優先考慮針對不同的表選擇不同的儲存引擎模式。
mysql儲存引擎簡析
innodb 具有提交 回滾和崩潰恢復能力的事務安全 支援外來鍵。使用mvcc 以及行鎖來提供事務支援,因此支援高併發。適用於寫頻繁,併發率高的應用。myisam 不支援事務和災難自動恢復,但其訪問速度快,支援全文索引,對事務完整性沒有要求。通常用於讀頻繁的資料庫,如資料倉儲等。memory 使用存...
mysql儲存引擎 mysql儲存引擎簡介
精品推薦 什麼是儲存引擎 mysql儲存引擎是資料庫如何儲存資料 怎樣建立索引以及如何查詢更新資料等技術的實現方法,資料通過使用不同的技術儲存在檔案中,使用不同的儲存機制 索引方式來提供不同的功能。在mysql這種關係型資料中心來說,資料是以表的方式來儲存的,因此,簡單點來說,儲存引擎就是儲存和操作...
mysql個儲存引擎 MySQL儲存引擎
mysql資料庫的體系架構如下圖所示 從上圖中可以看出,mysql主要分為以下幾個元件 連線池元件 管理服務和工具元件 sql介面元件 分析器元件 優化器元件 緩衝元件 外掛程式式儲存引擎 物理檔案 儲存引擎 其實就是指定表如何儲存資料,如何為儲存的資料建立索引以及如何更新 查詢資料等技術實現的方法...