更新時間:2022-12-23 14:34:31 來源:動力節點 瀏覽1306次
為什么我們在面試程序員的時候,一定會被問到數據庫相關的面試題呢?因為數據索引是可以提高效率的,我們要知道數據索引是有序的,并且可以通過索引查詢一個數據是無需遍歷索引記錄,非常的方便,并且在極端的情況下,數據索引的查詢效率為二分法查詢效率,趨近于log2(N)。所以,想要在面試官面前表現的突出一些,那么數據庫相關的面試題是必須要掌握的:
1、哈希索引的優勢:
等值查詢,哈希索引具有絕對優勢(前提是:沒有大量重復鍵值,如果大量重復鍵值時,哈希索引的效率很低,因為存在所謂的哈希碰撞問題。
2、哈希索引不適用的場景:
3、什么是表分區?
表分區,是指根據一定規則,將數據庫中的一張表分解成多個更小的,容易管理的部分。從邏輯上看,只有一張表,但是底層卻是由多個物理分區組成
4、表分區與分表的區別?
分表:指的是通過一定規則, 將一張表分解成多 張不同的表。比如將用戶訂單記錄根據時間成多個表。
分表與分區的區別在于:分區從邏輯上來講只有一張表 ,而分表則是將一張表分解成多張表。
5、表分區有什么好處?
存儲更多數據。分區表的數據可以分布在不同的物理設備上,從而高效地利用多個硬件設備。和單個磁盤或者文件系統相比,可以存儲更多數據
優化E詢。在where語句中包含分區條件時,可以只掃描一個或多 個分區表來提高查詢效率;涉及sum和count語句時,也可以在多個分區上并行處理,最后匯總結果。
分區表更容易維護。例如:想批量刪除大量數據可以清除整個分區。
避免某些特殊的瓶頸,例如InnoDB的單個索引的互斥訪問, ext3問價你系統的inode鎖競爭等。
6、在MVCC并發控制中,讀操作可以分成兩類:
快照讀(snapshot read):讀取的是記錄的可見版本(有可能是歷史版本),不用加鎖(共享讀鎖s鎖也不加,所以不會阻塞其他事務的寫)
當前讀(currentread):讀取的是記錄的最新版本,并且,當前讀返回的記錄,都會加上鎖,保證其他事務不會再并發修改這條記錄
7、行級鎖定的優點:
8、行級鎖定的缺點:
比頁級或表級鎖定占用更多的內存。當在表的大部分中使用時,比頁級或表級鎖定速度慢,因為你必須獲取更多的鎖。 如果你在大部分數據上經常進行GROUP BY操作或者必須經常掃描整個表,比其它鎖定明顯慢很多。 用高級別鎖定,通過支持不同的類型鎖定,你也可以很容易地調節應用程序,因為其鎖成本小于行級鎖定。
9、MySQL優化
prepared statements獲得很多好處,無論是性能問題還是安全問題。
Prepared Statements可以檢查一些你綁定好的變量,這樣可以保護你的程序不會受到“SQL注入式” 攻擊
以上就是“2023新版數據庫基礎面試題”,你能回答上來嗎?如果想要了解更多的Java面試題相關內容,可以關注動力節點Java官網。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習