資料庫部分常見面試題

2022-08-09 01:57:10 字數 2550 閱讀 7874

事務的四大特性(acid)

原子性

原子性是指事務包含的所有操作要麼全部成功,要麼全部失敗回滾。

一致性

一致性是指事務必須是資料庫從乙個一致性狀態變換到另乙個一致性狀態,也就是說乙個事務執行之前和執行之後都必須處於一致性狀態。

拿轉賬來說,假設使用者a和使用者b兩者的錢加起來一共是5000,那麼不管a和b之間如何轉賬,轉幾次賬,事務結束後兩個使用者的錢加起來應該還是5000,這是事物的一致性。

隔離性

隔離性是當多個使用者併發訪問資料庫時,比如操作同一張表時

永續性

永續性是指乙個事務一旦被提交了,那麼資料庫中的資料的改變就是永久性的,即便是在資料庫系統遇到故障的情況下也不會丟失提交事務的操作。

資料庫的隔離級別,每個級別會引發什麼問題,mysql預設是哪個級別?

讀取未提交內容

在該隔離級別,所有事物都可以看到其他未提交事物的執行結果。本隔離級別很少用於實際應用,因為它的效能也不比其他級別好多少。讀取未提交資料,也被稱為髒讀。

讀取提交內容

這是大多數資料庫的預設隔離級別(但不是mysql預設的)。它滿足了隔離的簡單定義:乙個事務只能看見已經提交事務所做的改變。這種隔離級別也支援所謂的不可重複讀,因為同一事物的其他例項在該例項處理期間可能會有新的commit,所以同一select可能返回不同結果。

可重複讀

這是mysql預設事務隔離級別,它確保同一事務的多個例項在併發讀取資料時,會看到同樣的資料行。不過理論上,這會導致另乙個棘手的問題:幻讀,簡單地說,幻讀指當使用者讀取某一範圍的資料行時,另乙個事務又在該範圍內插入了新行,當使用者再讀取該範圍的資料行時,會發現有新的「幻影」行。

可序列化

這是最高的隔離級別,它通過強制事務排序,使之不可能相互衝突,從而解決幻讀問題。簡而言之,它是在每個讀的資料行上加上共享鎖。在這個級別,可能導致大量的超時現象和鎖競爭。

myisam和innodb兩種儲存引擎的區別(事務、鎖級別等),各自適用的場景。

基本的差別為:myisam型別不支援事務、外來鍵等高階處理,而innodb型別支援。myisam型別的表強調的是效能,其執行速度比innodb型別更快,但是不提供事務支援,而innodb提供事務支援以及外部鍵等高階資料庫功能。

所以從巨集觀上來講,事務資料庫關注細節,而資料倉儲關注高層次的聚集,所以,innodb更適合作為線上的事務型倉庫,而myisam更適合作為rolap型資料倉儲。

資料庫第

一、第二、第三正規化

第一正規化就是屬性不可分割

第二正規化就是要有主鍵,其他欄位都依賴主鍵

第三正規化就是沒有傳遞依賴

什麼是索引?

索引就是一種特殊的查詢表,資料庫的搜尋引擎可以利用它加速對資料的檢索。它很類似生活中書的目錄,不需要查詢整本書的內容就可以找到想要找的資料。

觸發器的作用

觸發器是一種特殊的儲存過程,主要通過實踐的觸發來執行。

什麼是儲存過程?用什麼來呼叫?

儲存過程是乙個預編譯的sql語句,有點事允許模組化設計,就是說只需要建立一次,以後再程式中可以多次呼叫。

什麼是事務?什麼是鎖?

事務就是被繫結在一起作為乙個邏輯工作單元的sql語句分組,如果任何乙個語句操作失敗,那麼整個操作就失敗,以後操作就會回滾到操作前的狀態或者是上乙個節點。

鎖:在所有的dbms中,鎖是事務的關鍵,鎖可以保證事務的完整性和併發性。與現實生活中的鎖一樣,它可以是某些資料的擁有者,在某段時間內不能使用某些資料或資料結構。

什麼叫檢視?游標是什麼?

檢視是一種虛擬的表,具有和物理表相同的功能。它可以對檢視進行增、改、查操作。檢視通常是有乙個表或者多個表的行或列的子集。對檢視的修改不影響基本表。它使得我們獲取資料更容易,相比多表查詢。

游標是對查詢出來的結果集作為乙個單元來有效的處理。游標可以定義在該單元中的特定行,從結果集的當前行中檢索出一行或者多行。可以對結果集當前行進行修改。一般不適用游標,但是需要逐條處理資料的時候,游標顯得十分重要。

什麼是主鍵?什麼是外來鍵?

主鍵是**裡的(乙個或多個)字段,只用來定義**裡的行;主鍵裡的值總是唯一的。外來鍵是乙個用來簡歷兩個**之間關係的約束。這種關係一般都涉及乙個**裡的主鍵欄位與另外乙個**裡的一系列相連的字段。那麼這些相連的字段就是外來鍵。

資料庫常見面試題

1.事務的四大特性acid 1 原子性 事務包含的操作要麼全部成功,要麼全部回退。2 一致性 事務開始前和開始後,資料庫的完整性沒有被破壞。舉例 轉賬 3 隔離性 對資料庫進行併發操作時,事務不能被其他事務干擾。4 永續性 事務一旦提交,對資料庫的影響是永久的。2.事務的併發 包含3類資料讀和2類資...

資料庫方面常見面試題

1 說出資料連線池的工作機制是什麼 j2ee 伺服器啟動時會建立一定數量的池連線,並一直維持不少於此數目的池連線。客戶端程式需要連線時,池驅動程式會返回乙個未使用的池連線並將其表記為忙。如果當前沒有空閒連線,池驅動程式就新建一定數量的連線,新建連線的數量有配置引數決定。當使用的池連線呼叫完成後,池驅...

資料庫其他常見面試題

一般情況只發生鎖超時,就是乙個程序需要訪問資料庫表或者欄位的時候,另外乙個程式正在執行帶鎖的訪問 比如修改資料 那麼這個程序就會等待,當等了很久鎖還沒有解除的話就會鎖超時,報告乙個系統錯誤,拒絕執行相應的sql操作。發生死鎖的情況比較少,比如乙個程序需要訪問兩個資源 資料庫表或者字段 當獲取乙個資源...