分析SQL給出索引優(yōu)化建議的工具
美團(tuán) : https://github.com/Meituan-Dianping/SQLAdvisor
小米人工智能與云平臺(tái)的數(shù)據(jù)庫(kù)團(tuán)隊(duì)開(kāi)發(fā): https://github.com/XiaoMi/soar
數(shù)據(jù)庫(kù)范式:
第一范式就是屬性不可分割,每個(gè)字段都應(yīng)該是不可再拆分的
第二范式主鍵約束( 消除非主屬性對(duì)主碼的部分函數(shù)依賴)
第三范式外鍵約束(消除傳遞依賴)
事務(wù)ACID:
(1)原子性: 原子性是指事務(wù)是一個(gè)不可再分割的工作單位,事務(wù)中的操作要么都發(fā)生沃琅,要么都不發(fā)生荸频。
(2)一致性:一致性是指在事務(wù)開(kāi)始之前和事務(wù)結(jié)束以后膜廊,數(shù)據(jù)庫(kù)的完整性約束沒(méi)有被破壞。這是說(shuō)數(shù)據(jù)庫(kù)事務(wù)不能破壞關(guān)系數(shù)據(jù)的完整性以及業(yè)務(wù)邏輯上的一致性。(兩個(gè)事務(wù)insert 不能引起主鍵沖突,或者業(yè)務(wù)上要保=保證唯一約束等)
(3)隔離性:隔離性是指并發(fā)的事務(wù)是相互隔離的奕谭。即一個(gè)事務(wù)內(nèi)部的操作及正在操作的數(shù)據(jù)必須封鎖起來(lái),不被企圖進(jìn)行修改的事務(wù)看到 痴荐。
(4)持久性:持久性是指在事務(wù)完成以后血柳,該事務(wù)所對(duì)數(shù)據(jù)庫(kù)所作的更改便持久的保存在數(shù)據(jù)庫(kù)之中,并不會(huì)被回滾生兆。 即使出現(xiàn)了任何事故比如斷電等难捌,事務(wù)一旦提交,則持久化保存在數(shù)據(jù)庫(kù)中
事務(wù)的隔離級(jí)別:
1皂贩、臟讀:事務(wù)A讀取了事務(wù)B更新的數(shù)據(jù)栖榨,然后B回滾操作,那么A讀取到的數(shù)據(jù)是臟數(shù)據(jù)
2明刷、不可重復(fù)讀:事務(wù) A 多次讀取同一數(shù)據(jù),事務(wù) B 在事務(wù)A多次讀取的過(guò)程中满粗,對(duì)數(shù)據(jù)作了更新并提交辈末,導(dǎo)致事務(wù)A多次讀取同一數(shù)據(jù)時(shí),結(jié)果 不一致。
3挤聘、幻讀:系統(tǒng)管理員A將數(shù)據(jù)庫(kù)中所有學(xué)生的成績(jī)從具體分?jǐn)?shù)改為ABCDE等級(jí)轰枝,但是系統(tǒng)管理員B就在這個(gè)時(shí)候插入了一條具體分?jǐn)?shù)的記錄,當(dāng)系統(tǒng)管理員A改結(jié)束后發(fā)現(xiàn)還有一條記錄沒(méi)有改過(guò)來(lái)组去,就好像發(fā)生了幻覺(jué)一樣鞍陨,這就叫幻讀。
小結(jié):不可重復(fù)讀的和幻讀很容易混淆从隆,不可重復(fù)讀側(cè)重于修改诚撵,幻讀側(cè)重于新增或刪除。解決不可重復(fù)讀的問(wèn)題只需鎖住滿足條件的行键闺,解決幻讀需要鎖表
不可重復(fù)讀側(cè)重于修改寿烟,幻讀側(cè)重于新增或刪除