MySQL 存儲引擎

8gw234 9年前發布 | 14K 次閱讀 MySQL 數據庫服務器

MySQL簡介:

是一個關系型數據庫管理系統,由瑞典MySQL AB公司開發,目前屬于Oracle公司。

MySQL是一種關聯數據庫管理系統,關聯數據庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度并提高了靈活性。

由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,許多中小型網站為了降低網站總體擁有成本而選擇了MySQL作為網站數據庫。

與其他的大型數據庫例如Oracle、DB2、SQL Server等相比,MySQL自有它的不足之處,如規模小、功能有限(MySQL Cluster的功能和效率都相對比較差)等,但是這絲毫也沒有減少它受歡迎的程度。

存儲引擎:

MyISAM

Mysql5.5之前的默認數據庫引擎,最為常用。擁有較高的插入,查詢速度,但不支持事務

InnoDB

事務型數據庫的首選引擎,支持ACID事務,支持行級鎖定, MySQL 5.5起成為默認數據庫引擎

BDB

源自Berkeley DB,事務型數據庫的另一種選擇,支持COMMIT和ROLLBACK等其他事務特性

Memory

所有數據置于內存的存儲引擎,擁有極高的插入,更新和查詢效率。但是會占用和數據量成正比的內存空間。并且其內容會在Mysql重新啟動時丟失

Merge

將一定數量的MyISAM表聯合而成一個整體,在超大規模數據存儲時很有用

Archive

非常適合存儲大量的獨立的,作為歷史記錄的數據。因為它們不經常被讀取。Archive擁有高效的插入速度,但其對查詢的支持相對較差

Federated將不同的Mysql服務器聯合起來,邏輯上組成一個完整的數據庫。非常適合分布式應用

Cluster/NDB

高冗余的存儲引擎,用多臺數據機器聯合提供服務以提高整體性能和安全性。適合數據量大,安全和性能要求高的應用

CSV

邏輯上由逗號分割數據的存儲引擎。它會在數據庫子目錄里為每個數據表創建一個.CSV文件。這是一種普通文本文件,每個數據行占用一個文本行。CSV存儲引擎不支持索引。 

BlackHole

黑洞引擎,寫入的任何數據都會消失,一般用于記錄binlog做復制的中繼 

EXAMPLE

存儲引擎是一個不做任何事情的存根引擎。它的目的是作為MySQL源代碼中的一個例子,用來演示如何開始編寫一個新存儲引擎。同樣,它的主要興趣是對開發者。EXAMPLE存儲引擎不支持編索引。

另外,Mysql的存儲引擎接口定義良好。有興趣的開發者可以通過閱讀文檔編寫自己的存儲引擎。

從理論上講,完全可以為數據表里的每個字段分別建一個索引,但MySQL把同一個數據表里的索引總數限制為16個。

MySQL 存儲引擎

 MySQL 存儲引擎

如何選擇 mysql 的存儲引擎:

1、myisam 存儲:如果對事務要求不高,同時是以查詢和添加為主的,我們考慮此引擎。(比如:bbs的發帖表、回復表)

2、innodb 存儲:對事務要求高,保存的數據都是重復數據,我們建議使用此引擎。(比如:訂單表、賬號表)

3、memory 存儲:比如我們的數據變化頻繁,不需要入庫,同時又頻繁的查詢和修改,我們考慮使用此引擎。

 

optimize table 的作用:

當您的庫中刪除了大量的數據后,您可能會發現數據文件尺寸并沒有減小。這是因為刪除操作后在數據文件中留下碎片所致。

提供了數據表優化的功能,可以去除刪除操作后留下的數據文件碎片,減小文件尺寸,加快未來的讀寫操作。您只要在做完批量刪除,或定期(如 每一兩個月)進行一次數據表優化操作即可。

OPTIMIZE TABLE只對MyISAM, BDB和InnoDB表起作用。

 本文由用戶 8gw234 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!