mysql面試知識(shí)點(diǎn)

一牧挣、數(shù)據(jù)庫設(shè)計(jì)的三大范式

? ? ? ? 1.表中字段不可再分割急前;

? ? ? ? 2.必須有主鍵,非主鍵列完全依賴于主鍵瀑构;

? ? ? ? 3.在2的基礎(chǔ)上裆针,非主鍵之間不能存在依賴。

二寺晌、存儲(chǔ)引擎

? ? ? ? (一)常見的存儲(chǔ)引擎

? ? ? ? InnoDB,MyIsAM,Archive,Memory等世吨。只有InnoDB支持事物。

? ? ? ? (二)InnoDB和MyIsAM的比較

? ? ? ? ?(三)事物

? ? ? ? 1.原子性:指事物執(zhí)行要么成功要么失敗呻征。

? ? ? ? 2.一致性:指事物提交前后數(shù)據(jù)保持一致耘婚。例如轉(zhuǎn)賬,甲乙二人金額總數(shù)是一致的陆赋。

? ? ? ? 3.隔離性:事物提交過程中不受其他事物的干擾和影響沐祷。

? ? ? ? 4.持久性:事物提交后會(huì)落盤到磁盤中持久化。

? ? ? ? (四)常見的現(xiàn)象

? ? ? ? 1.臟讀:指事物執(zhí)行過程中讀取到其他事物還未提交的數(shù)據(jù)攒岛;

? ? ? ? 2.不可重復(fù)度:事物中的兩次查詢結(jié)果中的數(shù)值不一致戈轿,強(qiáng)調(diào)同一行數(shù)據(jù)的差異;

? ? ? ? 3.幻讀:事物中的兩次查詢結(jié)果中的數(shù)據(jù)不一致阵子,強(qiáng)調(diào)結(jié)果中的行數(shù)發(fā)生變化思杯。

? ? ? ? (五)事物的隔離級(jí)別

? ? ? ? 1.讀未提交:會(huì)發(fā)生臟讀、幻讀和不可重讀讀的問題挠进;

? ? ? ? 2.讀已提交:會(huì)發(fā)生幻讀和不可重復(fù)讀的問題色乾;

? ? ? ? 3.可重復(fù)讀:會(huì)發(fā)生幻讀問題;

? ? ? ? 4.可串行:不會(huì)發(fā)生上述問題领突。

? ? ? ? ? ? ? ? 隔離級(jí)別越高暖璧,并發(fā)效率越低。大部分?jǐn)?shù)據(jù)庫的默認(rèn)隔離級(jí)別為讀已提交君旦,而mysql默認(rèn)隔離級(jí)別為可重復(fù)讀澎办。在5.0之前的mysql的默認(rèn)隔離級(jí)別也是讀未提交,這和mysql的主從一致性有關(guān)金砍。5.0版本之前局蚀,mysql的bin log文件的存儲(chǔ)格式為statment,只記錄對(duì)數(shù)據(jù)庫的修改操作恕稠,不記錄其他操作琅绅,導(dǎo)致主從一致性方面做的很差,數(shù)據(jù)經(jīng)常不一致鹅巍,因此隔離級(jí)別發(fā)生變化千扶。

三料祠、索引

? ? ? ?(一)B+樹與B樹的區(qū)別

? ? ? ? ? ?1.b+樹非葉子結(jié)點(diǎn)僅包含關(guān)鍵字信息,b-樹所有節(jié)點(diǎn)都有一個(gè)指針;

? ? ? ? ? ?2.b+樹葉子結(jié)點(diǎn)存儲(chǔ)有索引和數(shù)據(jù)信息,b-樹所有節(jié)點(diǎn)都有索引和數(shù)據(jù)信息澎羞;

? ? ? ? ? ?3.b+樹的葉子結(jié)點(diǎn)之間使用雙向鏈表連接髓绽,是有序的,方便范圍查找妆绞。

? ? ? ?(二)索引類型?

????????????聚族索引和非聚族索引顺呕。(聚族索引又稱為主鍵索引,主鍵索引要求不能為null摆碉,不能重復(fù))

? ? ? ? ? ? 單列索引、組合索引脓豪、唯一索引(唯一索引要求值唯一巷帝,但允許有null值,例如手機(jī)號(hào))

? ? ? ?(三)使用索引的建議

區(qū)扫夜、左楞泼、*、聯(lián)笤闯,算堕阔、串、模颗味、排

? ? ? ? ? ? 1.索引必須要有區(qū)分度超陆;

? ? ? ? ? ? 2.索引設(shè)計(jì)需要符合最左匹配原則;

? ? ? ? ? ? 3.盡量能不select *就不使用select *,能明確的字段盡量寫清楚浦马;

? ? ? ? ? ? 4.盡量多使用聯(lián)合索引加快查詢效率时呀;

? ? ? ? ? ? 5.索引字段中不能有運(yùn)算,包括加減乘除等晶默;

? ? ? ? ? ? 6.索引中不能包含字符串和數(shù)字的模糊匹配谨娜;

? ? ? ? ? ? 7.盡量少使用模糊查詢;比如like磺陡,%張這種查詢趴梢;

? ? ? ? ? ? 8.排序盡量使用索引字段。

? ? ? ?(四)explain--sql性能分析神器

? ? ? ? ? ?1.通過explain分析可獲知那些信息币他?

? ? ? ? ? ? ? ? ? ? 訪問類型type坞靶、可能存在的索引、實(shí)際命中的索引蝴悉、查詢了多少行滩愁、執(zhí)行時(shí)間。

? ? ? ? ? ? 2.type:

? ? ? ? ? ? ? ? system > const > eq_ref > ref > range > index > all

? ? ? ? ? ? ? ? system:表中只有一條數(shù)據(jù)辫封;

? ? ? ? ? ? ? ? const:通過索引一次就查到了數(shù)據(jù)硝枉;

? ? ? ? ? ? ? ? eq_ref:索引只有一條數(shù)據(jù)匹配廉丽;

? ? ? ? ? ? ? ? ref:索引有多條數(shù)據(jù)匹配;

? ? ? ? ? ? ? ? range:查詢到給定范圍的數(shù)據(jù)妻味;

? ? ? ? ? ? ? ? index:索引失效正压;

? ? ? ? ? ? ? ? all:全表查詢。

? ? ? ? ? ? ? ? ? ? sql語句最低要求要達(dá)到range級(jí)別责球,盡可能達(dá)到ref級(jí)別焦履。

? ? ? ?(五)大表如何優(yōu)化

? ? ? ? ? ? 策略:1.限定查詢范圍(只能查半年內(nèi)的聊天記錄等);

? ? ? ? ? ? ? ? ? ? ? ?2.讀寫分離雏逾;

? ? ? ? ? ? ? ? ? ? ? ?3.分庫分表嘉裤,垂直水平拆分;等

四栖博、mysql的日志

? ? ? ? ? ? ? ?主要包括查詢?nèi)罩拘汲琛⑹挛锶罩尽in log 等仇让,比較重要的是bin log和redo/undo log典奉。

? ? ? ? 1.bin log:二進(jìn)制日志文件。是數(shù)據(jù)庫級(jí)別的日志文件丧叽,主要記錄對(duì)表的修改操作(劃重點(diǎn):表卫玖、修改)。主要用于恢復(fù)數(shù)據(jù)和同步數(shù)據(jù)踊淳。bin log文件中數(shù)據(jù)的存儲(chǔ)格式有三種局服,分別是statment灾茁、row和mix杈曲。

? ? ? ? 2.redo log:InnoDB存儲(chǔ)引擎級(jí)別的日志文件宾尚,用于記錄事物的操作,可保證數(shù)據(jù)的完整性雹舀。

? ? ? ? 3.undo log:相當(dāng)于一個(gè)版本控制工具芦劣,記錄了redo log數(shù)據(jù)以及表中數(shù)據(jù)的不同版本∷涤埽可利用它實(shí)現(xiàn)事物的回滾操作虚吟。


五、mysql架構(gòu)

? ? ? ? ? ? 一條數(shù)據(jù)庫語句從客戶端傳到DB服務(wù)端的大致流程:



六签财、mysql并發(fā)策略

? ? ? ? 1.樂觀鎖

? ? ? ? 2.悲觀鎖

? ? ? ? 3.行鎖

? ? ? ? 4.表鎖

? ? ? ? 5.頁鎖

? ? ? ? 6.時(shí)間戳

? ? ? ? 7.redis分布式鎖

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末串慰,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子唱蒸,更是在濱河造成了極大的恐慌邦鲫,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異庆捺,居然都是意外死亡古今,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門滔以,熙熙樓的掌柜王于貴愁眉苦臉地迎上來捉腥,“玉大人,你說我怎么就攤上這事你画〉值” “怎么了?”我有些...
    開封第一講書人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵坏匪,是天一觀的道長拟逮。 經(jīng)常有香客問我,道長适滓,這世上最難降的妖魔是什么敦迄? 我笑而不...
    開封第一講書人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮粒竖,結(jié)果婚禮上颅崩,老公的妹妹穿的比我還像新娘几于。我一直安慰自己蕊苗,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開白布沿彭。 她就那樣靜靜地躺著朽砰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪喉刘。 梳的紋絲不亂的頭發(fā)上瞧柔,一...
    開封第一講書人閱讀 51,737評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音睦裳,去河邊找鬼造锅。 笑死,一個(gè)胖子當(dāng)著我的面吹牛廉邑,可吹牛的內(nèi)容都是我干的哥蔚。 我是一名探鬼主播,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼蛛蒙,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼糙箍!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起牵祟,我...
    開封第一講書人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤深夯,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后诺苹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體咕晋,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡雹拄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了捡需。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片办桨。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖站辉,靈堂內(nèi)的尸體忽然破棺而出呢撞,到底是詐尸還是另有隱情,我是刑警寧澤饰剥,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布殊霞,位于F島的核電站,受9級(jí)特大地震影響汰蓉,放射性物質(zhì)發(fā)生泄漏绷蹲。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一顾孽、第九天 我趴在偏房一處隱蔽的房頂上張望祝钢。 院中可真熱鬧,春花似錦若厚、人聲如沸拦英。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽疤估。三九已至,卻和暖如春霎冯,著一層夾襖步出監(jiān)牢的瞬間铃拇,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來泰國打工沈撞, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留慷荔,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓缠俺,卻偏偏與公主長得像显晶,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子晋修,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355

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