国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術(shù)及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數(shù)據(jù)庫技術(shù)|

服務器之家 - 數(shù)據(jù)庫 - Mysql - Mysql中存儲引擎的區(qū)別及比較

Mysql中存儲引擎的區(qū)別及比較

2021-08-12 20:06zgrgfr Mysql

這篇文章主要介紹了Mysql中存儲引擎的區(qū)別及比較,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

myisam存儲引擎

myisam基于isam存儲引擎,并對其進行擴展。它是在web、數(shù)據(jù)倉儲和其他應用環(huán)境下最常使用的存儲引擎之一。myisam擁有較高的插入、查詢速度,但不支持事務

myisam主要特性有:

1、大文件(達到63位文件長度)在支持大文件的文件系統(tǒng)和操作系統(tǒng)上被支持。

2、當把刪除和更新及插入操作混合使用的時候,動態(tài)尺寸的行產(chǎn)生更少碎片。這要通過合并相鄰被刪除的塊,以及若下一個塊被刪除,就擴展到下一塊自動完成。

3、每個myisam表最大索引數(shù)是64,這可以通過重新編譯來改變。每個索引最大的列數(shù)是16

4、null被允許在索引的列中,這個值占每個鍵的0~1個字節(jié)

5、可以把數(shù)據(jù)文件和索引文件放在不同目錄(innodb是放在一個目錄里面的)

myisam引擎使用b+tree作為索引結(jié)構(gòu),葉節(jié)點的data域存放的是數(shù)據(jù)記錄的地址

下圖是myisam索引的原理圖:

Mysql中存儲引擎的區(qū)別及比較

這里設表一共有三列,假設我們以col1為主鍵,則上圖是一個myisam表的主索引(primary key)示意。

可以看出myisam的索引文件僅僅保存數(shù)據(jù)記錄的地址

在myisam中,主索引和輔助索引(secondary key)在結(jié)構(gòu)上沒有任何區(qū)別,只是主索引要求key是唯一的,而輔助索引的key可以重復。

如果我們在col2上建立一個輔助索引,則此索引的結(jié)構(gòu)如下圖所示:

Mysql中存儲引擎的區(qū)別及比較

同樣也是一顆b+tree,data域保存數(shù)據(jù)記錄的地址。

因此,myisam中索引檢索的算法為首先按照b+tree搜索算法搜索索引,如果指定的key存在,則取出其data域的值,然后以data域的值為地址,讀取相應數(shù)據(jù)記錄。

myisam的索引方式也叫做“非聚集”的,之所以這么稱呼是為了與innodb的聚集索引區(qū)分。

innodb存儲引擎

innodb是事務型數(shù)據(jù)庫的首選引擎,支持事務安全表(acid),支持行鎖定外鍵,上圖也看到了,innodb是默認的mysql引擎

innodb主要特性有:

1、innodb給mysql提供了具有提交、回滾和崩潰恢復能力的事物安全(acid兼容)存儲引擎。innodb鎖定在行級并且也在select語句中提供一個類似oracle的非鎖定讀。這些功能增加了多用戶部署和性能。在sql查詢中,可以自由地將innodb類型的表和其他mysql的表類型混合起來,甚至在同一個查詢中也可以混合

2、innodb是為處理巨大數(shù)據(jù)量的最大性能設計。它的cpu效率可能是任何其他基于磁盤的關(guān)系型數(shù)據(jù)庫引擎鎖不能匹敵的

3、innodb存儲引擎完全與mysql服務器整合,innodb存儲引擎為在主內(nèi)存中緩存數(shù)據(jù)和索引而維持它自己的緩沖池。innodb將它的表和索引在一個邏輯表空間中,表空間可以包含數(shù)個文件(或原始磁盤文件)。這與myisam表不同,比如在myisam表中每個表被存放在分離的文件中。innodb表可以是任何尺寸,即使在文件尺寸被限制為2gb的操作系統(tǒng)上

4、innodb支持外鍵完整性約束,存儲表中的數(shù)據(jù)時,每張表的存儲都按主鍵順序存放,如果沒有顯示在表定義時指定主鍵,innodb會為每一行生成一個6字節(jié)的rowid,并以此作為主鍵。

雖然innodb也使用b+tree作為索引結(jié)構(gòu),但具體實現(xiàn)方式卻與myisam截然不同。

第一個重大區(qū)別是innodb的數(shù)據(jù)文件本身就是索引文件

從 上文知道,myisam索引文件和數(shù)據(jù)文件是分離的,索引文件僅保存數(shù)據(jù)記錄的地址。

而在innodb中,表數(shù)據(jù)文件本身就是按b+tree組織的一個索 引結(jié)構(gòu),這棵樹的葉節(jié)點data域保存了完整的數(shù)據(jù)記錄

這個索引的key是數(shù)據(jù)表的主鍵,因此innodb表數(shù)據(jù)文件本身就是主索引。

Mysql中存儲引擎的區(qū)別及比較

上圖是innodb主索引(同時也是數(shù)據(jù)文件)的示意圖,可以看到葉節(jié)點包含了完整的數(shù)據(jù)記錄。

這種索引叫做聚集索引。因為innodb的數(shù)據(jù)文件本身 要按主鍵聚集,所以innodb要求表必須有主鍵(myisam可以沒有),如果沒有顯式指定,則mysql系統(tǒng)會自動選擇一個可以唯一標識數(shù)據(jù)記錄的列 作為主鍵,如果不存在這種列,則mysql自動為innodb表生成一個隱含字段作為主鍵,這個字段長度為6個字節(jié),類型為長整形。

第二個與myisam索引的不同是innodb的輔助索引data域存儲相應記錄主鍵的值而不是地址。換句話說,innodb的所有輔助索引都引用主鍵作為data域。

例如,下圖為定義在col3上的一個輔助索引:

Mysql中存儲引擎的區(qū)別及比較

這里以英文字符的ascii碼作為比較準則。聚集索引這種實現(xiàn)方式使得按主鍵的搜索十分高效,但是輔助索引搜索需要檢索兩遍索引:首先檢索輔助索引獲得主鍵,然后用主鍵到主索引中檢索獲得記錄

了 解不同存儲引擎的索引實現(xiàn)方式對于正確使用和優(yōu)化索引都非常有幫助,例如知道了innodb的索引實現(xiàn)后,就很容易明白為什么不建議使用過長的字段作為 主鍵,因為所有輔助索引都引用主索引,過長的主索引會令輔助索引變得過大。

再例如,用非單調(diào)的字段作為主鍵在innodb中不是個好主意,因為 innodb數(shù)據(jù)文件本身是一顆b+tree,非單調(diào)的主鍵會造成在插入新記錄時數(shù)據(jù)文件為了維持b+tree的特性而頻繁的分裂調(diào)整,十分低效,而使用 自增字段作為主鍵則是一個很好的選擇。

memory存儲引擎

memory存儲引擎將表中的數(shù)據(jù)存儲到內(nèi)存中,未查詢和引用其他表數(shù)據(jù)提供快速訪問。

memory主要特性有:

1、memory表的每個表可以有多達32個索引,每個索引16列,以及500字節(jié)的最大鍵長度

2、memory存儲引擎執(zhí)行hash和btree縮影

3、可以在一個memory表中有非唯一鍵值

4、memory表使用一個固定的記錄長度格式

5、memory不支持blob或text列

6、memory支持auto_increment列和對可包含null值的列的索引

7、memory表在所由客戶端之間共享(就像其他任何非temporary表)

8、memory表內(nèi)存被存儲在內(nèi)存中,內(nèi)存是memory表和服務器在查詢處理時的空閑中,創(chuàng)建的內(nèi)部表共享

9、當不再需要memory表的內(nèi)容時,要釋放被memory表使用的內(nèi)存,應該執(zhí)行delete from或truncate table,或者刪除整個表(使用drop table)

archive存儲引擎 存儲引擎的選擇

不同的存儲引擎都有各自的特點,以適應不同的需求,如下表所示:

Mysql中存儲引擎的區(qū)別及比較

innodb :如果要提供提交、回滾、崩潰恢復能力的事務安全(acid兼容)能力,并要求實現(xiàn)并發(fā)控制,innodb是一個好的選擇

innodb 和 myisam之間的區(qū)別:

1>.innodb支持事物,而myisam不支持事物

2>.innodb支持行級鎖,而myisam支持表級鎖

3>.innodb支持mvcc, 而myisam不支持

4>.innodb支持外鍵,而myisam不支持

5>.innodb不支持全文索引,而myisam支持。(x)

myisam:如果數(shù)據(jù)表主要用來插入和查詢記錄,則myisam(但是不支持事務)引擎能提供較高的處理效率

memory:如果只是臨時存放數(shù)據(jù),數(shù)據(jù)量不大,并且不需要較高的數(shù)據(jù)安全性,可以選擇將數(shù)據(jù)保存在內(nèi)存中的memory引擎,mysql中使用該引擎作為臨時表,存放查詢的中間結(jié)果。數(shù)據(jù)的處理速度很快但是安全性不高。

archive:如果只有insert和select操作,可以選擇archive,archive支持高并發(fā)的插入操作,但是本身不是事務安全的。archive非常適合存儲歸檔數(shù)據(jù),如記錄日志信息可以使用archive

使用哪一種引擎需要靈活選擇,一個數(shù)據(jù)庫中多個表可以使用不同引擎以滿足各種性能和實際需求,使用合適的存儲引擎,將會提高整個數(shù)據(jù)庫的性能

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/zgrgfr/article/details/74455547

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 九九九久久国产免费 | 国产精品手机在线 | 亚洲免费成人 | 免费亚洲片 | 亚洲美女网址 | 久久中文字幕一区二区 | 久久亚洲黄色 | 天天操免费| 在线观看国产一区 | 国产亚洲精品美女久久久久久久久久 | 国产精品欧美一区二区三区不卡 | 成人在线网站 | 亚洲在线视频 | 91久久国产综合久久 | 精品国产欧美一区二区 | 激情综合网五月婷婷 | 国产在线中文字幕 | 亚洲欧美高清 | 欧美日韩综合一区 | 91成人小视频 | 亚洲视频区 | 免费毛片视频 | 伊人久久婷婷色综合98网 | 一区二区三区自拍 | 天天干天天草 | 在线观看不卡 | 希岛爱理一区二区三区av高清 | 成人片在线播放 | 成人久 | 亚洲国产精品一区二区三区 | 黄色国产电影 | 亚洲国产成人精品久久 | 国产亚洲一区二区三区 | 国产视频一区二区在线 | 精品美女久久久 | av在线免费观看网址 | 国产精品一区二区三区免费 | 国产精品3区 | 五月激情综合网 | 免费成人av网站 | 国产欧美视频一区二区三区 |