資料庫存儲引擎是資料庫底層軟體組件,資料庫管理系統使用數據引擎進行創建、查詢、更新和刪除數據操作。不同的存儲引擎提供不同的存儲機制、索引技巧、鎖定水平等功能,使用不同的存儲引擎還可以獲得特定的功能。 現在許多資料庫管理系統都支持多種不同的存儲引擎。MySQL 的核心就是存儲引擎。 如創建一個Inno ...
資料庫存儲引擎是資料庫底層軟體組件,資料庫管理系統使用數據引擎進行創建、查詢、更新和刪除數據操作。不同的存儲引擎提供不同的存儲機制、索引技巧、鎖定水平等功能,使用不同的存儲引擎還可以獲得特定的功能。
現在許多資料庫管理系統都支持多種不同的存儲引擎。MySQL 的核心就是存儲引擎。
如創建一個InnoDB類型的表:
CREATE TABLE `yingqing` (
`goods_id` int(11) NOT NULL AUTO_INCREMENT,
`goods_name` varchar(30) NOT NULL DEFAULT '0',
`goods_number` int(11) NOT NULL DEFAULT '0',
`shop_price` varchar(30) NOT NULL DEFAULT '0',
`market_price` varchar(30) NOT NULL DEFAULT '0',
`click_count` bigint(20) NOT NULL DEFAULT '0',
PRIMARY KEY (`goods_id`)
)
ENGINE=InnoDB DEFAULT CHARSET=utf8;
下麵為大家介紹一下mysql常用的存儲引擎:
MyISAM:MySQL 5.0 之前的預設資料庫引擎,最為常用。擁有較高的插入,查詢速度,但不支持事務
InnoDB:事務型資料庫的首選引擎,支持ACID事務,支持行級鎖定, MySQL 5.5 起成為預設資料庫引擎
BDB:源自 Berkeley DB,事務型資料庫的另一種選擇,支持Commit 和Rollback 等其他事務特性
Memory:所有數據置於記憶體的存儲引擎,擁有極高的插入,更新和查詢效率。但是會占用和數據量成正比的記憶體空間。並且其內容會在 MySQL 重新啟動時丟失
Merge:將一定數量的 MyISAM 表聯合而成一個整體,在超大規模數據存儲時很有用
Archive:非常適合存儲大量的獨立的,作為歷史記錄的數據。因為它們不經常被讀取。Archive 擁有高效的插入速度,但其對查詢的支持相對較差
Federated:將不同的 MySQL 伺服器聯合起來,邏輯上組成一個完整的資料庫。非常適合分散式應用
Cluster/NDB:高冗餘的存儲引擎,用多台數據機器聯合提供服務以提高整體性能和安全性。適合數據量大,安全和性能要求高的應用
CSV: 邏輯上由逗號分割數據的存儲引擎。它會在資料庫子目錄里為每個數據表創建一個 .csv 文件。這是一種普通文本文件,每個數據行占用一個文本行。CSV 存儲引擎不支持索引。
BlackHole:黑洞引擎,寫入的任何數據都會消失,一般用於記錄 binlog 做複製的中繼
EXAMPLE :存儲引擎是一個不做任何事情的存根引擎。它的目的是作為 MySQL 源代碼中的一個例子,用來演示如何開始編寫一個新存儲引擎。同樣,它的主要興趣是對開發者。EXAMPLE 存儲引擎不支持編索引。
同一個資料庫也可以使用多種存儲引擎的表。如果一個表要求比較高的事務處理,可以選擇InnoDB。這個資料庫中可以將查詢要求比較高的表選擇MyISAM存儲。如果該資料庫需要一個用於查詢的臨時表,可以選擇MEMORY存儲引擎。