1、事務(wù)四大特性(ACID)
? ??⑴ 原子性(Atomicity):原子性是指事務(wù)包含的所有操作要么全部成功状蜗,要么全部失敗回滾晤锥,這和前面兩篇博客介紹事務(wù)的功能是一樣的概念护桦,因此事務(wù)的操作如果成功就必須要完全應(yīng)用到數(shù)據(jù)庫(kù),如果操作失敗則不能對(duì)數(shù)據(jù)庫(kù)有任何影響族奢。
????⑵ 一致性(Consistency):一致性是指事務(wù)必須使數(shù)據(jù)庫(kù)從一個(gè)一致性狀態(tài)變換到另一個(gè)一致性狀態(tài)氮兵,也就是說一個(gè)事務(wù)執(zhí)行之前和執(zhí)行之后都必須處于一致性狀態(tài)。拿轉(zhuǎn)賬來說歹鱼,假設(shè)用戶A和用戶B兩者的錢加起來一共是5000泣栈,那么不管A和B之間如何轉(zhuǎn)賬,轉(zhuǎn)幾次賬弥姻,事務(wù)結(jié)束后兩個(gè)用戶的錢相加起來應(yīng)該還得是5000南片,這就是事務(wù)的一致性。
????⑶ 隔離性(Isolation):隔離性是當(dāng)多個(gè)用戶并發(fā)訪問數(shù)據(jù)庫(kù)時(shí)庭敦,比如操作同一張表時(shí)疼进,數(shù)據(jù)庫(kù)為每一個(gè)用戶開啟的事務(wù),不能被其他事務(wù)的操作所干擾秧廉,多個(gè)并發(fā)事務(wù)之間要相互隔離伞广。即要達(dá)到這么一種效果:對(duì)于任意兩個(gè)并發(fā)的事務(wù)T1和T2,在事務(wù)T1看來疼电,T2要么在T1開始之前就已經(jīng)結(jié)束嚼锄,要么在T1結(jié)束之后才開始,這樣每個(gè)事務(wù)都感覺不到有其他事務(wù)在并發(fā)地執(zhí)行蔽豺。
????⑷ 持久性(Durability):持久性是指一個(gè)事務(wù)一旦被提交了区丑,那么對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)的改變就是永久性的,即便是在數(shù)據(jù)庫(kù)系統(tǒng)遇到故障的情況下也不會(huì)丟失提交事務(wù)的操作修陡。例如我們?cè)谑褂肑DBC操作數(shù)據(jù)庫(kù)時(shí)沧侥,在提交事務(wù)方法后,提示用戶事務(wù)操作完成魄鸦,當(dāng)我們程序執(zhí)行完成直到看到提示后宴杀,就可以認(rèn)定事務(wù)以及正確提交,即使這時(shí)候數(shù)據(jù)庫(kù)出現(xiàn)了問題拾因,也必須要將我們的事務(wù)完全執(zhí)行完成旺罢,否則就會(huì)造成我們看到提示事務(wù)處理完畢斯棒,但是數(shù)據(jù)庫(kù)因?yàn)楣收隙鴽]有執(zhí)行事務(wù)的重大錯(cuò)誤。
2主经、數(shù)據(jù)庫(kù)隔離級(jí)別荣暮,每個(gè)級(jí)別會(huì)引發(fā)什么問題,mysql默認(rèn)是哪個(gè)級(jí)別
? ??????介紹完事務(wù)的四大特性(簡(jiǎn)稱ACID)罩驻,現(xiàn)在重點(diǎn)來說明下事務(wù)的隔離性穗酥,當(dāng)多個(gè)線程都開啟事務(wù)操作數(shù)據(jù)庫(kù)中的數(shù)據(jù)時(shí),數(shù)據(jù)庫(kù)系統(tǒng)要能進(jìn)行隔離操作惠遏,以保證各個(gè)線程獲取數(shù)據(jù)的準(zhǔn)確性砾跃,在介紹數(shù)據(jù)庫(kù)提供的各種隔離級(jí)別之前,我們先看看如果不考慮事務(wù)的隔離性节吮,會(huì)發(fā)生的幾種問題:
1抽高,臟讀
????臟讀是指在一個(gè)事務(wù)處理過程里讀取了另一個(gè)未提交的事務(wù)中的數(shù)據(jù)。
????當(dāng)一個(gè)事務(wù)正在多次修改某個(gè)數(shù)據(jù)透绩,而在這個(gè)事務(wù)中這多次的修改都還未提交翘骂,這時(shí)一個(gè)并發(fā)的事務(wù)來訪問該數(shù)據(jù),就會(huì)造成兩個(gè)事務(wù)得到的數(shù)據(jù)不一致帚豪。例如:用戶A向用戶B轉(zhuǎn)賬100元碳竟,對(duì)應(yīng)SQL命令如下
????updateaccountsetmoney=money+100wherename=’B’;? (此時(shí)A通知B)
? ? updateaccountsetmoney=money-100wherename=’A’;
????當(dāng)只執(zhí)行第一條SQL時(shí),A通知B查看賬戶狸臣,B發(fā)現(xiàn)確實(shí)錢已到賬(此時(shí)即發(fā)生了臟讀)莹桅,而之后無論第二條SQL是否執(zhí)行,只要該事務(wù)不提交烛亦,則所有操作都將回滾诈泼,那么當(dāng)B以后再次查看賬戶時(shí)就會(huì)發(fā)現(xiàn)錢其實(shí)并沒有轉(zhuǎn)。
2煤禽,不可重復(fù)讀
????不可重復(fù)讀是指在對(duì)于數(shù)據(jù)庫(kù)中的某個(gè)數(shù)據(jù)铐达,一個(gè)事務(wù)范圍內(nèi)多次查詢卻返回了不同的數(shù)據(jù)值,這是由于在查詢間隔呜师,被另一個(gè)事務(wù)修改并提交了娶桦。
例如事務(wù)T1在讀取某一數(shù)據(jù)贾节,而事務(wù)T2立馬修改了這個(gè)數(shù)據(jù)并且提交事務(wù)給數(shù)據(jù)庫(kù)汁汗,事務(wù)T1再次讀取該數(shù)據(jù)就得到了不同的結(jié)果,發(fā)送了不可重復(fù)讀栗涂。
不可重復(fù)讀和臟讀的區(qū)別是知牌,臟讀是某一事務(wù)讀取了另一個(gè)事務(wù)未提交的臟數(shù)據(jù),而不可重復(fù)讀則是讀取了前一事務(wù)提交的數(shù)據(jù)斤程。
在某些情況下角寸,不可重復(fù)讀并不是問題菩混,比如我們多次查詢某個(gè)數(shù)據(jù)當(dāng)然以最后查詢得到的結(jié)果為主。但在另一些情況下就有可能發(fā)生問題扁藕,例如對(duì)于同一個(gè)數(shù)據(jù)A和B依次查詢就可能不同沮峡,A和B就可能打起來了……
3,虛讀(幻讀)
????幻讀是事務(wù)非獨(dú)立執(zhí)行時(shí)發(fā)生的一種現(xiàn)象亿柑。例如事務(wù)T1對(duì)一個(gè)表中所有的行的某個(gè)數(shù)據(jù)項(xiàng)做了從“1”修改為“2”的操作邢疙,這時(shí)事務(wù)T2又對(duì)這個(gè)表中插入了一行數(shù)據(jù)項(xiàng),而這個(gè)數(shù)據(jù)項(xiàng)的數(shù)值還是為“1”并且提交給數(shù)據(jù)庫(kù)望薄。而操作事務(wù)T1的用戶如果再查看剛剛修改的數(shù)據(jù)疟游,會(huì)發(fā)現(xiàn)還有一行沒有修改,其實(shí)這行是從事務(wù)T2中添加的痕支,就好像產(chǎn)生幻覺一樣颁虐,這就是發(fā)生了幻讀。
幻讀和不可重復(fù)讀都是讀取了另一條已經(jīng)提交的事務(wù)(這點(diǎn)就臟讀不同)卧须,所不同的是不可重復(fù)讀查詢的都是同一個(gè)數(shù)據(jù)項(xiàng)另绩,而幻讀針對(duì)的是一批數(shù)據(jù)整體(比如數(shù)據(jù)的個(gè)數(shù))。
現(xiàn)在來看看MySQL數(shù)據(jù)庫(kù)為我們提供的四種隔離級(jí)別:
』ㄋ弧① Serializable (串行化):可避免臟讀板熊、不可重復(fù)讀、幻讀的發(fā)生察绷。
「汕② Repeatable read (可重復(fù)讀):可避免臟讀、不可重復(fù)讀的發(fā)生拆撼。
∪堇汀③ Read committed (讀已提交):可避免臟讀的發(fā)生。
≌⒍取④ Read uncommitted (讀未提交):最低級(jí)別竭贩,任何情況都無法保證。
以上四種隔離級(jí)別最高的是Serializable級(jí)別莺禁,最低的是Read uncommitted級(jí)別留量,當(dāng)然級(jí)別越高,執(zhí)行效率就越低哟冬。像Serializable這樣的級(jí)別楼熄,就是以鎖表的方式(類似于Java多線程中的鎖)使得其他的線程只能在鎖外等待,所以平時(shí)選用何種隔離級(jí)別應(yīng)該根據(jù)實(shí)際情況浩峡。在MySQL數(shù)據(jù)庫(kù)中默認(rèn)的隔離級(jí)別為Repeatable read (可重復(fù)讀)可岂。
在MySQL數(shù)據(jù)庫(kù)中,支持上面四種隔離級(jí)別翰灾,默認(rèn)的為Repeatable read (可重復(fù)讀)缕粹;而在Oracle數(shù)據(jù)庫(kù)中稚茅,只支持Serializable (串行化)級(jí)別和Read committed (讀已提交)這兩種級(jí)別,其中默認(rèn)的為Read committed級(jí)別平斩。
在MySQL數(shù)據(jù)庫(kù)中查看當(dāng)前事務(wù)的隔離級(jí)別:
????????select@@tx_isolation;
????????在MySQL數(shù)據(jù)庫(kù)中設(shè)置事務(wù)的隔離 級(jí)別:
????????set[glogal | session]transactionisolationlevel 隔離級(jí)別名稱;
? ????? settx_isolation=’隔離級(jí)別名稱;’
例1:查看當(dāng)前事務(wù)的隔離級(jí)別:
例2:將事務(wù)的隔離級(jí)別設(shè)置為Read uncommitted級(jí)別:
或:
記籽窍怼:設(shè)置數(shù)據(jù)庫(kù)的隔離級(jí)別一定要是在開啟事務(wù)之前!
如果是使用JDBC對(duì)數(shù)據(jù)庫(kù)的事務(wù)設(shè)置隔離級(jí)別的話绘面,也應(yīng)該是在調(diào)用Connection對(duì)象的setAutoCommit(false)方法之前虹蒋。調(diào)用Connection對(duì)象的setTransactionIsolation(level)即可設(shè)置當(dāng)前鏈接的隔離級(jí)別,至于參數(shù)level飒货,可以使用Connection對(duì)象的字段:
在JDBC中設(shè)置隔離級(jí)別的部分代碼:
后記:隔離級(jí)別的設(shè)置只對(duì)當(dāng)前鏈接有效魄衅。對(duì)于使用MySQL命令窗口而言,一個(gè)窗口就相當(dāng)于一個(gè)鏈接塘辅,當(dāng)前窗口設(shè)置的隔離級(jí)別只對(duì)當(dāng)前窗口中的事務(wù)有效晃虫;對(duì)于JDBC操作數(shù)據(jù)庫(kù)來說,一個(gè)Connection對(duì)象相當(dāng)于一個(gè)鏈接扣墩,而對(duì)于Connection對(duì)象設(shè)置的隔離級(jí)別只對(duì)該Connection對(duì)象有效哲银,與其他鏈接Connection對(duì)象無關(guān)。
3呻惕、MYSQL的兩種存儲(chǔ)引擎區(qū)別(事務(wù)荆责、鎖級(jí)別等等),各自的適用場(chǎng)景
? ??MyISAM MyISAM表是獨(dú)立于操作系統(tǒng)的亚脆,這說明可以輕松地將其從Windows服務(wù)器移植到Linux服務(wù)器做院;每當(dāng)我們建立一個(gè)MyISAM引擎的表時(shí),就會(huì)在本地磁盤上建立三個(gè)文件濒持,文件名就是表明键耕。例如,我建立了一個(gè)MyISAM引擎的tb_Demo表柑营,那么就會(huì)生成以下三個(gè)文件:
????????1.tb_demo.frm屈雄,存儲(chǔ)表定義;?
????????2.tb_demo.MYD官套,存儲(chǔ)數(shù)據(jù)酒奶;?
????????3.tb_demo.MYI,存儲(chǔ)索引奶赔。
????MyISAM表無法處理事務(wù)惋嚎,這就意味著有事務(wù)處理需求的表,不能使用MyISAM存儲(chǔ)引擎纺阔。MyISAM存儲(chǔ)引擎特別適合在以下幾種情況下使用:
????????1.選擇密集型的表瘸彤。MyISAM存儲(chǔ)引擎在篩選大量數(shù)據(jù)時(shí)非常迅速,這是它最突出的優(yōu)點(diǎn)笛钝。?
????????2.插入密集型的表质况。MyISAM的并發(fā)插入特性允許同時(shí)選擇和插入數(shù)據(jù)。例如:MyISAM存儲(chǔ)引擎很適合管理郵件或Web服務(wù)器日志數(shù)據(jù)玻靡。
????(1)特性? ?
????????不支持事務(wù):MyISAM存儲(chǔ)引擎不支持事務(wù)结榄,所以對(duì)事務(wù)有要求的業(yè)務(wù)場(chǎng)景不能使用
????????表級(jí)鎖定:其鎖定機(jī)制是表級(jí)索引,這雖然可以讓鎖定的實(shí)現(xiàn)成本很小但是也同時(shí)大大降低了其并發(fā)性能? ?
????????讀寫互相阻塞:不僅會(huì)在寫入的時(shí)候阻塞讀取囤捻,MyISAM還會(huì)在讀取的時(shí)候阻塞寫入臼朗,但讀本身并不會(huì)阻塞另外的讀? ?
????????只會(huì)緩存索引:MyISAM可以通過key_buffer緩存以大大提高訪問性能減少磁盤IO,但是這個(gè)緩存區(qū)只會(huì)緩存索引蝎土,而不會(huì)緩存數(shù)據(jù)
????(2)適用場(chǎng)景? ?
????????不需要事務(wù)支持(不支持)? 视哑,并發(fā)相對(duì)較低(鎖定機(jī)制問題)?;數(shù)據(jù)修改相對(duì)較少(阻塞問題)誊涯;以讀為主挡毅;數(shù)據(jù)一致性要求不是非常高? ??
? ? (3)最佳實(shí)踐??
????????盡量索引(緩存機(jī)制)? ,調(diào)整讀寫優(yōu)先級(jí)暴构;根據(jù)實(shí)際需求確保重要操作更優(yōu)先跪呈;啟用延遲插入改善大批量寫入性能;盡量順序操作讓insert數(shù)據(jù)都寫入到尾部取逾,減少阻塞耗绿;分解大的操作,降低單個(gè)操作的阻塞時(shí)間砾隅;降低并發(fā)數(shù)误阻,某些高并發(fā)場(chǎng)景通過應(yīng)用來進(jìn)行排隊(duì)機(jī)制;對(duì)于相對(duì)靜態(tài)的數(shù)據(jù)晴埂,充分利用Query Cache可以極大的提高訪問效率堕绩;MyISAM的Count只有在全表掃描的時(shí)候特別高效,帶有其他條件的count都需要進(jìn)行實(shí)際的數(shù)據(jù)訪問? ? ??
?InnoDB
????InnoDB是一個(gè)健壯的事務(wù)型存儲(chǔ)引擎邑时,在以下場(chǎng)合下奴紧,使用InnoDB是最理想的選擇:
? ? ? ? 更新密集的表。InnoDB存儲(chǔ)引擎特別適合處理多重并發(fā)的更新請(qǐng)求晶丘。?
? ? ? ? 事務(wù)黍氮。InnoDB存儲(chǔ)引擎是支持事務(wù)的標(biāo)準(zhǔn)MySQL存儲(chǔ)引擎。?
? ? ? ? 自動(dòng)災(zāi)難恢復(fù)浅浮。與其它存儲(chǔ)引擎不同沫浆,InnoDB表能夠自動(dòng)從災(zāi)難中恢復(fù)。?
? ? ? ? 外鍵約束滚秩。MySQL支持外鍵的存儲(chǔ)引擎只有InnoDB专执。?
? ? ? ? 支持自動(dòng)增加列AUTO_INCREMENT屬性。
????????一般來說郁油,如果需要事務(wù)支持本股,并且有較高的并發(fā)讀取頻率攀痊,InnoDB是不錯(cuò)的選擇。
????(1)特性? ?
????????具有較好的事務(wù)支持:支持4個(gè)事務(wù)隔離級(jí)別拄显,支持多版本讀?
????????行級(jí)鎖定:通過索引實(shí)現(xiàn)苟径,全表掃描仍然會(huì)是表鎖,注意間隙鎖的影響? ?
????????讀寫阻塞與事務(wù)隔離級(jí)別相關(guān)? ?
????????具有非常高效的緩存特性:能緩存索引躬审,也能緩存數(shù)據(jù)
????????整個(gè)表和主鍵以Cluster方式存儲(chǔ)棘街,組成一顆平衡樹? ?
????????所有Secondary Index都會(huì)保存主鍵信息? ??
????(2)適用場(chǎng)景? ?
????????需要事務(wù)支持(具有較好的事務(wù)特性)?;行級(jí)鎖定對(duì)高并發(fā)有很好的適應(yīng)能力承边,但需要確保查詢是通過索引完成遭殉;數(shù)據(jù)更新較為頻繁的場(chǎng)景? ? ;數(shù)據(jù)一致性要求較高?博助;硬件設(shè)備內(nèi)存較大险污,可以利用InnoDB較好的緩存能力來提高內(nèi)存利用率,盡可能減少磁盤 IO? ??
???(3)最佳實(shí)踐? ?
????????主鍵盡可能小翔始,避免給Secondary index帶來過大的空間負(fù)擔(dān)罗心;避免全表掃描,因?yàn)闀?huì)使用表鎖城瞎;盡可能緩存所有的索引和數(shù)據(jù)渤闷,提高響應(yīng)速度;在大批量小插入的時(shí)候脖镀,盡量自己控制事務(wù)而不要使用autocommit自動(dòng)提交飒箭;合理設(shè)置innodb_flush_log_at_trx_commit參數(shù)值,不要過度追求安全性?蜒灰;避免主鍵更新弦蹂,因?yàn)檫@會(huì)帶來大量的數(shù)據(jù)移動(dòng)。
????????主要區(qū)別:
? ? ? ? MyIASM是非事務(wù)安全的强窖,而InnoDB是事務(wù)安全的
????????MyIASM鎖的粒度是表級(jí)的凸椿,而InnoDB支持行級(jí)鎖
????????MyIASM支持全文類型索引,而InnoDB不支持全文索引
????????MyIASM相對(duì)簡(jiǎn)單翅溺,效率上要優(yōu)于InnoDB脑漫,小型應(yīng)用可以考慮使用MyIASM
????????MyIASM表保存成文件形式,跨平臺(tái)使用更加方便
????????應(yīng)用場(chǎng)景:
????????MyIASM管理非事務(wù)表咙崎,提供高速存儲(chǔ)和檢索以及全文搜索能力优幸,如果再應(yīng)用中執(zhí)行大量select操作,應(yīng)該選擇MyIASM
????????InnoDB用于事務(wù)處理褪猛,具有ACID事務(wù)支持等特性网杆,如果在應(yīng)用中執(zhí)行大量insert和update操作,應(yīng)該選擇InnoDB
4、數(shù)據(jù)庫(kù)的優(yōu)化(從sql語(yǔ)句優(yōu)化和索引兩個(gè)部分回答)
? ??????http://blog.csdn.net/yzllz001/article/details/54848513
? ??????https://www.cnblogs.com/zishengY/p/6892345.html
5碳却、B+索引數(shù)據(jù)結(jié)構(gòu)队秩,和B樹的區(qū)別
? ??????https://www.cnblogs.com/George1994/p/7008732.html
6、聚集索引和非聚集索引區(qū)別
? ? ? ? 聚集索引:搜索碼順序連續(xù)追城、物理存儲(chǔ)順序連續(xù)且與抖索碼順序相同刹碾。(聚集索引可以建立在任何鍵上燥撞,但還是主鍵居多座柱,考慮主鍵唯一性帶來的性能;一個(gè)表只能有一個(gè)聚集索引物舒,因?yàn)橐粋€(gè)表的物理順序只有一種情況色洞,所以,對(duì)應(yīng)的聚集索引只能有一個(gè)冠胯。聚集索引類似數(shù)組)
? ? ? ? 非聚集索引:搜索碼順序連續(xù)火诸、物理存儲(chǔ)順序不連續(xù)。(非聚集索引類似鏈表荠察;因?yàn)榉蔷奂饕沁壿嬌系倪B續(xù)置蜀,所以一個(gè)表可以有多個(gè)非聚集索引。)
7悉盆、有哪些鎖(樂觀鎖悲觀鎖)盯荤,select時(shí)怎么加排它鎖
? ? ? ? http://blog.itpub.net/11627468/viewspace-1788399/
????????(1)樂觀鎖:在關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)里,樂觀并發(fā)控制(又名“樂觀鎖”焕盟,Optimistic Concurrency Control秋秤,縮寫“OCC”)是一種并發(fā)控制的方法。它假設(shè)多用戶并發(fā)的事務(wù)在處理時(shí)不會(huì)彼此互相影響脚翘,各事務(wù)能夠在不產(chǎn)生鎖的情況下處理各自影響的那部分?jǐn)?shù)據(jù)灼卢。在提交數(shù)據(jù)更新之前,每個(gè)事務(wù)會(huì)先檢查在該事務(wù)讀取數(shù)據(jù)后来农,有沒有其他事務(wù)又修改了該數(shù)據(jù)鞋真。如果其他事務(wù)有更新的話,正在提交的事務(wù)會(huì)進(jìn)行回滾沃于。
? ? ? ? (2)悲觀鎖:悲觀鎖涩咖,正如其名,它指的是對(duì)數(shù)據(jù)被外界(包括本系統(tǒng)當(dāng)前的其他事務(wù)揽涮,以及來自外部系統(tǒng)的事務(wù)處理)修改持保守態(tài)度(悲觀)抠藕,因此,在整個(gè)數(shù)據(jù)處理過程中蒋困,將數(shù)據(jù)處于鎖定狀態(tài)盾似。 悲觀鎖的實(shí)現(xiàn),往往依靠數(shù)據(jù)庫(kù)提供的鎖機(jī)制 (也只有數(shù)據(jù)庫(kù)層提供的鎖機(jī)制才能真正保證數(shù)據(jù)訪問的排他性,否則零院,即使在本系統(tǒng)中實(shí)現(xiàn)了加鎖機(jī)制溉跃,也無法保證外部系統(tǒng)不會(huì)修改數(shù)據(jù))
????????(3)排他鎖和共享鎖 :在數(shù)據(jù)庫(kù)中有兩種基本的鎖類型:排它鎖(Exclusive Locks,即X鎖)和共享鎖(Share Locks告抄,即S鎖)撰茎。當(dāng)數(shù)據(jù)對(duì)象被加上排它鎖時(shí),其他的事務(wù)不能對(duì)它讀取和修改打洼。加了共享鎖的數(shù)據(jù)對(duì)象可以被其他事務(wù)讀取龄糊,但不能修改。數(shù)據(jù)庫(kù)利用這兩種基本的鎖類型來對(duì)數(shù)據(jù)庫(kù)的事務(wù)進(jìn)行并發(fā)控制募疮。
? ? ? ? (4)表級(jí)鎖和行級(jí)鎖:DML鎖的目的在于保證并發(fā)情況下的數(shù)據(jù)完整性炫惩,主要包括TM鎖和TX鎖,其中TM鎖稱為表級(jí)鎖阿浓,TX鎖稱為事務(wù)鎖或行級(jí)鎖他嚷。當(dāng)Oracle執(zhí)行DML語(yǔ)句時(shí),系統(tǒng)自動(dòng)在所要操作的表上申請(qǐng)TM類型的鎖芭毙。當(dāng)TM鎖獲得后筋蓖,系統(tǒng)再自動(dòng)申請(qǐng)TX類型的鎖,并將實(shí)際鎖定的數(shù)據(jù)行的鎖標(biāo)志位進(jìn)行置位退敦。這樣在事務(wù)加鎖前檢查TX鎖相容性時(shí)就不用再逐行檢查鎖標(biāo)志粘咖,而只需檢查TM鎖模式的相容性即可,大大提高了系統(tǒng)的效率苛聘。TM鎖包括了SS涂炎、SX、S设哗、X等多種模式唱捣,在數(shù)據(jù)庫(kù)中用0-6來表示。不同的SQL操作產(chǎn)生不同類型的TM鎖网梢。
? ? ? ? select ....for update
8震缭、SQL和NoSQL的區(qū)別
? ??????http://blog.csdn.net/xlgen157387/article/details/47908797
? ??????http://blog.csdn.net/han_cui/article/details/60765969
? ??????從數(shù)據(jù)結(jié)構(gòu)出發(fā)對(duì)比關(guān)系型數(shù)據(jù)庫(kù)和文檔型數(shù)據(jù)庫(kù):https://crzidea.com/2016/08/08/relational-database-vs-document-oriented-database-in-data-structure/
9、數(shù)據(jù)庫(kù)三范式战虏,根據(jù)某個(gè)場(chǎng)景設(shè)計(jì)數(shù)據(jù)表(可以通過手繪ER圖)
? ??????https://www.zhihu.com/question/24696366
10拣宰、數(shù)據(jù)庫(kù)的主從復(fù)制
????????http://www.cnblogs.com/exceptioneye/p/5042133.html
11、使用explain優(yōu)化sql和索引
? ??????https://www.cnblogs.com/chenxqNo01/p/6371075.html
? ??????http://blog.csdn.net/zc474235918/article/details/74923614
12烦感、內(nèi)連接與外鏈接
????????http://dataunion.org/11954.html
*1巡社、MVCC機(jī)制
????????http://blog.csdn.net/whoamiyang/article/details/51901888
????????https://www.cnblogs.com/phpper/p/6937650.html
*2、根據(jù)具體場(chǎng)景手趣,說明版本控制機(jī)制
????????http://www.kuqin.com/system-analysis/20120319/319108.html
*3晌该、varchar和char的使用場(chǎng)景
? ??????http://www.jb51.net/article/55366.htm
*4、數(shù)據(jù)庫(kù)死鎖的原因和解決方法
? ??????https://www.cnblogs.com/sivkun/p/7518540.html
Redis
1、redis和Memcach
? ??????http://blog.csdn.net/langzi7758521/article/details/51672028
2朝群、redis隊(duì)列應(yīng)用場(chǎng)景
????????https://www.cnblogs.com/xiaoxi/p/7007695.html