MySQL數(shù)據(jù)庫(kù)

索引有哪些,用性別做聯(lián)合索引有沒(méi)有效果

MySQL官方對(duì)索引的定義為:索引(Index)是幫助MySQL高效獲取數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)癞谒。
普通索引弹砚、唯一索引桌吃、主鍵索引逗物、全文索引
1.索引加快數(shù)據(jù)庫(kù)的檢索速度
2.索引降低了插入敬察、刪除莲祸、修改等維護(hù)任務(wù)的速度
3.唯一索引可以確保每一行數(shù)據(jù)的唯一性
4.通過(guò)使用索引锐帜,可以在查詢的過(guò)程中使用優(yōu)化隱藏器缴阎,提高系統(tǒng)的性能
5.索引需要占物理和數(shù)據(jù)空間

什么是事務(wù)蛮拔?

事務(wù)(Transaction)是并發(fā)控制的基本單位建炫。所謂的事務(wù)疼蛾,它是一個(gè)操作序列衍慎,這些操作要么都執(zhí)行稳捆,要么都不執(zhí)行眷柔,它是一個(gè)不可分割的工作單位驯嘱。事務(wù)是數(shù)據(jù)庫(kù)維護(hù)數(shù)據(jù)一致性的單位,在每個(gè)事務(wù)結(jié)束時(shí)剃幌,都能保持?jǐn)?shù)據(jù)一致性晾浴。

mysql底層實(shí)現(xiàn)原理

你能說(shuō)一下數(shù)據(jù)庫(kù)的主外關(guān)聯(lián)嗎负乡?以及它有什么特性呢?

mysql鎖機(jī)制

實(shí)踐中如何優(yōu)化MySQL

① SQL語(yǔ)句及索引的優(yōu)化
② 數(shù)據(jù)庫(kù)表結(jié)構(gòu)的優(yōu)化
③ 系統(tǒng)配置的優(yōu)化
④ 硬件的優(yōu)化

在MySQL中如何定為查詢效率較慢的SQL語(yǔ)句

什么情況下設(shè)置了索引但無(wú)法使用

① 以“%”開(kāi)頭的LIKE語(yǔ)句脊凰,模糊匹配
② OR語(yǔ)句前后沒(méi)有同時(shí)使用索引
③ 數(shù)據(jù)類型出現(xiàn)隱式轉(zhuǎn)化(如varchar不加單引號(hào)的話可能會(huì)自動(dòng)轉(zhuǎn)換為int型)

MySQL的常見(jiàn)優(yōu)化方式抖棘、定為慢查詢

數(shù)據(jù)庫(kù)在使用的時(shí)候是如何進(jìn)行優(yōu)化的

數(shù)據(jù)庫(kù) SQL 問(wèn)題,寫(xiě)了幾條聯(lián)結(jié)查詢的語(yǔ)句狸涌,然后分析索引的使用原理之類的

SQL語(yǔ)句的優(yōu)化

order by要怎么處理
alter盡量將多次合并為一次
insert和delete也需要合并
等等 

索引的底層實(shí)現(xiàn)原理和優(yōu)化

B+樹(shù)切省,經(jīng)過(guò)優(yōu)化的B+樹(shù)
主要是在所有的葉子結(jié)點(diǎn)中增加了指向下一個(gè)葉子節(jié)點(diǎn)的指針,因此InnoDB建議為大部分表使用默認(rèn)自增的主鍵作為主索引帕胆。

觸發(fā)器是如何使用的懒豹,觸發(fā)器有什么優(yōu)點(diǎn)和缺點(diǎn),通常有什么作用

數(shù)據(jù)庫(kù)里面的視圖

觸發(fā)器和函數(shù)的區(qū)別是什么

說(shuō)說(shuō)數(shù)據(jù)庫(kù)的索引在你項(xiàng)目里面是怎么使用的

有哪些索引,它們底層是采用什么數(shù)據(jù)結(jié)構(gòu)去實(shí)現(xiàn)的

B樹(shù)和B+樹(shù)的區(qū)別在哪里

其實(shí)二者最主要的區(qū)別是:
(1) B+樹(shù)改進(jìn)了B樹(shù), 讓內(nèi)結(jié)點(diǎn)只作索引使用, 去掉了其中指向data record的指針, 使得每個(gè)結(jié)點(diǎn)中能夠存放更多的key, 因此能有更大的出度. 這有什么用? 這樣就意味著存放同樣多的key, 樹(shù)的層高能進(jìn)一步被壓縮, 使得檢索的時(shí)間更短.
(2)當(dāng)然了,由于底部的葉子結(jié)點(diǎn)是鏈表形式, 因此也可以實(shí)現(xiàn)更方便的順序遍歷, 但是這是比較次要的, 最主要的的還是第(1)點(diǎn).

數(shù)據(jù)庫(kù)中表與類的關(guān)系钠怯,如何存儲(chǔ)對(duì)象

mysql架構(gòu)(連接池宁脊、查詢器坐漏、優(yōu)化器躏筏、緩沖器等)

數(shù)據(jù)庫(kù)引擎類型與差別

MyISAM是MySQL的默認(rèn)存儲(chǔ)引擎碴卧,基于傳統(tǒng)的ISAM類型,支持全文搜索,但不是事務(wù)安全的,而且不支持外鍵。每張MyISAM表存放在三個(gè)文件中:frm 文件存放表格定義;數(shù)據(jù)文件是MYD (MYData);索引文件是MYI (MYIndex)纫谅。

InnoDB是事務(wù)型引擎发魄,支持回滾苹粟、崩潰恢復(fù)能力苛秕、多版本并發(fā)控制店煞、ACID事務(wù)鸣个,支持行級(jí)鎖定(InnoDB表的行鎖不是絕對(duì)的阁将,如果在執(zhí)行一個(gè)SQL語(yǔ)句時(shí)MySQL不能確定要掃描的范圍,InnoDB表同樣會(huì)鎖全表,如like操作時(shí)的SQL語(yǔ)句)帅刀,以及提供與Oracle類型一致的不加鎖讀取方式。InnoDB存儲(chǔ)它的表和索引在一個(gè)表空間中,表空間可以包含數(shù)個(gè)文件。

主要區(qū)別:

MyISAM是非事務(wù)安全型的彬向,而InnoDB是事務(wù)安全型的。
MyISAM鎖的粒度是表級(jí)等曼,而InnoDB支持行級(jí)鎖定里烦。
MyISAM支持全文類型索引,而InnoDB不支持全文索引禁谦。
MyISAM相對(duì)簡(jiǎn)單丧蘸,所以在效率上要優(yōu)于InnoDB力喷,小型應(yīng)用可以考慮使用MyISAM陈症。
MyISAM表是保存成文件的形式,在跨平臺(tái)的數(shù)據(jù)轉(zhuǎn)移中使用MyISAM存儲(chǔ)會(huì)省去不少的麻煩宣决。
InnoDB表比MyISAM表更安全,可以在保證數(shù)據(jù)不會(huì)丟失的情況下贤惯,切換非事務(wù)表到事務(wù)表(alter table tablename type=innodb)洼专。

應(yīng)用場(chǎng)景:
MyISAM管理非事務(wù)表。它提供高速存儲(chǔ)和檢索孵构,以及全文搜索能力屁商。如果應(yīng)用中需要執(zhí)行大量的SELECT查詢,那么MyISAM是更好的選擇颈墅。
InnoDB用于事務(wù)處理應(yīng)用程序蜡镶,具有眾多特性雾袱,包括ACID事務(wù)支持。如果應(yīng)用中需要執(zhí)行大量的INSERT或UPDATE操作帽哑,則應(yīng)該使用InnoDB谜酒,這樣可以提高多用戶并發(fā)操作的性能

數(shù)據(jù)庫(kù)索引類型

唯一索引和普通索引差別

數(shù)據(jù)庫(kù)的隔離級(jí)別,MySQL默認(rèn)用的哪一級(jí)

Mysql 存儲(chǔ)引擎以及差別

Mysql索引實(shí)現(xiàn)原理

數(shù)據(jù)庫(kù)索引什么時(shí)候出現(xiàn)失效

簡(jiǎn)單說(shuō)一說(shuō)drop妻枕、delete與truncate的區(qū)別

SQL中的drop僻族、delete、truncate都表示刪除屡谐,但是三者有一些差別
1述么、delete和truncate只刪除表的數(shù)據(jù)不刪除表的結(jié)構(gòu)
2、速度,一般來(lái)說(shuō): drop> truncate >delete
3愕掏、delete語(yǔ)句是dml,這個(gè)操作會(huì)放到rollback segement中,事務(wù)提交之后才生效;
如果有相應(yīng)的trigger,執(zhí)行的時(shí)候?qū)⒈挥|發(fā). truncate,drop是ddl, 操作立即生效,原數(shù)據(jù)不放到
rollback segment中,不能回滾. 操作不觸發(fā)trigger.

Mysql ACID具體

ACID — 數(shù)據(jù)庫(kù)事務(wù)正確執(zhí)行的四個(gè)基本要素

ACID度秘,指數(shù)據(jù)庫(kù)事務(wù)正確執(zhí)行的四個(gè)基本要素的縮寫(xiě)。
包含:原子性(Atomicity)饵撑、一致性(Consistency)剑梳、隔離性(Isolation)、持久性(Durability)滑潘。

一個(gè)支持事務(wù)(Transaction)中的數(shù)據(jù)庫(kù)系統(tǒng)垢乙,必需要具有這四種特性,否則在事務(wù)過(guò)程(Transaction processing)當(dāng)中無(wú)法保證數(shù)據(jù)的正確性语卤,交易過(guò)程極可能達(dá)不到交易追逮。

原子性:一個(gè)事務(wù)(Transaction)中的所有操作,要么全部完成粹舵,要么全部不完成钮孵,不會(huì)結(jié)束在中間某個(gè)環(huán)節(jié)。事務(wù)在執(zhí)行過(guò)程中發(fā)生錯(cuò)誤眼滤,會(huì)被回滾(Rollback)到事務(wù)開(kāi)始前的狀態(tài)巴席,就像這個(gè)事務(wù)從來(lái)沒(méi)有執(zhí)行過(guò)一樣。

一致性:在事務(wù)開(kāi)始之前和事務(wù)結(jié)束以后柠偶,數(shù)據(jù)庫(kù)的完整性沒(méi)有被破壞情妖。這表示寫(xiě)入的資料必須完全符合所有的默認(rèn)規(guī)則,這包含資料的精準(zhǔn)度诱担、串聯(lián)新以及后續(xù)數(shù)據(jù)庫(kù)可以自發(fā)性地完成預(yù)定的工作毡证。

隔離性:當(dāng)兩個(gè)或者多個(gè)事務(wù)并發(fā)訪問(wèn)(此處訪問(wèn)指查詢和修改的操作)數(shù)據(jù)庫(kù)的同一數(shù)據(jù)時(shí)所表現(xiàn)出的互相關(guān)系。事務(wù)隔離分為不同的級(jí)別蔫仙,包括讀為提交(Read uncommitted)料睛、讀提交(Read committed)、可重復(fù)讀(Repeatable read)和串行化(Serializable)。

持久性:在事務(wù)完成以后恤煞,該事務(wù)對(duì)數(shù)據(jù)庫(kù)所作的更改便持久地保存在數(shù)據(jù)庫(kù)之中屎勘,而且是完全的。

數(shù)據(jù)庫(kù)的隔離級(jí)別和傳播行為

一居扒、隔離級(jí)別
數(shù)據(jù)庫(kù)事務(wù)的隔離級(jí)別有4個(gè)概漱,由低到高依次為Read uncommitted、Read committed喜喂、Repeatable read瓤摧、Serializable,這四個(gè)級(jí)別可以逐個(gè)解決臟讀玉吁、不可重復(fù)讀照弥、幻讀這幾類問(wèn)題。

image.png

1. ISOLATION_READ_UNCOMMITTED:這是事務(wù)最低的隔離級(jí)別进副,它充許令外一個(gè)事務(wù)可以看到這個(gè)事務(wù)未提交的數(shù)據(jù)这揣。
這種隔離級(jí)別會(huì)產(chǎn)生臟讀,不可重復(fù)讀和幻像讀影斑。
2. ISOLATION_READ_COMMITTED:保證一個(gè)事務(wù)修改的數(shù)據(jù)提交后才能被另外一個(gè)事務(wù)讀取给赞。另外一個(gè)事務(wù)不能讀取該事務(wù)未提交的數(shù)據(jù)
3. ISOLATION_REPEATABLE_READ:這種事務(wù)隔離級(jí)別可以防止臟讀,不可重復(fù)讀矫户。但是可能出現(xiàn)幻像讀塞俱。
它除了保證一個(gè)事務(wù)不能讀取另一個(gè)事務(wù)未提交的數(shù)據(jù)外,還保證了避免下面的情況產(chǎn)生(不可重復(fù)讀)吏垮。
4. ISOLATION_SERIALIZABLE:這是花費(fèi)最高代價(jià)但是最可靠的事務(wù)隔離級(jí)別。事務(wù)被處理為順序執(zhí)行罐旗。
除了防止臟讀膳汪,不可重復(fù)讀外,還避免了幻像讀九秀。
第1級(jí)別:Read Uncommitted(讀取未提交內(nèi)容)
(1)所有事務(wù)都可以看到其他未提交事務(wù)的執(zhí)行結(jié)果
(2)本隔離級(jí)別很少用于實(shí)際應(yīng)用遗嗽,因?yàn)樗男阅芤膊槐绕渌?jí)別好多少
(3)該級(jí)別引發(fā)的問(wèn)題是——臟讀(Dirty Read):讀取到了未提交的數(shù)據(jù)
第2級(jí)別:Read Committed(讀取提交內(nèi)容)
(1)這是大多數(shù)數(shù)據(jù)庫(kù)系統(tǒng)的默認(rèn)隔離級(jí)別(但不是MySQL默認(rèn)的)
(2)它滿足了隔離的簡(jiǎn)單定義:一個(gè)事務(wù)只能看見(jiàn)已經(jīng)提交事務(wù)所做的改變
(3)這種隔離級(jí)別出現(xiàn)的問(wèn)題是——不可重復(fù)讀(Nonrepeatable Read):不可重復(fù)讀意味著我們?cè)谕粋€(gè)事務(wù)中執(zhí)行完全相同的select語(yǔ)句時(shí)可能看到不一樣的結(jié)果。
|——>導(dǎo)致這種情況的原因可能有:(1)有一個(gè)交叉的事務(wù)有新的commit鼓蜒,導(dǎo)致了數(shù)據(jù)的改變;(2)一個(gè)數(shù)據(jù)庫(kù)被多個(gè)實(shí)例操作時(shí),同一事務(wù)的其他實(shí)例在該實(shí)例處理其間可能會(huì)有新的commit
第3級(jí)別:Repeatable Read(可重讀)
(1)這是MySQL的默認(rèn)事務(wù)隔離級(jí)別
(2)它確保同一事務(wù)的多個(gè)實(shí)例在并發(fā)讀取數(shù)據(jù)時(shí)痹换,會(huì)看到同樣的數(shù)據(jù)行
(3)此級(jí)別可能出現(xiàn)的問(wèn)題——幻讀(Phantom Read):當(dāng)用戶讀取某一范圍的數(shù)據(jù)行時(shí),另一個(gè)事務(wù)又在該范圍內(nèi)插入了新行都弹,當(dāng)用戶再讀取該范圍的數(shù)據(jù)行時(shí)娇豫,會(huì)發(fā)現(xiàn)有新的“幻影” 行
(4)InnoDB和Falcon存儲(chǔ)引擎通過(guò)多版本并發(fā)控制(MVCC,Multiversion Concurrency Control)機(jī)制解決了該問(wèn)題
第4級(jí)別:Serializable(可串行化)
(1)這是最高的隔離級(jí)別
(2)它通過(guò)強(qiáng)制事務(wù)排序畅厢,使之不可能相互沖突冯痢,從而解決幻讀問(wèn)題。簡(jiǎn)言之,它是在每個(gè)讀的數(shù)據(jù)行上加上共享鎖。
(3)在這個(gè)級(jí)別浦楣,可能導(dǎo)致大量的超時(shí)現(xiàn)象和鎖競(jìng)爭(zhēng)

?臟讀:一個(gè)事務(wù)讀到另一事務(wù)未提交的更新數(shù)據(jù)袖肥。

?不可重復(fù)讀:一個(gè)事務(wù)讀到另一事務(wù)已提交的更新數(shù)據(jù)。

?幻讀:一個(gè)事務(wù)讀到另一事務(wù)已提交的新插入的數(shù)據(jù)振劳。

事務(wù)具有ACID四種特性椎组。

但是Isolation并發(fā)可能引起如下問(wèn)題:

1.臟讀

允許讀取到未提交的臟數(shù)據(jù)。

2.不可重復(fù)讀

如果你在時(shí)間點(diǎn)T1讀取了一些記錄历恐,在T2時(shí)再想重新讀取一次同樣的這些記錄時(shí)寸癌,這些記錄可能已經(jīng)被改變、或者消失不見(jiàn)夹供。

3.幻讀

解決了不重復(fù)讀灵份,保證了同一個(gè)事務(wù)里,查詢的結(jié)果都是事務(wù)開(kāi)始時(shí)的狀態(tài)(一致性)哮洽。但是填渠,如果另一個(gè)事務(wù)同時(shí)提交了新數(shù)據(jù),本事務(wù)再更新時(shí)鸟辅,就會(huì)“驚奇的”發(fā)現(xiàn)了這些新數(shù)據(jù)氛什,貌似之前讀到的數(shù)據(jù)是“鬼影”一樣的幻覺(jué)。

由ANSI/ISO定義的SQL-92標(biāo)準(zhǔn)定義的四種隔離級(jí)別

1.Read Uncommitted

2.Read Committed

3.Repeatable Read

4.Serializable

二匪凉、傳播行為
1枪眉、PROPAGATION_REQUIRED:如果當(dāng)前沒(méi)有事務(wù),就創(chuàng)建一個(gè)新事務(wù)再层,如果當(dāng)前存在事務(wù)贸铜,就加入該事務(wù),該設(shè)置是最常用的設(shè)置聂受。
2蒿秦、PROPAGATION_SUPPORTS:支持當(dāng)前事務(wù),如果當(dāng)前存在事務(wù)蛋济,就加入該事務(wù)棍鳖,如果當(dāng)前不存在事務(wù),就以非事務(wù)執(zhí)行碗旅《纱Γ‘
3、PROPAGATION_MANDATORY:支持當(dāng)前事務(wù)祟辟,如果當(dāng)前存在事務(wù)医瘫,就加入該事務(wù),如果當(dāng)前不存在事務(wù)旧困,就拋出異常登下。
4茫孔、PROPAGATION_REQUIRES_NEW:創(chuàng)建新事務(wù),無(wú)論當(dāng)前存不存在事務(wù)被芳,都創(chuàng)建新事務(wù)缰贝。
5、PROPAGATION_NOT_SUPPORTED:以非事務(wù)方式執(zhí)行操作畔濒,如果當(dāng)前存在事務(wù)剩晴,就把當(dāng)前事務(wù)掛起。
6侵状、PROPAGATION_NEVER:以非事務(wù)方式執(zhí)行赞弥,如果當(dāng)前存在事務(wù),則拋出異常趣兄。
7绽左、PROPAGATION_NESTED:如果當(dāng)前存在事務(wù),則在嵌套事務(wù)內(nèi)執(zhí)行艇潭。如果當(dāng)前沒(méi)有事務(wù)拼窥,則執(zhí)行與PROPAGATION_REQUIRED類似的操作。

隔離級(jí)別蹋凝,隔離級(jí)別如何實(shí)現(xiàn)

MySQL有哪些索引

索引的優(yōu)缺點(diǎn) 什么時(shí)候索引不起作用鲁纠? 在什么地方可以使用索引?

B+樹(shù)索引與哈希索引有什么區(qū)別

innodb和myisam區(qū)別鳍寂,B+樹(shù)性質(zhì)改含,多列索引及最左前綴原則和其他使用場(chǎng)景

MyISAM 和 InnoDB的適用場(chǎng)景
MyISAM適合:(1)做很多count 的計(jì)算;(2)插入不頻繁迄汛,查詢非常頻繁捍壤;(3)沒(méi)有事務(wù)。
InnoDB適合:(1)可靠性要求比較高鞍爱,或者要求事務(wù)白群;(2)表更新和查詢都相當(dāng)?shù)念l繁,并且表鎖定的機(jī)會(huì)比較大的情況硬霍。

MyISAM 和 InnoDB的區(qū)別
1)MyISAM類型不支持事務(wù)處理等高級(jí)處理,而InnoDB類型支持
2)myisam表不支持外鍵
3)在執(zhí)行數(shù)據(jù)庫(kù)寫(xiě)入的操作(insert,update,delete)的時(shí)候笼裳,myisam表會(huì)鎖表唯卖,而innodb表會(huì)鎖行
4)當(dāng)你的數(shù)據(jù)庫(kù)有大量的寫(xiě)入、更新操作而查詢比較少或者數(shù)據(jù)完整性要求比較高的時(shí)候就選擇innodb表躬柬。當(dāng)你的數(shù)據(jù)庫(kù)主要以查詢?yōu)橹靼莨欤啾容^而言更新和寫(xiě) 入比較少,并且業(yè)務(wù)方面數(shù)據(jù)完整性要求不那么嚴(yán)格允青,就選擇myisam表橄碾。因?yàn)閙yisam表的查詢操作效率和速度都比innodb要快。

兩種存儲(chǔ)引擎在索引以及鎖機(jī)制上的實(shí)現(xiàn)方式的區(qū)別,limit offset優(yōu)化法牲,B+樹(shù)及其查找過(guò)程

數(shù)據(jù)庫(kù)基本知識(shí)(存取控制史汗、觸發(fā)器、存儲(chǔ)過(guò)程(了解作用)拒垃、游標(biāo)(了解作用)

并發(fā)控制(并發(fā)數(shù)據(jù)不一致性停撞、事務(wù)隔離級(jí)別、樂(lè)觀鎖與悲觀鎖等)

說(shuō)一下數(shù)據(jù)庫(kù)事務(wù)的四個(gè)特性悼瓮,為什么mysql事務(wù)能保證失敗回滾

數(shù)據(jù)庫(kù)的第一戈毒、第二、第三范式

1NF: 字段是最小的的單元不可再分
2NF:滿足1NF,表中的字段必須完全依賴于全部主鍵而非部分主鍵 (一般我們都會(huì)做到)
3NF:滿足2NF,非主鍵外的所有字段必須互不依賴(不能互相推導(dǎo))
4NF:滿足3NF,消除表中的多值依賴

冗余舉個(gè)例子

mysql:索引横堡,事務(wù)隔離級(jí)別埋市,組合索引在什么情況下失效

mysql數(shù)據(jù)庫(kù)的鎖有多少種,怎么編寫(xiě)加鎖的sql語(yǔ)句

mysql什么情況下會(huì)觸發(fā)表鎖

mysql中索引失效的情況

mysql 索引原理命贴。為什么索引一部分放到內(nèi)存道宅,一部分放到硬盤(pán)上?

現(xiàn)在有一個(gè)很多個(gè)表進(jìn)行關(guān)聯(lián)查詢的sql套么,子表的數(shù)據(jù)非常的多培己,那么請(qǐng)問(wèn)你僅僅從sql的角度去進(jìn)行sql語(yǔ)句的優(yōu)化,不需要考慮索引胚泌、謂詞

現(xiàn)在有10億條數(shù)據(jù)的一張表省咨,請(qǐng)你設(shè)計(jì)一種方案快速的將這些表中的數(shù)據(jù)搬遷到另一個(gè)數(shù)據(jù)庫(kù)中

數(shù)據(jù)庫(kù)同步你做過(guò)哪些方案,各有什么優(yōu)缺點(diǎn)

現(xiàn)在有兩張表(記不太清楚了)玷室,問(wèn)怎么查詢才能保證查詢效率最高

頁(yè)鎖零蓉、樂(lè)觀鎖、悲觀鎖

數(shù)據(jù)庫(kù)的悲觀鎖和樂(lè)觀鎖

悲觀鎖:對(duì)數(shù)據(jù)被外界(包括本系統(tǒng)當(dāng)前的其他事務(wù)穷缤,以及來(lái)自外部系統(tǒng)的事務(wù)處理)修改持保守態(tài)度敌蜂,因此,在整個(gè)數(shù)據(jù)處理過(guò)程中津肛,將數(shù)據(jù)處于鎖定狀態(tài)章喉。悲觀鎖的實(shí)現(xiàn),往往依靠數(shù)據(jù)庫(kù)提供的鎖機(jī)制(也只有數(shù)據(jù)庫(kù)層提供的鎖機(jī)制才能真正保證數(shù)據(jù)訪問(wèn)的排他性身坐,否則秸脱,即使在本系統(tǒng)中實(shí)現(xiàn)了加鎖機(jī)制,也無(wú)法保證外部系 統(tǒng)不會(huì)修改數(shù)據(jù))部蛇。

樂(lè)觀鎖:大多是基于數(shù)據(jù)版本( Version )記錄機(jī)制實(shí)現(xiàn)摊唇。何謂數(shù)據(jù)版本?即為數(shù)據(jù)增加一個(gè)版本標(biāo)識(shí)涯鲁,在基于數(shù)據(jù)庫(kù)表的版本解決方案中巷查,一般是通過(guò)為數(shù)據(jù)庫(kù)表增加一個(gè) “version” 字段來(lái)實(shí)現(xiàn)有序。讀取出數(shù)據(jù)時(shí),將此版本號(hào)一同讀出岛请,之后更新時(shí)旭寿,對(duì)此版本號(hào)加一。此時(shí)髓需,將提交數(shù)據(jù)的版本數(shù)據(jù)與數(shù)據(jù)庫(kù)表對(duì)應(yīng)記錄的當(dāng)前版本信息進(jìn)行比對(duì)许师,如果提交的數(shù)據(jù)版本號(hào)大于數(shù)據(jù)庫(kù)表當(dāng)前版本號(hào),則予以更新僚匆,否則認(rèn)為是過(guò)期數(shù)據(jù)微渠。

數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)中的并發(fā)控制的任務(wù)是確保在多個(gè)事務(wù)同時(shí)存取數(shù)據(jù)庫(kù)中同一數(shù)據(jù)時(shí)不破壞事務(wù)的隔離性和統(tǒng)一性以及數(shù)據(jù)庫(kù)的統(tǒng)一性。

樂(lè)觀并發(fā)控制(樂(lè)觀鎖)和悲觀并發(fā)控制(悲觀鎖)是并發(fā)控制主要采用的技術(shù)手段咧擂。

悲觀鎖:假定會(huì)發(fā)生并發(fā)沖突逞盆,屏蔽一切可能違反數(shù)據(jù)完整性的操作
樂(lè)觀鎖:假設(shè)不會(huì)發(fā)生并發(fā)沖突,只在提交操作時(shí)檢查是否違反數(shù)據(jù)完整性松申。

數(shù)據(jù)庫(kù)設(shè)計(jì)云芦,假如做一個(gè)通信錄,每個(gè)用戶可能有多個(gè)聯(lián)系方式(比如有微信贸桶,qq舅逸,facebook,人人等皇筛,每個(gè)用戶可能全有琉历,可能也只有其中 一部分,后面也看新增類似字段)水醋。如果每個(gè)字段給一列旗笔,這樣活很浪費(fèi),問(wèn)這么設(shè)計(jì)表拄踪。

方案有兩種:
(1)另外單獨(dú)設(shè)計(jì)一張表蝇恶,外鍵關(guān)聯(lián)到用戶表,里面有一個(gè)類型字段標(biāo)識(shí)是微信還是qq還是facebook等惶桐,第二個(gè)字段是賬號(hào)內(nèi)容
(2)直接放在用戶表中撮弧,設(shè)計(jì)一個(gè)字段存放一個(gè)json數(shù)據(jù),json格式為{“微信”:xxxx姚糊, qq:“xxx"....}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末贿衍,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子叛拷,更是在濱河造成了極大的恐慌,老刑警劉巖岂却,帶你破解...
    沈念sama閱讀 212,383評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件忿薇,死亡現(xiàn)場(chǎng)離奇詭異裙椭,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)署浩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)揉燃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人筋栋,你說(shuō)我怎么就攤上這事炊汤。” “怎么了弊攘?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,852評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵抢腐,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我襟交,道長(zhǎng)迈倍,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,621評(píng)論 1 284
  • 正文 為了忘掉前任捣域,我火速辦了婚禮啼染,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘焕梅。我一直安慰自己迹鹅,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布贞言。 她就那樣靜靜地躺著斜棚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蜗字。 梳的紋絲不亂的頭發(fā)上打肝,一...
    開(kāi)封第一講書(shū)人閱讀 49,929評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音挪捕,去河邊找鬼粗梭。 笑死,一個(gè)胖子當(dāng)著我的面吹牛级零,可吹牛的內(nèi)容都是我干的断医。 我是一名探鬼主播,決...
    沈念sama閱讀 39,076評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼奏纪,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼鉴嗤!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起序调,我...
    開(kāi)封第一講書(shū)人閱讀 37,803評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤醉锅,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后发绢,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體硬耍,經(jīng)...
    沈念sama閱讀 44,265評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡垄琐,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了经柴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片狸窘。...
    茶點(diǎn)故事閱讀 38,716評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖坯认,靈堂內(nèi)的尸體忽然破棺而出翻擒,到底是詐尸還是另有隱情,我是刑警寧澤牛哺,帶...
    沈念sama閱讀 34,395評(píng)論 4 333
  • 正文 年R本政府宣布陋气,位于F島的核電站,受9級(jí)特大地震影響荆隘,放射性物質(zhì)發(fā)生泄漏恩伺。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評(píng)論 3 316
  • 文/蒙蒙 一椰拒、第九天 我趴在偏房一處隱蔽的房頂上張望晶渠。 院中可真熱鬧,春花似錦燃观、人聲如沸褒脯。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,798評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)番川。三九已至,卻和暖如春脊框,著一層夾襖步出監(jiān)牢的瞬間颁督,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,027評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工浇雹, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留沉御,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,488評(píng)論 2 361
  • 正文 我出身青樓昭灵,卻偏偏與公主長(zhǎng)得像吠裆,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子烂完,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容