MySQL Show命令的用法大全
Innodb存儲引擎
Innodb存儲引擎支持事務,其設計目標主要面向在線事務處理(OLTP)的應用。其特點是行鎖設計、支持外鍵,并支持類似于Oracle的非鎖定讀,即默認讀操作不會產生鎖。
Innodb存儲引擎將數據放在一個邏輯的表空間中,也可以單獨放到一個獨立的ibd文件中。此外,還支持用裸設備(row disk)來建立其表空間。
Innodb通過多版本并發控制(MVCC)來獲得高并發性,并且實現了SQL標準的4種隔離級別,默認為RR級。同時,使用一種被稱為netx-key locking的策略來避免幻讀(phantom)現象產生。除此之外,innodb還提供了插入緩沖、二次寫、自適應哈希索引、預讀等高性能和高可用的功能。
對于表中的數據,innodb采用了聚集(clusterd)的方式,因此每張表的存儲都是按主鍵的順序進行存放。如果沒有顯式的在表中定義主鍵,innodb會為每一行生產一個6字節的ROWID,并以此作為主鍵 select _rowid from t;
MyISAM存儲引擎
此引擎不支持事務、采用表鎖設計、支持全文索引,主要面向一些OLAP數據庫應用。
MyISAM的另一個與眾不同是它的緩沖池只緩存索引文件,而不緩沖數據文件。
注意:myisam表,mysql數據庫只緩存其索引文件,數據文件的緩存交由操作系統本身來完成,這與其他使用LRU算法緩存數據的數據庫不同。在5.1.23版本前,其緩存索引的緩沖區最大只能設置為4GB,之后才支持大于4GB的索引緩沖區。
MyISAM存儲引擎表由MYD和MYI組成,MYD用來存放數據文件,MYI用來存放索引文件。可以通過myisampack壓縮和解壓數據,但壓縮后就成只讀表了。
NDB存儲引擎
NDB存儲引擎是一個集群存儲引擎,其結構是share nothing的集群架構,能提供更高可用性。
NDB的特點是數據全部放在內存中(從5.1開始,可以將非索引數據放在磁盤上),因此主鍵查找的速度極快,并且通過添加NDB數據存儲節點可以線性的提高數據庫性能,是高可用、高性能的集群系統
需要注意的是,NDB存儲引擎的連接操作(JOIN)實在mysql數據庫層完成的,而不是在存儲引擎層完成。這意味著,復雜的連接操作需要巨大的網絡開銷,因此查詢速度很慢。
Memory存儲引擎
Memory存儲引擎(HEAP存儲引擎)將表中的數據放在內存中,非常適合用于存儲臨時數據的臨時表,以及數據倉庫中的緯度表。Memory存儲引擎默認使用哈希索引,而不是B+樹索引。
存儲速度快,但是有限制,只支持表鎖,并發性能較差,并且不支持TEXT和BLOB列類型。最重要的是,存儲變長字段(varchar)時是按照定長字段(char)的方式進行的,因此會浪費內存,eBay工程師針對此問題已經給出pathc解決方案。
需要特別注意的是:Mysql數據庫使用Memory存儲引擎作為臨時表來存放查詢的中間結果集。如果中間結果集大于Memory存儲引擎表的容量設置,又或者中間結果含有TEXT或BLOB列類型字段,則mysql數據庫會把其轉換到myisam存儲引擎表而放到磁盤中。之前提到myisam不緩沖數據文件,因此這時產生的臨時表的性能對于查詢會有損失。
Archinve存儲引擎
Archive存儲引擎只支持insert和select操作,使用zlib算法將數據行進行壓縮后存儲,壓縮比一般可以達到1:10。Archinve存儲引擎非常適合存儲歸檔數據,如日志信息。
使用行鎖來實現高并發插入操作,但其本身并不是事務安全的存儲引擎,其設計目標主要是提供高速的插入和壓縮功能。
Federated存儲引擎
Federated存儲引擎表并不存放數據,它只是指向一臺遠程mysql數據庫服務器上的表。只支持mysql數據庫表,不支持異構數據庫表。
Maria存儲引擎
其設計目標主要是用來取代原有的Myisam存儲引擎。特點是:支持緩存數據問索引文件,應用了行鎖設計,提供了MVCC功能,支持事務和非事務安全選項,以及更好的BLOB字符類型的處理性能。
其他存儲引擎
Merge、CSV、Sphinx、Infobright等
版權聲明:本文內容由互聯網用戶自發貢獻,本社區不擁有所有權,也不承擔相關法律責任。如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至:yqgroup@service.aliyun.com 進行舉報,并提供相關證據,一經查實,本社區將立刻刪除涉嫌侵權內容。原文鏈接
總結
以上是生活随笔為你收集整理的MySQL Show命令的用法大全的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 激光SLAM论文简单导读--LOAM、V
- 下一篇: 校园网WIFI之云免流历程总结 原创