與Oracle 和SQL Server等大型資料庫系統一樣,MySql也是客戶/伺服器系統並且是單進程多線程架構的資料庫。
MySql 區別於其它資料庫系統的一個重要特點是支援插入式儲存引擎。
什麼是儲存引擎(資料表類型)
儲存引擎說白了就是如何儲存資料、如何為儲存的資料建立索引和如何更新、查詢資料等技術的實現方法。
因為在關聯式資料庫中資料的儲存是以表的形式儲存的,所以儲存引擎也可以稱為表類型(即儲存和操作此表的類型)。在Oracle 和SQL Server等資料庫中只有一種儲存引擎,所有資料存放區管理機制都是一樣的。而MySql資料庫一個鮮明的特點就是提供了多種儲存引擎。使用者可以根據不同的需求為資料表選擇不同的儲存引擎,使用者也可以根據自己的需要編寫自己的儲存引擎。
MySQL中自有的實際上支援五種不同的表類型.這五種類型分別是BDB、HEAP、ISAM、MERGE以及MyISAM。
其中BDB類型單獨屬於一類,稱為“事務安全型”(transaction-safe),其餘的表類型屬於第二類,稱為“非事務安全型”(non-transaction-safe)。
1,ISAM資料表
ISAM是mysql3.23版本之前的MySQL支特的唯一一種表類型,目前己經過時。MyIASM 處理常式逐步取代了ISAM處理常式,這種老式的表 類型己經沒有人再使用了。資料表在硬碟上的檔案儲存體方式:IASM Frm isd ism
2,MyIASM資料表
這是目前中MySQL預設使用的資料表類型。其優點是
- 如果主機作業系統支援大尺寸檔案,資料表長度就能夠很大,就能客納更多的資料.
- 資料表內容獨立於硬體也就是說可以把資料表在機器之間隨意拷貝
- 提高了索引方面的功能
- 提供了更好的索引鍵壓縮效果
- auto_increment
能力加強
- 改進了對資料表的完整性檢查機制
- 支援進行fulltext全文本搜尋
資料表在硬碟上的檔案儲存體方式:MyISAM Frm myd myi
- MyISAM:這種引擎是mysql最早提供的。不管是何種MyISAM表,目前它都不支援事務,行級鎖和外鍵約束的功能。這種引擎又可以分為靜態MyISAM、動態MyISAM 和壓縮MyISAM三種:
3,Merge資料表
這是一種把相同結構的MyIASM資料表組織為一個邏輯單元的方法
MyISAM Merge引擎:這種類型是MyISAM類型的一種變種。合并表是將幾個相同的MyISAM表合并為一個虛表。常應用於日誌和資料倉儲。
資料表在硬碟上的檔案儲存體方式:Merge Frm mrg
4,HEAP資料表
這是一種使用記憶體的資料表,而且各個資料行的長度固定,這兩個特性使得這種類型資料表的檢索速度非常快,作為一種臨時性的資料表,HEAP在某些特定情況下很有用。
資料表在硬碟上的檔案儲存體方式:Heap Frm
memory(heap):這種類型的資料表只存在於記憶體中。它使用散列索引,所以資料的存取速度非常快。因為是存在於記憶體中,所以這種類型常應用於暫存資料表中。
5,BDB資料表
這種資料表支援交易處理機制,具有良好的並發效能
資料表在硬碟上的檔案儲存體方式:BDB Frm db
6,InnoDB資料表
這是最近加入MySQL的資料表類型,有許多新的特性
- 支援交易處理機制
- 崩潰後能夠立刻恢複
- 支援外鍵功能,包括串聯刪除
- 具有並發功能
資料表在硬碟上的檔案儲存體方式:InnoDB frm
InnoDB:InnoDB表類型可以看作是對MyISAM的進一步更新產品,它提供了事務、行級鎖機制和外鍵約束的功能。
archive:這種類型只支援select 和 insert語句,而且不支援索引。常應用於日誌記錄和彙總分析方面。
參考來源:http://www.nowamagic.net/database/db_TypeOfTable.php
http://database.51cto.com/art/201011/234306.htm