MySQL儲存引擎學習(一)

來源:互聯網
上載者:User

標籤:

  儲存引擎是什嗎?對於資料庫來說,儲存引擎是實現資料庫底層資料的資料結構定義、儲存以及查詢等操作的模組或功能。

  不同的資料庫具體不同的底層儲存機制,也就是不同的儲存引擎。資料庫伺服器在接收到用戶端的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儲存引擎學習(一)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.