歡迎您訪問(wèn)新華電腦學(xué)校官方網(wǎng)站!官網(wǎng)

          您的位置:首頁(yè)>新聞資訊>就業(yè)新聞

          面試不知道如何回答這六大知識(shí)點(diǎn),你還敢說(shuō)熟悉MySQL?

          發(fā)布時(shí)間:2020-08-27  作者:石家莊新華電腦學(xué)校 瀏覽量:157

          一、事務(wù)

           

          1.什么是事務(wù)

           

          MySQL事務(wù)是一組sql語(yǔ)句或一個(gè)獨(dú)立運(yùn)行的工作單元。這個(gè)工作單元要么全部執(zhí)行,要么全部不執(zhí)行。

           

          2. 事務(wù)的四大特性

           

          原子性:一個(gè)事務(wù)不可再分割,事務(wù)中的所有操作,要么全部完成,要么全部不完成。

           

          一致性:一個(gè)事務(wù)執(zhí)行會(huì)使數(shù)據(jù)從一個(gè)一致?tīng)顟B(tài)切換到另外一個(gè)一致?tīng)顟B(tài)。也就是說(shuō),在事務(wù)開(kāi)始之前和事務(wù)結(jié)束以后,數(shù)據(jù)庫(kù)的完整性沒(méi)有被破壞。

           

          隔離性:一個(gè)事務(wù)所做的修改在最終提交之前,對(duì)其它事務(wù)是不可見(jiàn)的。也就是說(shuō)一個(gè)事務(wù)的執(zhí)行不會(huì)受到其它事務(wù)的干擾。

           

          持久性:一個(gè)事務(wù)一旦提交以后,對(duì)數(shù)據(jù)的修改就會(huì)永久的保存到數(shù)據(jù)庫(kù)中,即便系統(tǒng)故障也不會(huì)丟失。

           

          2.事務(wù)的并發(fā)問(wèn)題

           

          ① 事務(wù)并發(fā)問(wèn)題什么時(shí)候發(fā)生?

           

          當(dāng)多個(gè)事務(wù)同時(shí)操作同一個(gè)數(shù)據(jù)庫(kù)的相同數(shù)據(jù)時(shí),就會(huì)發(fā)生并發(fā)問(wèn)題。

           

          ② 事務(wù)的并發(fā)問(wèn)題有哪些?

           

          臟讀:對(duì)于兩個(gè)事務(wù)T1、T2, T1 讀取了已經(jīng)被T2 更新但還沒(méi)有被提交的數(shù)據(jù)。如果事務(wù)T2進(jìn)行了回滾, T1讀取到的數(shù)據(jù)就是臨時(shí)且無(wú)效的。

           

          不可重復(fù)讀:對(duì)于兩個(gè)事務(wù)T1、T2, T1 讀取了一個(gè)數(shù)據(jù), 然后 T2 更新了該數(shù)據(jù)。如果T1再次讀取同一個(gè)數(shù)據(jù), 值就不相同了。

           

          幻讀:對(duì)于兩個(gè)事務(wù)T1、T2, T1 從一個(gè)表中讀取了一個(gè)數(shù)據(jù), 然后T2 在該表中插入了一些新的行。如果T1 再次讀取同一個(gè)表, 就會(huì)多出幾行。

           

          二、索引

           

          1. 什么是索引

           

          索引是對(duì)數(shù)據(jù)庫(kù)表中一列或多列的值進(jìn)行排序的一種結(jié)構(gòu),使用索引可以提高數(shù)據(jù)庫(kù)中特定數(shù)據(jù)的查詢(xún)速度

           

          2. 索引的優(yōu)缺點(diǎn)

           

          優(yōu)點(diǎn)

           

          ① 使用索引可以大大加快數(shù)據(jù)的查詢(xún)速度;② 通過(guò)創(chuàng)建唯一索引,可以保證數(shù)據(jù)庫(kù)表中每一行數(shù)據(jù)的唯一性;③ 在使用分組和排序子句進(jìn)行數(shù)據(jù)查詢(xún)時(shí),使用索引可以減少在查詢(xún)中分組和排序的時(shí)間。

           

          缺點(diǎn)

           

          ① 創(chuàng)建索引和維護(hù)索引需要時(shí)間,隨著數(shù)據(jù)量的增加所需要時(shí)間也會(huì)增加;② 當(dāng)對(duì)表中的數(shù)據(jù)進(jìn)行增加、刪除和修改的時(shí)候,索引也要?jiǎng)討B(tài)地維護(hù),這樣就降低了數(shù)據(jù)的維護(hù)速度;③ 索引需要占磁盤(pán)空間,除了數(shù)據(jù)表占數(shù)據(jù)空間之外,每一個(gè)索引還要占定的物理空間,如果有大量的索引,索引文件可能比數(shù)據(jù)文件更快達(dá)到最大文件尺寸

           

          2. 索引的設(shè)計(jì)原則

           

          ① 索引并非越多越好,一個(gè)表中如有大量的索引,不僅占用磁盤(pán)空間,而且會(huì)影響 INSERT、 DELETE、UPDATES等語(yǔ)句的性能,因?yàn)楫?dāng)表中的數(shù)據(jù)更改的同時(shí)索引也會(huì)進(jìn)行調(diào)整和更新。

           

          ② 避免對(duì)經(jīng)常更新的表進(jìn)行過(guò)多的索引,并且索引中的列盡可能少。而對(duì)經(jīng)常用于查詢(xún)的字段應(yīng)該創(chuàng)建索引,但要避免添加不必要的字段。

           

          ③ 數(shù)據(jù)量小的表最好不要使用索引,由于數(shù)據(jù)較少,查詢(xún)花費(fèi)的時(shí)間可能比遍歷索引的時(shí)間還要短,索引可能不會(huì)產(chǎn)生優(yōu)化效果。

           

          ④ 在條件表達(dá)式中經(jīng)常用到的不同值較多的列上建立索引,在不同值很少的列上不要建立索引。比如在學(xué)生表的“性別”字段上只有“男”與“女”兩個(gè)不同值,因此就無(wú)須建立索引。如果建立索引不但不會(huì)提高查詢(xún)效率,反而會(huì)嚴(yán)重降低數(shù)據(jù)更新速度。

           

          ⑤ 當(dāng)唯一性是某種數(shù)據(jù)本身的特征時(shí),指定唯一索引。使用唯一索引副需能確保定義的列的數(shù)據(jù)完整性,以提高查詢(xún)速度。

           

          ⑥ 在頻繁進(jìn)行排序或分組(即進(jìn)行g(shù)roup by或 order by操作)的列上建立索引,如果待排序的列有多個(gè),可以在這些列上建立組合索引。

           

          三、數(shù)據(jù)庫(kù)設(shè)計(jì)三大范式

           

          1. 第一范式:確保每列保持原子性

           

          2. 第二范式:確保表中的每列都和主鍵相關(guān)

           

          3. 第三范式:確保每列都和主鍵列直接相關(guān),而不是間接相關(guān)

           

          四、MySQL的主從復(fù)制

           

          1. 概念

           

          MySQL 主從復(fù)制是指數(shù)據(jù)可以從一個(gè)MySQL數(shù)據(jù)庫(kù)服務(wù)器主節(jié)點(diǎn)復(fù)制到一個(gè)或多個(gè)從節(jié)點(diǎn)。

           

          2. 原理

           

          在這里插入圖片描述

           

          從庫(kù)生成兩個(gè)線程,一個(gè)I/O線程,一個(gè)SQL線程。

           

          I/O線程 去請(qǐng)求主庫(kù) 的binlog,并將得到的binlog日志寫(xiě)到relay log(中繼日志) 文件中;

           

          主庫(kù)會(huì)生成一個(gè) log dump 線程,用來(lái)給從庫(kù) I/O線程傳binlog。

           

          SQL線程 會(huì)讀取relay log文件中的日志,并解析成具體操作,來(lái)實(shí)現(xiàn)主從的操作一致,而最終數(shù)據(jù)一致。

           

          3. 主從復(fù)制用途

           

          ① 讀寫(xiě)分離,在開(kāi)發(fā)工作中,有時(shí)候會(huì)遇見(jiàn)某個(gè)sql

           

          ② 數(shù)據(jù)實(shí)時(shí)備份,當(dāng)系統(tǒng)中某個(gè)節(jié)點(diǎn)發(fā)生故障時(shí),可以方便的故障切換。

           

          五、MySQL中的鎖

           

          1. 為什么要加鎖

           

          數(shù)據(jù)庫(kù)的鎖是為了支持對(duì)共享資源進(jìn)行并發(fā)訪問(wèn),提供數(shù)據(jù)的完整性和一致性。在數(shù)據(jù)庫(kù)中加鎖是保證在高并發(fā)的情況下,訪問(wèn)數(shù)據(jù)庫(kù)的時(shí)候,數(shù)據(jù)不會(huì)出現(xiàn)問(wèn)題。

           

          2. 鎖的分類(lèi)

           

          按操作分:① 讀鎖(共享鎖);② 寫(xiě)鎖(排它鎖)。

           

          按粒度分:① 表鎖;② 行鎖;③ 頁(yè)鎖。

           

          六、如何做 MySQL的性能優(yōu)化

           

          ① 當(dāng)只需要一條數(shù)據(jù)的時(shí)候,使用 limit 1

           

          ② 盡量避免使用 select * ,在查詢(xún)的時(shí)候列出需要查詢(xún)的字段。

           

          ③ 使用 join 代替子查詢(xún)。

           

          ④ 減少使用 or,使用 in 或者 union(union all) 代替。

           

          ⑤ 為搜索字段創(chuàng)建索引。但是不要過(guò)度索引,索引越多,占用空間越大,反而性能變慢。

           

          ⑥ 避免進(jìn)行類(lèi)型轉(zhuǎn)換,不然會(huì)導(dǎo)致索引失效。

           

          ⑦ 對(duì)查詢(xún)語(yǔ)句使用explain 。 使用explain ,可以幫助了解MySQL是如何處理sql語(yǔ)句的, 可以查看到sql的執(zhí)行計(jì)劃,這樣就能更好的去了解的sql語(yǔ)句的不足,然后優(yōu)化語(yǔ)句。

           

          ⑧ 垂直分割,將常用和有關(guān)系的字段放在相同的表中,把一張表的數(shù)據(jù)分成幾張表 這樣可以降低表的復(fù)雜度和字段的數(shù)目,從而達(dá)到優(yōu)化的目的。

           

          來(lái)源:CSDN網(wǎng)


          常見(jiàn)問(wèn)題

          熱招專(zhuān)業(yè)

          在線報(bào)名


          電話:400-900-8780

          地址:河北省石家莊市橋西區(qū)南二環(huán)西路199號(hào),南二環(huán)與紅旗大街交叉口西行300米路北

          冀ICP備11012044號(hào) | 版權(quán)所有:石家莊新華電腦學(xué)校

          工信部備案管理系統(tǒng)網(wǎng)址:https://beian.miit.gov.cn/

          • 官方快手賬號(hào)

          • 官方視頻號(hào)

          • 官方公眾號(hào)

          網(wǎng)站聲明:任何企業(yè)或者個(gè)人以任何形式復(fù)制或傳遞本網(wǎng)站所載述的域名商標(biāo)、文字、視像及聲音內(nèi)容、圖形及圖像應(yīng)當(dāng)注明來(lái)源于本網(wǎng)站

          亚洲日韩另类欧美一区二区,中文字幕一级无码在线观看,国产亚洲综合第一区,国产床戏无遮挡免费观看网站 人妻少妇连续喷潮视频 日本熟妇牲交视频在线观看,国产在线播放99,国产一级无码视频,国产在线观看添荫蒂视频|www.tjnx.com.cn/ 日本熟妇牲交视频在线观看,国产在线播放99,国产一级无码视频,国产在线观看添荫蒂视频|www.zzshanglu.com http://www.tjnx.com.cn/ http://www.zzshanglu.com