mysql中常見的存儲引擎和索引類型


存儲引擎

 

1.      定義

存儲引擎說白了就是如何存儲數據、如何為存儲的數據建立索引和如何更新、查詢數據等技術的實現方法。因為在關系數據庫中數據的存儲是以表的形式存儲的,所以存儲引擎也可以稱為表類型(即存儲和操作此表的類型)。

在Oracle 和SQL Server等數據庫中只有一種存儲引擎,所有數據存儲管理機制都是一樣的。而MySql數據庫提供了多種存儲引擎。用戶可以根據不同的需求為數據表選擇不同的存儲引擎,用戶也可以根據自己的需要編寫自己的存儲引擎。

 

2.      存儲引擎的類型及特點

引擎名稱

優點

缺陷

應用場景

MyISAM

獨立於操作系統,這說明可以輕松地將其從Windows服務器移植到Linux服務器

不支持事務/行級鎖/外鍵約束

適合管理郵件或Web服務器日志數據

InnoDB

健壯的事務型存儲引擎;支持事務/行級鎖/外鍵約束自動災難恢復/AUTO_INCREMENT

 

需要事務支持,並且有較高的並發讀取頻率

MEMORY

為得到最快的響應時間,采用的邏輯存儲介質是系統內存

當mysqld守護進程崩潰時,所有的Memory數據都會丟失;不能使用BLOB和TEXT這樣的長度可變的數據類型

臨時表

MERGE

是MyISAM類型的一種變種。合並表是將幾個相同的MyISAM表合並為一個虛表

 

常應用於日志和數據倉庫

ARCHIVE

歸檔的意思,支持索引,擁有很好的壓縮機制

僅支持插入和查詢功能

經常被用來當做倉庫使用

 

詳細請參考:

http://blog.csdn.net/codepen/article/details/46678725

http://www.cnblogs.com/lina1006/archive/2011/04/29/2032894.html#commentform

索引

Nomal

沒什么好說的

Unique

列值不能有重復,主鍵就是一種特殊的唯一索引

Full Text

用於全文檢索,僅可用在MyISAM/InnoDB引擎表格的char、varchar和text的字段上

 

創建:

CREATE TABLE article ( 

          id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, 

          title VARCHAR(200), 

          body TEXT, 

           FULLTEXT(title, body) 

) TYPE=MYISAM; 

使用:

--單列,單詞

SELECT * FROM `student` WHERE MATCH(`name`) AGAINST('聰')

--多列,多詞

SELECT * FROM `student` WHERE MATCH(`name`,`address`) AGAINST('聰 廣東')

--用IN BOOLEAN MODE即可以避開50%的門檻限制。

SELECT * FROM `student` WHERE MATCH(`name`) AGAINST('聰' IN BOOLEAN MODE)

 

 

---------------------------------

B-Tree索引:

B-Tree 索引是 MySQL 數據庫中使用最為頻繁的索引類型,除了 Archive 存儲引擎之外的其他所有的存儲引擎都支持 B-Tree 索引。B-Tree 索引的物理文件大多都是以 Balance Tree 的結構來存儲的,也就是所有實際需要的數據都存放於 Tree 的 Leaf Node ,而且到任何一個 Leaf Node 的最短路徑的長度都是完全相同的。

Hash索引:

將索引字段轉化為hashcode,在對hashcode進行排序。僅支持Memory引擎。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM