- 數(shù)據(jù)庫(kù)常見面試題 推薦度:
- 相關(guān)推薦
數(shù)據(jù)庫(kù)常見面試題
在平時(shí)的學(xué)習(xí)、工作中,我們都離不開試題,試題可以幫助參考者清楚地認(rèn)識(shí)自己的知識(shí)掌握程度。什么樣的試題才能有效幫助到我們呢?以下是小編收集整理的數(shù)據(jù)庫(kù)常見面試題,歡迎大家借鑒與參考,希望對(duì)大家有所幫助。
1、說(shuō)出數(shù)據(jù)連接池的工作機(jī)制是什么
J2EE 服務(wù)器啟動(dòng)時(shí)會(huì)建立一定數(shù)量的池連接,并一直維持不少于此數(shù)目的池連接?蛻舳顺绦蛐枰B接時(shí),池驅(qū)動(dòng)程序會(huì)返回一個(gè)未使用的池連接并將其表記為忙。如果當(dāng)前沒(méi)有空閑連接,池驅(qū)動(dòng)程序就新建一定數(shù)量的連接,新建連接的數(shù)量有配置參數(shù)決定。當(dāng)使用的池連接調(diào)用完成后,池驅(qū)動(dòng)程序?qū)⒋诉B接表記為空閑,其他調(diào)用就可以使用這個(gè)連接。
2、存儲(chǔ)過(guò)程和函數(shù)的區(qū)別
存儲(chǔ)過(guò)程是用戶定義的一系列sql語(yǔ)句的集合,涉及特定表或其它對(duì)象的任務(wù),用戶可以調(diào)用存儲(chǔ)過(guò)程,而函數(shù)通常是數(shù)據(jù)庫(kù)已定義的方法,它接收參數(shù)并返回某種類型的值并且不涉及特定用戶表。
3、事務(wù)是什么?
事務(wù)是作為一個(gè)邏輯單元執(zhí)行的一系列操作,一個(gè)邏輯工作單元必須有四個(gè)屬性,稱為 ACID(原子性、一致性、隔離性和持久性)屬性,只有這樣才能成為一個(gè)事務(wù):
原子性:
事務(wù)必須是原子工作單元;對(duì)于其數(shù)據(jù)修改,要么全都執(zhí)行,要么全都不執(zhí)行。
一致性:
事務(wù)在完成時(shí),必須使所有的數(shù)據(jù)都保持一致狀態(tài)。在相關(guān)數(shù)據(jù)庫(kù)中,所有規(guī)則都必須應(yīng)用于事務(wù)的修改,以保持所有數(shù)據(jù)的完整性。事務(wù)結(jié)束時(shí),所有的內(nèi)部數(shù)據(jù)結(jié)構(gòu)(如 B 樹索引或雙向鏈表)都必須是正確的。
隔離性:
由 并發(fā)事務(wù)所作的修改必須與任何其它并發(fā)事務(wù)所作的修改隔離。事務(wù)查看數(shù)據(jù)時(shí)數(shù)據(jù)所處的狀態(tài),要么是另一并發(fā)事務(wù)修改它之前的狀態(tài),要么是另一事務(wù)修改它之 后的狀態(tài),事務(wù)不會(huì)查看中間狀態(tài)的數(shù)據(jù)。這稱為可串行性,因?yàn)樗軌蛑匦卵b載起始數(shù)據(jù),并且重播一系列事務(wù),以使數(shù)據(jù)結(jié)束時(shí)的狀態(tài)與原始事務(wù)執(zhí)行的狀態(tài)相 同。
持久性
事務(wù)完成之后,它對(duì)于系統(tǒng)的影響是永久性的。該修改即使出現(xiàn)系統(tǒng)故障也將一直保持。
4、游標(biāo)的作用?如何知道游標(biāo)已經(jīng)到了最后?
游標(biāo)用于定位結(jié)果集的行,通過(guò)判斷全局變量@@FETCH_STATUS可以判斷是否到了最后,通常此變量不等于0表示出錯(cuò)或到了最后
5、觸發(fā)器分為事前觸發(fā)和事后觸發(fā),這兩種觸發(fā)有和區(qū)別。語(yǔ)句級(jí)觸發(fā)和行級(jí)觸發(fā)有何區(qū)別?
事前觸發(fā)器運(yùn)行于觸發(fā)事件發(fā)生之前,而事后觸發(fā)器運(yùn)行于觸發(fā)事件發(fā)生之后。通常事前觸發(fā)器可以獲取事件之前和新的字段值。
語(yǔ)句級(jí)觸發(fā)器可以在語(yǔ)句執(zhí)行前或后執(zhí)行,而行級(jí)觸發(fā)在觸發(fā)器所影響的每一行觸發(fā)一次
數(shù)據(jù)庫(kù)面試題
一、基礎(chǔ)概念
請(qǐng)簡(jiǎn)要描述MySQL的架構(gòu)。
MySQL采用客戶端/服務(wù)器架構(gòu),客戶端通過(guò)網(wǎng)絡(luò)發(fā)送請(qǐng)求到服務(wù)器,服務(wù)器執(zhí)行請(qǐng)求并返回結(jié)果。
什么是數(shù)據(jù)庫(kù)范式?
數(shù)據(jù)庫(kù)范式是數(shù)據(jù)庫(kù)設(shè)計(jì)中的規(guī)范,用來(lái)減少數(shù)據(jù)冗余和提高數(shù)據(jù)一致性。常用的范式有:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)。
請(qǐng)解釋一下MySQL的事務(wù)特性。
MySQL事務(wù)具有以下特性:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability),簡(jiǎn)稱ACID特性。
二、存儲(chǔ)引擎
請(qǐng)介紹MySQL常用的存儲(chǔ)引擎及其特點(diǎn)。
MySQL常用的存儲(chǔ)引擎有:InnoDB、MyISAM、MEMORY、MERGE、NDB等。
InnoDB:支持事務(wù)、行級(jí)鎖定、外鍵、支持高并發(fā)。
MyISAM:不支持事務(wù)、表級(jí)鎖定、不支持外鍵,讀寫性能較高。
MEMORY:數(shù)據(jù)存儲(chǔ)在內(nèi)存中,適用于緩存數(shù)據(jù)。
MERGE:將多個(gè)MyISAM表合并成一個(gè)表。
NDB:集群存儲(chǔ)引擎,適用于分布式數(shù)據(jù)庫(kù)。
請(qǐng)說(shuō)明InnoDB和MyISAM的區(qū)別。
事務(wù)支持:InnoDB支持事務(wù),MyISAM不支持。
鎖定機(jī)制:InnoDB支持行級(jí)鎖定,MyISAM支持表級(jí)鎖定。
外鍵支持:InnoDB支持外鍵,MyISAM不支持。
數(shù)據(jù)恢復(fù):InnoDB支持崩潰恢復(fù),MyISAM不支持。
讀寫性能:MyISAM在讀寫性能方面略勝一籌。
三、事務(wù)
什么是事務(wù)?
事務(wù)是一系列操作的集合,這些操作要么全部執(zhí)行,要么全部不執(zhí)行。
請(qǐng)解釋ACID特性在事務(wù)中的作用。
原子性:保證事務(wù)中的所有操作要么全部完成,要么全部不做。
一致性:保證事務(wù)執(zhí)行后,數(shù)據(jù)庫(kù)狀態(tài)保持一致。
隔離性:防止多個(gè)事務(wù)同時(shí)操作同一數(shù)據(jù)時(shí)產(chǎn)生沖突。
持久性:保證事務(wù)提交后,其結(jié)果永久保存。
請(qǐng)說(shuō)明事務(wù)隔離級(jí)別。
事務(wù)隔離級(jí)別有:讀未提交(Read Uncommitted)、讀已提交(Read Committed)、可重復(fù)讀(Repeatable Read)、串行化(Serializable)。
四、鎖
什么是鎖?
鎖是數(shù)據(jù)庫(kù)系統(tǒng)用于控制并發(fā)訪問(wèn)的一種機(jī)制,可以防止多個(gè)事務(wù)同時(shí)修改同一數(shù)據(jù)。
請(qǐng)解釋表級(jí)鎖和行級(jí)鎖的區(qū)別。
表級(jí)鎖:鎖定整個(gè)表,影響其他事務(wù)對(duì)該表的訪問(wèn)。
行級(jí)鎖:鎖定表中的一行,不影響其他事務(wù)對(duì)該行的訪問(wèn)。
請(qǐng)說(shuō)明共享鎖和排他鎖的區(qū)別。
共享鎖:允許多個(gè)事務(wù)同時(shí)讀取同一數(shù)據(jù)。
排他鎖:只允許一個(gè)事務(wù)對(duì)數(shù)據(jù)進(jìn)行修改。
五、索引
什么是索引?
索引是數(shù)據(jù)庫(kù)表中的一種數(shù)據(jù)結(jié)構(gòu),可以提高查詢效率。
請(qǐng)解釋B樹索引的概念及其優(yōu)點(diǎn)。
B樹索引是一種多路平衡查找樹,具有以下優(yōu)點(diǎn):
平衡性:保證查詢效率。
磁盤友好:減少磁盤I/O操作。
范圍查詢效率:支持范圍查詢。
請(qǐng)說(shuō)明最左前綴原則。
最左前綴原則是指在聯(lián)合索引中,查詢條件必須從最左邊的列開始,才能利用索引。
六、性能優(yōu)化
如何提高M(jìn)ySQL查詢效率?
優(yōu)化SQL語(yǔ)句:避免全表掃描、減少子查詢、使用索引等。
優(yōu)化數(shù)據(jù)庫(kù)設(shè)計(jì):遵循范式設(shè)計(jì)、減少數(shù)據(jù)冗余、合理使用外鍵等。
優(yōu)化服務(wù)器配置:調(diào)整緩沖區(qū)大小、線程數(shù)等。
請(qǐng)解釋讀寫分離和分庫(kù)分表的概念。
讀寫分離:將讀操作和寫操作分配到不同的服務(wù)器上,提高系統(tǒng)并發(fā)能力。
分庫(kù)分表:將數(shù)據(jù)分散到多個(gè)數(shù)據(jù)庫(kù)或表中,提高系統(tǒng)擴(kuò)展性。
【數(shù)據(jù)庫(kù)常見面試題】相關(guān)文章:
常見的英語(yǔ)面試題09-17
常見的算法面試題08-03
常見銀行面試題08-19
常見銀行面試題10-30
常見銀行面試題10-31