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