成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

MySql數(shù)據(jù)庫原理剖析

RobinTang / 2683人閱讀

摘要:查詢速度很快,如果數(shù)據(jù)庫和的操作比較少的話比較適用。如果表的讀操作遠(yuǎn)遠(yuǎn)多于寫操作且不需要數(shù)據(jù)庫事務(wù)的支持,那么也是很好的選擇。

前言

數(shù)據(jù)庫在計(jì)算機(jī)領(lǐng)域的應(yīng)用十分廣泛,大家在學(xué)習(xí)數(shù)據(jù)庫的時(shí)候,一般是按照網(wǎng)上的基礎(chǔ)教程可以一步步入門,但是這僅僅只是會(huì)簡單地使用數(shù)據(jù)庫而已,而要真正會(huì)使用數(shù)據(jù)庫,就需要弄清楚數(shù)據(jù)庫的基本原理和組成結(jié)構(gòu).而這樣的文章在網(wǎng)上并不多, 因此經(jīng)過我的查閱和總結(jié),最終寫成了這篇文章,以供大家參考,文章末尾會(huì)給出參考地址,有興趣的朋友可以自行查看.

數(shù)據(jù)庫結(jié)構(gòu)一覽

層結(jié)構(gòu)

連接層主要負(fù)責(zé)安全驗(yàn)證和信息傳輸

sql層主要處理和優(yōu)化sql

存儲(chǔ)層存儲(chǔ)真正的表數(shù)據(jù)

對(duì)數(shù)據(jù)庫而言最重要的則是查找效率,那么我們來理一理數(shù)據(jù)庫的查詢操作.

數(shù)據(jù)庫中存儲(chǔ)與查找 數(shù)據(jù)庫的存儲(chǔ) 數(shù)據(jù)庫引擎

InnoDB , 2. MyIsam , 3. Memory, 4. Blackhole, 5. CSV, 6. Performance_Schema, 7. Archive, 8. Federated , 9 Mrg_Myisam

在平時(shí)使用中最多的還是InnoDB和MyIsam,以下做一些簡單介紹

InnoDB

InnoDB是一個(gè)事務(wù)型的存儲(chǔ)引擎,有行級(jí)鎖定和外鍵約束。

適用場景:

經(jīng)常更新的表,適合處理多重并發(fā)的更新請(qǐng)求。

支持事務(wù)。

可以從災(zāi)難中恢復(fù)(通過bin-log日志等)。

外鍵約束。只有他支持外鍵。

支持自動(dòng)增加列屬性auto_increment。

數(shù)據(jù)結(jié)構(gòu):

Innodb的索引文件本身就是數(shù)據(jù)文件,即B+Tree的數(shù)據(jù)域存儲(chǔ)的就是實(shí)際的數(shù)據(jù),這種索引就是聚集索引。這個(gè)索引的key就是數(shù)據(jù)表的主鍵,因此InnoDB表數(shù)據(jù)文件本身就是主索引。InnoDB的輔助索引數(shù)據(jù)域存儲(chǔ)的也是相應(yīng)記錄主鍵的值而不是地址,所以當(dāng)以輔助索引查找時(shí),會(huì)先根據(jù)輔助索引找到主鍵,再根據(jù)主鍵索引找到實(shí)際的數(shù)據(jù)。所以Innodb不建議使用過長的主鍵,否則會(huì)使輔助索引變得過大。建議使用自增的字段作為主鍵,這樣B+Tree的每一個(gè)結(jié)點(diǎn)都會(huì)被順序的填滿,而不會(huì)頻繁的分裂調(diào)整,會(huì)有效的提升插入數(shù)據(jù)的效率。

MyIsam

MyIASM是MySQL默認(rèn)的引擎,但是它沒有提供對(duì)數(shù)據(jù)庫事務(wù)的支持,也不支持行級(jí)鎖和外鍵,因此當(dāng)INSERT(插入)或UPDATE(更新)數(shù)據(jù)時(shí)即寫操作需要鎖定整個(gè)表,效率便會(huì)低一些。

適用場景:

不支持事務(wù)的設(shè)計(jì),但是并不代表著有事務(wù)操作的項(xiàng)目不能用MyIsam存儲(chǔ)引擎,可以在service層進(jìn)行根據(jù)自己的業(yè)務(wù)需求進(jìn)行相應(yīng)的控制。

不支持外鍵的表設(shè)計(jì)。

查詢速度很快,如果數(shù)據(jù)庫insert和update的操作比較少的話比較適用。

對(duì)整表進(jìn)行加鎖。

MyISAM極度強(qiáng)調(diào)快速讀取操作。

MyIASM中存儲(chǔ)了表的行數(shù),于是SELECT COUNT(*) FROM TABLE時(shí)只需要直接讀取已經(jīng)保存好的值而不需要進(jìn)行全表掃描。如果表的讀操作遠(yuǎn)遠(yuǎn)多于寫操作且不需要數(shù)據(jù)庫事務(wù)的支持,那么MyIASM也是很好的選擇。

數(shù)據(jù)結(jié)構(gòu):

MyISAM索引結(jié)構(gòu): MyISAM索引用的B+ tree來儲(chǔ)存數(shù)據(jù),MyISAM索引的指針指向的是鍵值的地址,地址存儲(chǔ)的是數(shù)據(jù)。B+Tree的數(shù)據(jù)域存儲(chǔ)的內(nèi)容為實(shí)際數(shù)據(jù)的地址,也就是說它的索引和實(shí)際的數(shù)據(jù)是分開的,只不過是用索引指向了實(shí)際的數(shù)據(jù),這種索引就是所謂的非聚集索引。

如今我們還會(huì)學(xué)習(xí)<數(shù)據(jù)結(jié)構(gòu)><算法>等課程,會(huì)被其中的時(shí)間復(fù)雜度,效率搞得暈頭轉(zhuǎn)向,有時(shí)候很懷疑為了這一點(diǎn)效率有必要如此大費(fèi)周章嗎.當(dāng)然,如今計(jì)算機(jī)運(yùn)算速度能達(dá)到每秒萬億次,微機(jī)也可達(dá)每秒億次以上,但是當(dāng)數(shù)據(jù)量一旦變大之后呢?若是對(duì)幾個(gè)G的數(shù)據(jù)查詢?cè)撛趺崔k呢?因此算法的優(yōu)化在數(shù)據(jù)庫中還是非常重要的.

索引簡介 索引優(yōu)點(diǎn)

查詢數(shù)據(jù)塊

數(shù)據(jù)唯一性

加速表之間的連接

索引缺點(diǎn)

索引會(huì)占用存儲(chǔ)空間,可能比本身的表數(shù)據(jù)還大

只對(duì)查有利,增加了增刪改的負(fù)擔(dān)

使用索引的注意事項(xiàng)

字段值差別大的數(shù)據(jù)使用索引(性別列就不要用索引了)

字符字段可以只選取字段的前幾位字符建立索引,能簡少存儲(chǔ)數(shù)據(jù).

InnoDB 特點(diǎn)

支持事務(wù)

處理數(shù)據(jù)量巨大

表數(shù)據(jù)和索引分開存儲(chǔ)

支持行級(jí)鎖定

缺省 6B長度主鍵

主鍵本身就是索引,其索引映射的不是地址,而是主鍵,從而找到行記錄

InnoDB索引

只支持B-Tree

MyISAM 特點(diǎn)

不支持事務(wù)

插入和查找極快

不支持事務(wù)

單純?cè)霾閿?shù)據(jù)的首選

MyISAM索引

只支持B-Tree

memory索引

支持 B-Tree和hash

參考文檔:

[計(jì)算機(jī)·呂鳳萍](http://www.cpweb.gov.cn/kepu/jishu/jisuanjijishu/21141_2.html)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/73092.html

相關(guān)文章

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<