摘要:不過(guò)這里的時(shí)間指的是系統(tǒng)版本號(hào)死鎖數(shù)據(jù)庫(kù)的解釋現(xiàn)象兩個(gè)或兩個(gè)以上事務(wù)在同一資源相互占用,并請(qǐng)求鎖定對(duì)方占用的資源,從而導(dǎo)致惡性循環(huán)的現(xiàn)象。并發(fā)控制解決問(wèn)題我在讀數(shù)據(jù),你在刪數(shù)據(jù)的情況鎖分類讀鎖共享鎖,不阻塞寫(xiě)鎖排他鎖,排除其他寫(xiě)鎖和讀鎖。
數(shù)據(jù)庫(kù)面試題 DBS DBMS DB區(qū)別
DBS 數(shù)據(jù)庫(kù)系統(tǒng)
DBMS 數(shù)據(jù)庫(kù)管理系統(tǒng)
DB 數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)系統(tǒng)dbs包括但不限于數(shù)據(jù)庫(kù)管理系統(tǒng)dbms和數(shù)據(jù)庫(kù)db
MySQL存儲(chǔ)引擎InnoDB(默認(rèn)):支持事物,表鎖,行鎖設(shè)計(jì),支持外鍵
MyISAM:不支持事物和表鎖設(shè)計(jì),不支持外鍵
事物使用場(chǎng)景
轉(zhuǎn)賬:
a轉(zhuǎn)賬給b,a賬戶減少
b賬戶增加
過(guò)程就要用到事物,轉(zhuǎn)賬事物就回滾
解釋:一組原子性的SQL查詢(結(jié)合ACID)
ACID特性
A:原子性
C:一致性
I:隔離性
D:持久性
隔離級(jí)別(低到高)
read uncommitted(未提交讀)
read committed(提交讀):大多數(shù)數(shù)據(jù)庫(kù)默認(rèn)的級(jí)別
repeatable read (可重復(fù)讀):mysql默認(rèn)級(jí)別,解決了臟讀問(wèn)題,InnoDB通過(guò)mvcc可解決幻讀問(wèn)題
serializable(可串行化):最高的隔離級(jí)別,不能并發(fā),解決了幻讀問(wèn)題,會(huì)產(chǎn)生超時(shí) 鎖爭(zhēng)用問(wèn)題
樂(lè)觀鎖與悲觀鎖
悲觀鎖
特征(what):每次操作數(shù)據(jù)都會(huì)加鎖
常見(jiàn)例子:mysql中行鎖 表鎖 讀鎖 寫(xiě)鎖 ;java的中重量級(jí)鎖synchronized
樂(lè)觀鎖
特征(what):操作數(shù)據(jù)時(shí)不加鎖
實(shí)現(xiàn)方法(how):通過(guò)版本控制和cas算法實(shí)現(xiàn)
優(yōu)點(diǎn):適用于多讀的應(yīng)用類型,可以提高吞吐量
常見(jiàn)例子:java中的原子變量類(cas算法)
MVCC多版本并發(fā)控制
是啥(what):
可以認(rèn)為是行級(jí)鎖的變種,他在很多情況下避免加鎖,花銷更低
分類:
樂(lè)觀并發(fā)控制和悲觀并發(fā)控制
實(shí)現(xiàn)(mysal的innodb引擎):
通過(guò)在每行記錄后面保存兩個(gè)隱藏的列來(lái)實(shí)現(xiàn),一個(gè)是保存行的創(chuàng)建時(shí)間,一個(gè)是保存行的過(guò)期時(shí)間。不過(guò)這里的時(shí)間指的是系統(tǒng)版本號(hào)
死鎖(數(shù)據(jù)庫(kù)的)解釋現(xiàn)象:兩個(gè)或兩個(gè)以上事務(wù)在同一資源相互占用,并請(qǐng)求鎖定對(duì)方占用的資源,從而導(dǎo)致惡性循環(huán)的現(xiàn)象。
并發(fā)控制解決問(wèn)題:我在讀數(shù)據(jù),你在刪數(shù)據(jù)的情況
鎖分類:
讀鎖:共享鎖,不阻塞
寫(xiě)鎖:排他鎖,排除其他寫(xiě)鎖和讀鎖。
鎖策略
解決問(wèn)題:提高性能
分類:
表鎖:開(kāi)銷最小范式分類
行級(jí)鎖:最大程度支持并發(fā),但開(kāi)銷最大
1nf:屬性具有原子性
2nf:在1nf基礎(chǔ)上消除非主屬性對(duì)主碼的部分依賴
3nf:在2nf基礎(chǔ)上消除傳遞依賴
范式與反范式
范式:
優(yōu)點(diǎn):
更新比反范式快
修改數(shù)據(jù)少
表比較小,存在內(nèi)存中,執(zhí)行快
缺點(diǎn):
需要關(guān)聯(lián)
反范式:
優(yōu)點(diǎn):
避免關(guān)聯(lián)
缺點(diǎn):
信息冗余Char varchar
Char是定長(zhǎng) 剩余空間會(huì)用空格填充
Varchar是可變長(zhǎng)
MySQL date、datetime和timestamp類型的區(qū)別https://zhuanlan.zhihu.com/p/...
索引(書(shū)的目錄)解決問(wèn)題(why):方便查找數(shù)據(jù)
優(yōu)點(diǎn):
大大減少服務(wù)器需要掃描的數(shù)據(jù)量
幫助服務(wù)器避免排序和臨時(shí)表
將隨機(jī)io變成順序io
缺點(diǎn):
時(shí)間:創(chuàng)建索引,維護(hù)索引需要時(shí)間
空間:創(chuàng)建索引占用物理空間
創(chuàng)建索引的原則
最左前綴匹配原則,具體在聯(lián)合索引體現(xiàn),mysql會(huì)一直向右匹配,當(dāng)遇到范圍查詢會(huì)停止,此時(shí)把范圍查詢的索引放到最后即可
經(jīng)常作為查詢的字段作為索引
更新頻繁的字段不適合做索引
定義有外鍵的字段一定要做索引
盡量擴(kuò)展索引,不要重新新建索引
索引分類
按底層數(shù)據(jù)結(jié)構(gòu)分:
b數(shù)索引(底層是b+數(shù))
哈希索引
空間數(shù)據(jù)(r-tree)索引
全文索引
按邏輯分類
主鍵索引(特殊的唯一索引,不允許null值)Group by
單列索引
多列索引
唯一索引
空間索引
后面接條件時(shí)用having;
一般與cout()函數(shù)一起使用,實(shí)現(xiàn)查詢重復(fù)數(shù)據(jù)功能
查重:
結(jié)果
分頁(yè)查詢(limit(mysql) top(sqlserver))練習(xí):
https://www.nowcoder.com/prac...
解釋:limit x, y 表示從x+1行(x從0開(kāi)始算)開(kāi)始查詢y條數(shù)據(jù)
公眾號(hào)歡迎關(guān)注公眾號(hào) 布爾bl ,分享Java相關(guān)信息技術(shù)、生活感悟。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/72950.html
摘要:作為面試官,我是如何甄別應(yīng)聘者的包裝程度語(yǔ)言和等其他語(yǔ)言的對(duì)比分析和主從復(fù)制的原理詳解和持久化的原理是什么面試中經(jīng)常被問(wèn)到的持久化與恢復(fù)實(shí)現(xiàn)故障恢復(fù)自動(dòng)化詳解哨兵技術(shù)查漏補(bǔ)缺最易錯(cuò)過(guò)的技術(shù)要點(diǎn)大掃盲意外宕機(jī)不難解決,但你真的懂?dāng)?shù)據(jù)恢復(fù)嗎每秒 作為面試官,我是如何甄別應(yīng)聘者的包裝程度Go語(yǔ)言和Java、python等其他語(yǔ)言的對(duì)比分析 Redis和MySQL Redis:主從復(fù)制的原理詳...
摘要:作為面試官,我是如何甄別應(yīng)聘者的包裝程度語(yǔ)言和等其他語(yǔ)言的對(duì)比分析和主從復(fù)制的原理詳解和持久化的原理是什么面試中經(jīng)常被問(wèn)到的持久化與恢復(fù)實(shí)現(xiàn)故障恢復(fù)自動(dòng)化詳解哨兵技術(shù)查漏補(bǔ)缺最易錯(cuò)過(guò)的技術(shù)要點(diǎn)大掃盲意外宕機(jī)不難解決,但你真的懂?dāng)?shù)據(jù)恢復(fù)嗎每秒 作為面試官,我是如何甄別應(yīng)聘者的包裝程度Go語(yǔ)言和Java、python等其他語(yǔ)言的對(duì)比分析 Redis和MySQL Redis:主從復(fù)制的原理詳...
摘要:好不容易在月號(hào)這天中午點(diǎn)左右接到了來(lái)自阿里的面試電話。這里會(huì)不斷收集和更新基礎(chǔ)相關(guān)的面試題,目前已收集題。面試重難點(diǎn)的和的打包過(guò)程多線程機(jī)制機(jī)制系統(tǒng)啟動(dòng)過(guò)程,啟動(dòng)過(guò)程等等掃清面試障礙最新面試經(jīng)驗(yàn)分享,此為第一篇,開(kāi)篇。 2016 年末,騰訊,百度,華為,搜狗和滴滴面試題匯總 2016 年未,騰訊,百度,華為,搜狗和滴滴面試題匯總 各大公司 Java 后端開(kāi)發(fā)面試題總結(jié) 各大公司 Jav...
摘要:今天整理了一下近大半年以來(lái)的一些文章,和我的預(yù)期一樣,很多文章我都忘記自己曾經(jīng)寫(xiě)過(guò)了,這個(gè)記錄的過(guò)程讓我也有了新的理解。希望大家,收藏,點(diǎn)贊,加轉(zhuǎn)發(fā)。 今天整理了一下近大半年以來(lái)的一些文章,和我的預(yù)期一樣,很多文章我都忘記自己曾經(jīng)寫(xiě)過(guò)了,這個(gè)記錄的過(guò)程讓我也有了新的理解。希望大家,收藏,點(diǎn)贊,加轉(zhuǎn)發(fā)。 面試必備 面試必備:深入Spring MVC DispatchServlet 源碼...
閱讀 1243·2021-09-26 09:46
閱讀 1592·2021-09-06 15:00
閱讀 725·2019-08-30 15:52
閱讀 1126·2019-08-29 13:10
閱讀 1287·2019-08-26 13:47
閱讀 1485·2019-08-26 13:35
閱讀 2034·2019-08-23 18:38
閱讀 732·2019-08-23 17:59