您好,歡迎來到賦能網(wǎng)!

MySql高頻相關(guān)面試題

賦能網(wǎng) 2023-06-11 169

MySql

 

1 jdbc 操作數(shù)據(jù)庫流程

第一步:Class.forName()加載數(shù)據(jù)庫連接驅(qū)動(dòng);

第二步:DriverManager.getConnection()獲取數(shù)據(jù)連接對象;

第三步:根據(jù)SQL 獲取 sql 會話對象,有 2 種方式 Statement、PreparedStatement ;

MySql高頻相關(guān)面試題

第四步:執(zhí)行SQL 處理結(jié)果集,執(zhí)行 SQL 前如果有參數(shù)值就設(shè)置參數(shù)值 setXXX();

第五步:關(guān)閉結(jié)果集、關(guān)閉會話、關(guān)閉連接。

2 關(guān)系數(shù)據(jù)庫中連接池的機(jī)制是什么?

前提:為數(shù)據(jù)庫連接建立一個(gè)緩沖池。

(1)從連接池獲取或創(chuàng)建可用連接

(2)使用完畢之后,把連接返回給連接池

(3)在系統(tǒng)關(guān)閉前,斷開所有連接并釋放連接占用的系統(tǒng)資源

(4)能夠處理無效連接,限制連接池中的連接總數(shù)不低于或者不超過某個(gè)限定值。

其中有幾個(gè)概念需要大家理解:

最小連接數(shù)是連接池一直保持的數(shù)據(jù)連接。如果應(yīng)用程序?qū)?shù)據(jù)庫連接的使用量不大,將會有大量的數(shù)據(jù)庫連接資源被浪費(fèi)掉。

最大連接數(shù)是連接池能申請的最大連接數(shù)。如果數(shù)據(jù)連接請求超過此數(shù),后面的數(shù)據(jù)連接請求將被加入到等待隊(duì)列中,這會影響之后的數(shù)據(jù)庫操作。

MySql高頻相關(guān)面試題

如果最小連接數(shù)與最大連接數(shù)相差太大,那么,最先的連接請求將會獲利,之后超過最小連接數(shù)量的連接請求等價(jià)于建立一個(gè)新的數(shù)據(jù)庫連接。不過,這些大于最小連接數(shù)的數(shù)據(jù)庫連接在使用完不會馬上被釋放,它將被放到連接池中等待重復(fù)使用或是空閑超時(shí)后被釋放。

上面的解釋,可以這樣理解:數(shù)據(jù)庫池連接數(shù)量一直保持一個(gè)不少于最小連接數(shù)的數(shù)量,當(dāng)數(shù)量不夠時(shí),數(shù)據(jù)庫會創(chuàng)建一些連接,直到一個(gè)最大連接數(shù),之后連接數(shù)據(jù)庫就會等待。

3 SQL 的select 語句完整的執(zhí)行順序

SQL Select 語句完整的執(zhí)行順序:

(1)from 子句組裝來自不同數(shù)據(jù)源的數(shù)據(jù);

(2)where 子句基于指定的條件對記錄行進(jìn)行篩選;

(3)group by 子句將數(shù)據(jù)劃分為多個(gè)分組;

(4)使用聚集函數(shù)進(jìn)行計(jì)算;

(5)使用 having 子句篩選分組;

(6)計(jì)算所有的表達(dá)式;

(7)select 的字段;

(8)使用order by 對結(jié)果集進(jìn)行排序。

4 MySQL的事務(wù)

事務(wù)的基本要素(ACID):

● 原子性(Atomicity) 原子性是指事務(wù)是一個(gè)不可分割的工作單位,事務(wù)中的操作要么都發(fā)生,要么都不發(fā)生。

● 一致性(Consistency) 事務(wù)必須使數(shù)據(jù)庫從一個(gè)一致性狀態(tài)變換到另外一個(gè)一致性狀態(tài)。

● 隔離性(Isolation) 事務(wù)的隔離性是指一個(gè)事務(wù)的執(zhí)行不能被其他事務(wù)干擾,即一個(gè)事務(wù)內(nèi)部的操作及使用的數(shù)據(jù)對并發(fā)的其他事務(wù)是隔離的,并發(fā)執(zhí)行的各個(gè)事務(wù)之間不能互相干擾。

● 持久性(Durability) 持久性是指一個(gè)事務(wù)一旦被提交,它對數(shù)據(jù)庫中數(shù)據(jù)的改變就是永久性的,接下來的其他操作和數(shù)據(jù)庫故障不應(yīng)該對其有任何影響。

事務(wù)的并發(fā)問題:

● 臟讀:事務(wù)A讀取了事務(wù)B更新的數(shù)據(jù),然后B回滾操作,那么A讀取到的數(shù)據(jù)是臟數(shù)據(jù)

MySql高頻相關(guān)面試題

● 不可重復(fù)讀:事務(wù) A 多次讀取同一數(shù)據(jù),事務(wù) B 在事務(wù)A多次讀取的過程中,對數(shù)據(jù)作了更新并提交,導(dǎo)致事務(wù)A多次讀取同一數(shù)據(jù)時(shí),結(jié)果 不一致

● 幻讀:系統(tǒng)管理員A將數(shù)據(jù)庫中所有學(xué)生的成績從具體分?jǐn)?shù)改為ABCDE等級,但是系統(tǒng)管理員B就在這個(gè)時(shí)候插入了一條具體分?jǐn)?shù)的記錄,當(dāng)系統(tǒng)管理員A改結(jié)束后發(fā)現(xiàn)還有一條記錄沒有改過來,就好像發(fā)生了幻覺一樣,這就叫幻讀。

小結(jié):

不可重復(fù)讀的和幻讀很容易混淆,不可重復(fù)讀側(cè)重于修改,幻讀側(cè)重于新增或刪除。解決不可重復(fù)讀的問題只需鎖住滿足條件的行,解決幻讀需要鎖表

MySQL事務(wù)隔離級別:

事務(wù)隔離級別 臟讀 不可重復(fù)讀 幻讀

讀未提交(read-uncommitted) 是 是 是

不可重復(fù)讀(read-committed) 否 是 是

可重復(fù)讀(repeatable-read) 否 否 是

串行化(serializable) 否 否 否

5 行鎖,表鎖

MyISAMInnoDB行表鎖表鎖,即使操作一條記錄也會鎖住整個(gè)表,不適合高并發(fā)的操作行鎖,操作時(shí)只鎖某一行,不對其它行有影響,適合高并發(fā)的操作

6 索引

數(shù)據(jù)結(jié)構(gòu):B+Tree

一般來說能夠達(dá)到range就可以算是優(yōu)化了

口訣:

全值匹配我最愛,最左前綴要遵守;

帶頭大哥不能死,中間兄弟不能斷;

索引列上少計(jì)算,范圍之后全失效;

LIKE百分寫最右,覆蓋索引不寫*;

不等空值還有OR,索引影響要注意;

VAR引號不可丟,SQL優(yōu)化有訣竅。

7 b-tree和b+tree的區(qū)別

(1)非葉子節(jié)點(diǎn)只存儲鍵值信息

(2)所有葉子節(jié)點(diǎn)之間都有一個(gè)鏈指針

(3)數(shù)據(jù)記錄都存放在葉子節(jié)點(diǎn)中

8 簡述在MySQL數(shù)據(jù)庫中MyISAM和InnoDB的區(qū)別

InnoDB存儲引擎

主要面向OLTP(online Transaction Processing,在線事務(wù)處理)方面的應(yīng)用

特點(diǎn):

行鎖設(shè)計(jì)、支持外鍵;

MyISAM存儲引擎

主要面向OLAP(online Analytical Processing,在線分析處理)方面的應(yīng)用。

特點(diǎn):

不支持事務(wù),支持表鎖和全文索引。操作速度快。

9 你們公司有哪些數(shù)據(jù)庫設(shè)計(jì)規(guī)范

(一)基礎(chǔ)規(guī)范

9.1、表存儲引擎必須使用InnoDB,表字符集默認(rèn)使用utf8,必要時(shí)候使用utf8mb4

解讀:

(1)通用,無亂碼風(fēng)險(xiǎn),漢字3字節(jié),英文1字節(jié)

(2)utf8mb4是utf8的超集,在存儲4字節(jié)例如表情符號時(shí),使用它

9.2、禁止使用存儲過程,視圖,觸發(fā)器,Event

解讀:

(1)對數(shù)據(jù)庫性能影響較大,互聯(lián)網(wǎng)業(yè)務(wù),能讓站點(diǎn)層和服務(wù)層干的事情,不要交到數(shù)據(jù)庫層

(2)調(diào)試,排錯(cuò),遷移都比較困難,擴(kuò)展性較差

9.3、禁止在數(shù)據(jù)庫中存儲大文件,例如照片,可以將大文件存儲在對象存儲系統(tǒng),數(shù)據(jù)庫中存儲路徑

9.4、禁止在線上環(huán)境做數(shù)據(jù)庫壓力測

本文鏈接:

本文章“MySql高頻相關(guān)面試題”已幫助 169 人

免責(zé)聲明:本信息由用戶發(fā)布,本站不承擔(dān)本信息引起的任何交易及知識產(chǎn)權(quán)侵權(quán)的法律責(zé)任!

本文由賦能網(wǎng) 整理發(fā)布。了解更多培訓(xùn)機(jī)構(gòu)》培訓(xùn)課程》學(xué)習(xí)資訊》課程優(yōu)惠》課程開班》學(xué)校地址等機(jī)構(gòu)信息,可以留下您的聯(lián)系方式,讓課程老師跟你詳細(xì)解答:
咨詢熱線:4008-569-579

如果本頁不是您要找的課程,您也可以百度查找一下: