欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

mysql數(shù)據(jù)庫的知識點介紹

這篇文章將為大家詳細講解有關(guān)MySQL數(shù)據(jù)庫的知識點,文章內(nèi)容質(zhì)量較高,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

創(chuàng)新互聯(lián)專注于麻章企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城網(wǎng)站建設(shè)。麻章網(wǎng)站建設(shè)公司,為麻章等地區(qū)提供建站服務(wù)。全流程按需策劃,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)

一、關(guān)系型數(shù)據(jù)庫與非關(guān)系型數(shù)據(jù)庫

1、關(guān)系型數(shù)據(jù)庫的特點:

1)數(shù)據(jù)以表格的形式出現(xiàn)

2)每行為各種記錄名稱

3)每列為記錄名稱所對應(yīng)的數(shù)據(jù)域

4)許多的行和列組成一張表單

5)若干的表單組成數(shù)據(jù)庫

2、關(guān)系型數(shù)據(jù)庫的優(yōu)勢:

1)復(fù)雜的查詢:可以使用SQL語句方便地在一個表以及多個表之間做非常復(fù)雜的數(shù)據(jù)查詢。

2)事務(wù)支持:使得對于安全性能很高的數(shù)據(jù)訪問要求得以實現(xiàn)。

3、非關(guān)系型數(shù)據(jù)庫的優(yōu)勢:

1)性能:NOSQL是基于鍵值對的,可以想象成表中的主鍵和值的對應(yīng)關(guān)系,而且不需要經(jīng)過SQL層的解析,所以性能非常高。

2)可擴展性:同樣也是因為基于鍵值對,數(shù)據(jù)之間沒有耦合性,所以非常容易水平擴展。

三種傳統(tǒng)數(shù)據(jù)庫之間的區(qū)別

三者之間是根據(jù)數(shù)據(jù)之間的聯(lián)系而去別的,層次性數(shù)據(jù)庫是樹形結(jié)構(gòu)、網(wǎng)狀型數(shù)據(jù)庫是鏈接指針結(jié)構(gòu)、關(guān)系型數(shù)據(jù)庫是二維表結(jié)構(gòu)。

二、事務(wù)(ACID)

事務(wù)(transaction)是作為單個邏輯工作單元執(zhí)行的一系列操作,這些操作作為一個整體一起向系統(tǒng)提交,要么都執(zhí)行,要么都不執(zhí)行。事務(wù)是一個不可分割的工作邏輯單元。

事務(wù)必須具備以下四個屬性,簡稱ACID屬性:

原子性(atomicity):事務(wù)是一個完整的操作。事物的各部操作是不可分的(原子的);要么都執(zhí)行,要么都不執(zhí)行;

一致性(consistency):當事務(wù)完成時,數(shù)據(jù)必須處于一致狀態(tài);

隔離性(isolation):對數(shù)據(jù)進行修改的所有并發(fā)事務(wù)是彼此隔離的,這表明事務(wù)必須是獨立的,它不應(yīng)以任何形式依賴于或影響其他事務(wù);

永久性(durability):事務(wù)完成后,它對數(shù)據(jù)庫的修改是永久的,事務(wù)日志能夠保持事務(wù)的永久性。

事務(wù)的隔離級別:

讀取未提交內(nèi)容(又稱為臟讀 read uncommitted):指所有事務(wù)都可以看到其他未提交事務(wù)的執(zhí)行結(jié)果。可能有臟讀、不可重復(fù)讀和幻讀問題。

讀取提交內(nèi)容(read commited):一個事務(wù)只能看見已經(jīng)提交的事務(wù)所做的改變。可以避免臟讀,可能有不可重復(fù)讀和幻讀問題。

可重復(fù)讀(repeatable read):是MySQL的默認事務(wù)隔離級別,它確保同一事務(wù)的多個實例在并發(fā)讀取數(shù)據(jù)時,會看到同樣的數(shù)據(jù)行。可以避免臟讀和不可重復(fù)讀,可能會有幻讀問題。

可串行化(serializable):是最高的隔離級別,它通過在每個讀的數(shù)據(jù)行上加上共享鎖,使之不可能相互沖突,從而解決幻讀問題。可以避免臟讀、不可重復(fù)讀、幻讀。

并發(fā)事務(wù)帶來的問題:

1.更新丟失:兩個事務(wù)T1和T2讀入了同一數(shù)據(jù)并修改,T2提交的結(jié)果覆蓋了T1提交的結(jié)果,導(dǎo)致T1的修改被丟失。

2.臟讀:事務(wù)T1修改了某一數(shù)據(jù),并將其寫回磁盤,事務(wù)T2讀取同一數(shù)據(jù)后,T1由于某種原因被撤銷,這時T1已修改過的數(shù)據(jù)恢復(fù)原值,T2讀到的數(shù)據(jù)就與數(shù)據(jù)庫中的數(shù)據(jù)不一致,則T2讀到的數(shù)據(jù)就為“臟”數(shù)據(jù),即不正確的數(shù)據(jù)。

3.不可重復(fù)讀:是指在一個事務(wù)內(nèi),多次讀同一數(shù)據(jù)。在這個事務(wù)還沒有結(jié)束時,另外一個事務(wù)也訪問了該同一數(shù)據(jù)。那么,在第一個事務(wù)中的兩次讀數(shù)據(jù)之間,由于第二個事務(wù)的修改,那么第一個事務(wù)兩次讀到的數(shù)據(jù)可能是不一樣的。這就發(fā)生了在一個事務(wù)內(nèi)兩次相同的查詢讀到的數(shù)據(jù)是不一樣的,因此稱為是不可重復(fù)讀。

4.幻讀:例如:目前工資為5000的員工有10人,事務(wù)A讀取所有工資為5000的人數(shù)為10人。此時,事務(wù)B插入了一條工資也為5000的記錄。這時,事務(wù)A再次讀取工資為5000的員工,記錄為11人。此時就產(chǎn)生了幻讀。

不可重復(fù)讀和幻讀的區(qū)別?不可重復(fù)讀的重點是修改,幻讀的重點在于新增或刪除。

MVCC(多版本并發(fā)控制機制):InnoDB的MVCC,是通過在每行記錄后面保存兩個隱藏的列來實現(xiàn)的。分別保存了行的創(chuàng)建時間和行的刪除時間(這里存儲的并不是實際的時間值,而是系統(tǒng)版本號)。每開始一個新的事務(wù),系統(tǒng)版本號都會自動遞增。事務(wù)開始時刻的系統(tǒng)版本號會作為事務(wù)的ID,用來和查詢到的每行記錄的版本號進行比較,使用MVCC后可重復(fù)讀隔離級別下不會出現(xiàn)幻讀現(xiàn)象。

三、存儲引擎

存儲引擎是數(shù)據(jù)庫底層軟件組織,數(shù)據(jù)庫管理系統(tǒng)(DBMS)使用數(shù)據(jù)引擎進行創(chuàng)建、查詢、更新和刪除數(shù)據(jù)。

1、InnoDB(聚集索引方式)

innodb底層存儲結(jié)構(gòu)為B+樹,樹的每個節(jié)點對應(yīng)innodb的一個page,page的大小是固定的,一般設(shè)為16K.其中非葉子節(jié)點只有鍵值,葉子節(jié)點包含完整數(shù)據(jù)。

使用場景:1)經(jīng)常更新的表,是和處理多重并發(fā)的更新請求;

2)支持事務(wù)安全表(ACID),支持行鎖和外鍵;

3)可以通過bin-log日志等恢復(fù)

innodb如果沒有設(shè)置主鍵,就會自動生成一個6字節(jié)的主鍵(用戶不可見)。

2、MyISAM(非聚簇索引方式)

MyISAM在5.1之前是MySQL的默認存儲引擎,它強調(diào)的是性能,但是它不支持事務(wù)、也不支持行鎖和外鍵,支持表鎖;當插入或更新數(shù)據(jù)時,需要鎖住整個表,效率便會低一些。只緩存索引,不緩存真實數(shù)據(jù)。MyISAM讀取數(shù)據(jù)時速度很快,而且不占用大量的內(nèi)存和存儲資源。

MyISAM允許沒有主鍵的存在,是一種靜態(tài)索引結(jié)構(gòu)。

問題:MySQL中MyISAM與InnoDB的區(qū)別?

答:MySQL數(shù)據(jù)庫中,最常用的兩種引擎是innodb和myisam。InnoDB是目前MySQL的默認存儲引擎。

1)事務(wù)方面:MyISAM強調(diào)的是性能,查詢速度比InnoDB類型更快,但是不支持事務(wù)。InnoDB提供事務(wù)支持。

2)外鍵:MyISAM不支持外鍵,InnoDB支持外鍵。

3)鎖:MyISAM只支持表級鎖,InnoDB支持行級鎖和表級鎖,默認為行級鎖,行鎖大幅度提高了多用戶并發(fā)操作的性能。innodb比較適合于插入和更新操作比較多的情況,而myisam則適合于頻繁查詢的情況。另外,innodb表的行鎖也不是絕對的,如果在執(zhí)行一個SQL語句時,MySQL不能確定要掃描的范圍,innodb同樣會鎖全表,例如:update table set num=1 where name like "%aaa%"。

4)全文索引:MyISAM支持全文索引,Innodb不支持全文索引。innodb從MySQL5.6之后提供全文索引的支持。

5)表主鍵:myisam允許沒有主鍵的表存在;innodb:如果沒有設(shè)定主鍵,就會自動生成一個6字節(jié)的主鍵(用戶不可見)。

6)表的具體行數(shù):myisam:select count(*) from table,myisam只要簡單的讀出保存好的行數(shù)。因為myisam內(nèi)置了一個計數(shù)器,count(*)時它直接從計數(shù)器中讀。

innodb:不保存表的具體行數(shù),也就是說,執(zhí)行select count(*) from table 時,innodb要掃描一遍整個表來計算有多少行。

以上就是mysql數(shù)據(jù)庫的知識點介紹,看完之后是否有所收獲呢?如果想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊,感謝各位的閱讀。

網(wǎng)站標題:mysql數(shù)據(jù)庫的知識點介紹
鏈接分享:http://chinadenli.net/article14/gsgpde.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)定制網(wǎng)站網(wǎng)站改版手機網(wǎng)站建設(shè)ChatGPT標簽優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

手機網(wǎng)站建設(shè)