MySQL基礎(chǔ)面試題-2.3版

簡書 markdown小技巧

<br> 換行 , \ 轉(zhuǎn)義

1、數(shù)據(jù)庫的三范式是什么?

第一范式:強(qiáng)調(diào)列的原子性,數(shù)據(jù)庫表的每一列都是不可分割的原子數(shù)據(jù)項(xiàng)骗污。
第二范式:要求數(shù)據(jù)庫表中的每個(gè)實(shí)例或行必須可以被惟一的區(qū)分(有主鍵)。
第三范式:除主鍵外沈条,其他字段必須依賴主鍵需忿。

2、一張自增表里面總共有 7 條數(shù)據(jù)蜡歹,刪除了最后 2 條數(shù)據(jù)屋厘,重啟 mysql 數(shù)據(jù)庫,又插入了一條數(shù)據(jù)月而,此時(shí) id 是幾汗洒?

數(shù)據(jù)庫引擎如果是 MyISAM ,那 id 就是 8父款。
數(shù)據(jù)庫引擎如果是 InnoDB溢谤,那 id 就是 6。


InnoDB 表只會(huì)把自增主鍵的最大 id 記錄在內(nèi)存中憨攒,所以重啟之后會(huì)導(dǎo)致最大 id 丟失世杀。

3、如何獲取當(dāng)前數(shù)據(jù)庫版本肝集?

使用 select version() 獲取當(dāng)前 MySQL 數(shù)據(jù)庫版本瞻坝。

4、說一下 ACID 是什么杏瞻?

Atomicity(原子性):一個(gè)事務(wù)(transaction)中的所有操作所刀,或者全部完成衙荐,或者全部不完成,浮创。事務(wù)在執(zhí)行過程中發(fā)生錯(cuò)誤忧吟,會(huì)被回滾(Rollback)到事務(wù)開始前的狀態(tài),就像這個(gè)事務(wù)從來沒有執(zhí)行過一樣斩披。


Consistency(一致性):在事務(wù)開始之前和事務(wù)結(jié)束以后瀑罗,數(shù)據(jù)庫的完整性沒有被破壞。


Isolation(隔離性):數(shù)據(jù)庫允許多個(gè)并發(fā)事務(wù)同時(shí)對其數(shù)據(jù)進(jìn)行讀寫和修改的能力雏掠,隔離性可以防止多個(gè)事務(wù)并發(fā)執(zhí)行時(shí)由于交叉執(zhí)行而導(dǎo)致數(shù)據(jù)的不一致。
事務(wù)隔離分為不同級別:包括讀未提交(Read uncommitted)劣像、讀提交(read committed)乡话、可重復(fù)讀(repeatable read)和串行化(Serializable)。


Durability(持久性):事務(wù)處理結(jié)束后耳奕,對數(shù)據(jù)的修改就是永久的保存在磁盤中绑青。

5、char 和 varchar 的區(qū)別是什么屋群?

char(n) :固定長度類型闸婴,效率高;占用空間芍躏;


varchar(n) :可變長度邪乍,效率比char差,空間利用率高

6对竣、float 和 double 的區(qū)別是什么庇楞?

float 最多可以存儲 8 位的十進(jìn)制數(shù),并在內(nèi)存中占 4 字節(jié)否纬。


double 最可可以存儲 16 位的十進(jìn)制數(shù)吕晌,并在內(nèi)存中占 8 字節(jié)。

7临燃、 MySQL 的內(nèi)連接睛驳、左連接、右連接有什么區(qū)別膜廊?

內(nèi)連接關(guān)鍵字:inner join乏沸;左連接:left join;右連接:right join爪瓜。


內(nèi)連接是把匹配的關(guān)聯(lián)數(shù)據(jù)顯示出來屎蜓;左連接是左邊的表全部顯示出來,右邊的表顯示出符合條件的數(shù)據(jù)钥勋;右連接正好相反炬转。

8辆苔、MySQL 索引是怎么實(shí)現(xiàn)的?

數(shù)據(jù)庫引擎的索引都是 B+ 樹實(shí)現(xiàn)的扼劈,B+ 樹的搜索效率驻啤,
可以到達(dá)二分法的性能,找到數(shù)據(jù)區(qū)域之后就找到了完整的數(shù)據(jù)結(jié)構(gòu)了荐吵。

9骑冗、怎么驗(yàn)證 MySQL 的索引是否滿足需求?

使用 explain 查看 SQL 是如何執(zhí)行查詢語句的先煎,從而分析你的索引是否滿足需求贼涩。


explain 語法:explain select * from table where type=1。

10薯蝎、 說一下數(shù)據(jù)庫的事務(wù)隔離遥倦?

MySQL 的事務(wù)隔離是在 MySQL. ini 配置文件里添加的,在文件的最后添加:transaction-isolation = REPEATABLE-READ


可用的配置值:READ-UNCOMMITTED占锯、READ-COMMITTED袒哥、REPEATABLE-READ、SERIALIZABLE消略。


READ-UNCOMMITTED:未提交讀堡称,最低隔離級別、事務(wù)未提交前艺演,就可被其他事務(wù)讀热唇簟(會(huì)出現(xiàn)幻讀、臟讀胎撤、不可重復(fù)讀)啄寡。


READ-COMMITTED:提交讀,一個(gè)事務(wù)提交后才能被其他事務(wù)讀取到(會(huì)造成幻讀哩照、不可重復(fù)讀)挺物。


REPEATABLE-READ:可重復(fù)讀,默認(rèn)級別飘弧,保證多次讀取同一個(gè)數(shù)據(jù)時(shí)识藤,其值都和事務(wù)開始時(shí)候的內(nèi)容是一致,禁止讀取到別的事務(wù)未提交的數(shù)據(jù)(會(huì)造成幻讀)次伶。


SERIALIZABLE:序列化痴昧,代價(jià)最高最可靠的隔離級別,該隔離級別能防止臟讀冠王、不可重復(fù)讀赶撰、幻讀。


臟讀 :表示一個(gè)事務(wù)能夠讀取另一個(gè)事務(wù)中還未提交的數(shù)據(jù)。比如豪娜,某個(gè)事務(wù)嘗試插入記錄 A餐胀,此時(shí)該事務(wù)還未提交,然后另一個(gè)事務(wù)嘗試讀取到了記錄 A瘤载。


不可重復(fù)讀 :是指在一個(gè)事務(wù)內(nèi)否灾,多次讀同一數(shù)據(jù)。


幻讀 :指同一個(gè)事務(wù)內(nèi)多次查詢返回的結(jié)果集不一樣鸣奔。比如同一個(gè)事務(wù) A 第一次查詢時(shí)候有 n 條記錄墨技,但是第二次同等條件下查詢卻有 n+1 條記錄,這就好像產(chǎn)生了幻覺挎狸。發(fā)生幻讀的原因也是另外一個(gè)事務(wù)新增或者刪除或者修改了第一個(gè)事務(wù)結(jié)果集里面的數(shù)據(jù)扣汪,同一個(gè)記錄的數(shù)據(jù)內(nèi)容被修改了,所有數(shù)據(jù)行的記錄就變多或者變少了锨匆。

11崭别、說一下 MySQL 常用的引擎?

InnoDB 引擎:mysql 5.1 后默認(rèn)的數(shù)據(jù)庫引擎统刮,提供了對數(shù)據(jù)庫 acid 事務(wù)的支持,并且還提供了行級鎖和外鍵的約束账千,它的設(shè)計(jì)的目標(biāo)就是處理大數(shù)據(jù)容量的數(shù)據(jù)庫系統(tǒng)侥蒙。MySQL 運(yùn)行的時(shí)候,InnoDB 會(huì)在內(nèi)存中建立緩沖池匀奏,用于緩沖數(shù)據(jù)和索引鞭衩。但是該引擎是不支持全文搜索,同時(shí)啟動(dòng)也比較的慢娃善,它是不會(huì)保存表的行數(shù)的论衍,所以當(dāng)進(jìn)行 select count() from table 指令的時(shí)候,需要進(jìn)行掃描全表聚磺。由于鎖的粒度小坯台,寫操作是不會(huì)鎖定全表的,所以在并發(fā)度較高的場景下使用會(huì)提升效率的。


MyIASM 引擎:不提供事務(wù)的支持瘫寝,也不支持行級鎖和外鍵蜒蕾。因此當(dāng)執(zhí)行插入和更新語句時(shí),即執(zhí)行寫操作的時(shí)候需要鎖定這個(gè)表焕阿,所以會(huì)導(dǎo)致效率會(huì)降低咪啡。不過和 InnoDB 不同的是,MyIASM 引擎是保存了表的行數(shù)暮屡,于是當(dāng)進(jìn)行 select count(
) from table 語句時(shí)撤摸,可以直接的讀取已經(jīng)保存的值而不需要進(jìn)行掃描全表。所以,如果表的讀操作遠(yuǎn)遠(yuǎn)多于寫操作時(shí)准夷,并且不需要事務(wù)的支持的钥飞,可以將 MyIASM 作為數(shù)據(jù)庫引擎的首選。

12冕象、說一下 MySQL 的行鎖和表鎖代承?

MyISAM 只支持表鎖,InnoDB 支持表鎖和行鎖渐扮,默認(rèn)為行鎖


表級鎖:開銷小论悴,加鎖快,不會(huì)出現(xiàn)死鎖墓律。鎖定粒度大膀估,發(fā)生鎖沖突的概率最高,并發(fā)量最低耻讽。


行級鎖:開銷大察纯,加鎖慢,會(huì)出現(xiàn)死鎖针肥。鎖力度小饼记,發(fā)生鎖沖突的概率小,并發(fā)度最高慰枕。

13具则、說一下樂觀鎖和悲觀鎖?

樂觀鎖:每次去拿數(shù)據(jù)的時(shí)候都認(rèn)為別人不會(huì)修改具帮,所以不會(huì)上鎖博肋,但是在提交更新的時(shí)候會(huì)判斷一下在此期間別人有沒有去更新這個(gè)數(shù)據(jù)。


悲觀鎖:每次去拿數(shù)據(jù)的時(shí)候都認(rèn)為別人會(huì)修改蜂厅,所以每次在拿數(shù)據(jù)的時(shí)候都會(huì)上鎖匪凡,這樣別人想拿這個(gè)數(shù)據(jù)就會(huì)阻止,直到這個(gè)鎖被釋放掘猿。


  數(shù)據(jù)庫的樂觀鎖需要自己實(shí)現(xiàn)病游,在表里面添加一個(gè) version 字段,每次修改成功值加 1稠通,這樣每次修改的時(shí)候先對比一下礁遵,自己擁有的 version 和數(shù)據(jù)庫現(xiàn)在的 version 是否一致,如果不一致就不修改采记,這樣就實(shí)現(xiàn)了樂觀鎖佣耐。

14、MySQL 問題排查都有哪些手段唧龄?

使用 show processlist 命令查看當(dāng)前所有連接信息兼砖。


使用 explain 命令查詢 SQL 語句執(zhí)行計(jì)劃奸远。


開啟慢查詢?nèi)罩荆榭绰樵兊?SQL讽挟。

15懒叛、如何做 MySQL 的性能優(yōu)化?

為搜索字段創(chuàng)建索引耽梅。


避免使用 select *薛窥,列出需要查詢的字段。


垂直分割分表眼姐。


選擇正確的存儲引擎诅迷。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市众旗,隨后出現(xiàn)的幾起案子罢杉,更是在濱河造成了極大的恐慌,老刑警劉巖贡歧,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件滩租,死亡現(xiàn)場離奇詭異,居然都是意外死亡利朵,警方通過查閱死者的電腦和手機(jī)律想,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來绍弟,“玉大人技即,你說我怎么就攤上這事∩渭恚” “怎么了姥份?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵郭脂,是天一觀的道長年碘。 經(jīng)常有香客問我,道長展鸡,這世上最難降的妖魔是什么屿衅? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮莹弊,結(jié)果婚禮上涤久,老公的妹妹穿的比我還像新娘。我一直安慰自己忍弛,他們只是感情好响迂,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著细疚,像睡著了一般蔗彤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天然遏,我揣著相機(jī)與錄音贫途,去河邊找鬼。 笑死待侵,一個(gè)胖子當(dāng)著我的面吹牛丢早,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播秧倾,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼怨酝,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了中狂?” 一聲冷哼從身側(cè)響起凫碌,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎胃榕,沒想到半個(gè)月后盛险,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡勋又,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年苦掘,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片楔壤。...
    茶點(diǎn)故事閱讀 40,117評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鹤啡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蹲嚣,到底是詐尸還是另有隱情递瑰,我是刑警寧澤,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布隙畜,位于F島的核電站抖部,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏议惰。R本人自食惡果不足惜慎颗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望言询。 院中可真熱鬧俯萎,春花似錦、人聲如沸运杭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽辆憔。三九已至撇眯,卻和暖如春谆趾,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背叛本。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工沪蓬, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人来候。 一個(gè)月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓跷叉,卻偏偏與公主長得像,于是被迫代替她去往敵國和親营搅。 傳聞我的和親對象是個(gè)殘疾皇子云挟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評論 2 355