標籤:
儲存引擎是什嗎?對於資料庫來說,儲存引擎是實現資料庫底層資料的資料結構定義、儲存以及查詢等操作的模組或功能。
不同的資料庫具體不同的底層儲存機制,也就是不同的儲存引擎。資料庫伺服器在接收到用戶端的SQL請求時,會將具體操作交由底層的儲存引擎進行處理。
如果你接觸Oracle或mssql等資料庫,你可能沒有過多關注這些資料庫的儲存引擎,這是因為無論是Oracle還是mssql,都只有一種儲存引擎,而且使用者是不能修改其儲存引擎的。相比於其他資料庫,MySQL提供多種儲存引擎,以滿足不同的儲存需求。
MySQL伺服器的儲存引擎是一種"可插入"式體繫結構,它提供了一個標準介面,實現了儲存引擎的動態載入與卸載,這是MySQL實現多種儲存引擎的基礎,除了MySQL資料庫預設提供的儲存引擎外,MySQL支援第三方引擎的整合,通過MySQL提供的標準介面,第三方儲存引擎可以非常方便地整合到我們MySQL伺服器,也就是說,如果MySQL提供的儲存引擎不能滿足我們的需求,我們可以定製自己儲存引擎來滿足自己的需求。
在MySQL中,儲存引擎也叫資料表處理器或表類型,不同的儲存引擎實現的效果各不相同,同一儲存引擎處理的資料表有共同的屬性與特徵,我們可以根據自己應用程式使用的不同情境、儲存資料的大小來使用不同的儲存引擎。
簡單地說了點理論之後,下面我們開始學習MySQL的儲存引擎,內容主要有以下幾個方面。
1.查看資料庫支援的儲存引擎
在使用儲存引擎之前,我們需要知道MySQL伺服器支援哪些儲存引擎,可以執行下面兩個語句。
SHOW ENGINES;
或
SELECT * FROM INFORMATION_SCHEMA.ENGINES;
執行結果如所示:
MySQL伺服器支援的儲存引擎資訊儲存在INFORMATION_SCHEMA資料庫的ENGINES表中,我們可以通過SELECT語句查詢該表得到的結果。不過使用SHOW ENGINES,則更加方便。
ENGINES表存放儲存引擎的基本資料,ENGINES表欄位含義如下:
Engine:儲存引擎名稱。Support:儲存引擎是否可用,YES表示可用,NO表示不可用,DEFAULT表示資料庫預設的儲存引擎。Comment:儲存引擎的介紹資訊。Transactions:是否支援事務。XA:是否支援分散式交易處理。Savepoints:是否支援部分交易回復。
2.查看與設定預設儲存引擎
當ENGINES表Support欄位值為DEFAULT時,則表示該儲存引擎為預設儲存引擎,除此之外,還有其他查看或設定預設儲存引擎的方式。
(1).啟動mysql伺服器時設定預設儲存引擎
通過mysqld程式啟動伺服器時,可在該程式後加上default-storage_engine = engine_name選項,來設定mysql的預設儲存引擎。
(2).通過設定檔設定預設儲存引擎
也可以在my.ini或my.cnf等配置加上如下配置
[mysqld]default-storage_engine = engine_name;
這樣,MySQL伺服器啟動時,會自動讀取設定檔,來設定預設儲存引擎。
在啟動伺服器後,如果要改變預設儲存引擎,則可以通過以下四種方式
(3).查看當前會話預設儲存引擎
SELECT @@SESSION.storage_engine;
(4).設定當前會話預設儲存引擎
SET SESSION storage_engine = engine_name;
(5).查看全域預設儲存引擎
SELECT @@GLOBAL.storage_engine;
(6).設定全域預設儲存引擎
SET GLOBAL storage_engine = engine_name;
SESSION表示會話級,即該設定只對目前使用者有效,而不會影響其他使用者,GLOBAL表示全域級,如果改變則所有使用者串連上MySQL伺服器後的預設儲存引擎都會使用GLOBAL storage_engine所設定的值,因此執行這個語句需要super許可權。
3.建立資料表時,指定儲存引擎。
儲存引擎作用於資料表,因此,在建立建表時,可以指定資料庫支援的任何儲存引擎,如果在建表時CREATE語句沒有使用engine=engine_name指定儲存引擎,則該表使用預設儲存引擎。
樣本:建立名稱為test的資料表,使用InnoDB儲存引擎
CREATE TABLE test( id INT, name VARCHAR(20))ENGINE = InnoDB;#指定InnoDB儲存引擎
以上建表語句使用InnoDB儲存引擎,因此,對該表的儲存及查詢均由InnoDB來實現。
4.查看資料表的儲存引擎
在建立資料表時可以指定儲存引擎,同樣,可以通過建立語句查詢某個資料表使用的儲存引擎。
樣本:查詢資料表test使用的儲存引擎
SHOW CREATE TABLE語句用於查詢建立資料的SQL語句,通過建表語句,我們可以查詢到資料表使用的儲存引擎。
5.修改儲存資料表格儲存體引擎
在執行完建表語句之後,也可以通過ALTER語句進行修改。
ALTER TABLE test ENGINE MyISAM;
MySQL儲存引擎學習(一)