標籤:int lib 系統 伺服器 lin 資料存放區 欄位 路徑 ref
儲存引擎
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)
(詳見:http://blog.csdn.net/u011734144/article/details/52817766)
---------------------------------
B-Tree索引:
B-Tree 索引是 MySQL 資料庫中使用最為頻繁的索引類型,除了 Archive 儲存引擎之外的其他所有的儲存引擎都支援 B-Tree 索引。B-Tree 索引的物理檔案大多都是以 Balance Tree 的結構來儲存的,也就是所有實際需要的資料都存放於 Tree 的 Leaf Node ,而且到任何一個 Leaf Node 的最短路徑的長度都是完全相同的。
Hash索引:
將索引欄位轉化為hashcode,在對hashcode進行排序。僅支援Memory引擎。
(詳見:http://blog.sina.com.cn/s/blog_6fd335bb0100v1lm.html)
mysql中常見的儲存引擎和索引類型