資料庫面試常見問題

2021-10-25 15:49:14 字數 2386 閱讀 6744

3、索引

4、mysql儲存引擎

5、分割槽和分表

6、mvcc

7、資料庫的鎖

8、為什麼innodb採用b+樹

這是乙個超連結

特性:原子性、一致性、隔離性、永續性。

隔離等級:讀未提交、讀已提交、可重複讀、序列化

這是乙個超連結

悲觀鎖:對外界修改資料持保守態度。認為外界會修改資料。

悲觀鎖會在修改記錄之前,對資料進行加鎖。成功加鎖後,開始修改記錄,事務結束後才解鎖。

悲觀鎖的實現往往依靠資料庫提供的鎖機制。

悲觀鎖主要分為共享鎖排他鎖

共享鎖:就是讀鎖。多個事務可以一起獲得共享鎖,可以對資料進行讀但不可修改

排他鎖:就是寫鎖。當乙個事務獲得了排他鎖後,其他事務都不可獲得排他鎖和共享鎖。獲得排他鎖的事務可以對資料進行修改

悲觀鎖適合於寫操作較多的情況

優點:為資料處理的安全提供了保證

缺點:因為會加鎖,會讓資料庫產生額外的開銷,降低了效率,還有增加了產生死鎖的機會,降低了並行性

樂觀鎖:認為外界修改資料是概率很小的事件,在提交的時候才去判斷是不是存在衝突。

樂觀鎖是先進行資料修改,然後判斷是不是存在衝突,不存在就提交事務進行更新。

樂觀鎖的實現不依靠資料庫,而是依靠資料本身

主要有兩種方式可以實現樂觀鎖,一是通過cas演算法,二是通過版本號

樂觀鎖適合於讀操作較多寫的情況

優點:響應效率高,較好的實現了並行

缺點:如果衝突效率較高,樂觀鎖重試會反覆執行,時間效率很低

索引詳解:這是乙個超連結

如果定義了主鍵,innodb會將主鍵作為聚集索引。如果沒有主鍵,會將第乙個非空並且唯一的字段作為主鍵。如果也沒有,就會選擇內建6位元組的rowid作為隱含的聚集索引。

資料儲存在一顆b+樹的葉子節點上,這就要求按順序存放,如果空間夠直接放,不夠就開闢新的一頁存放。如果主鍵不是自增的,那麼也就是當前資料可能會插入任意乙個位置,那麼原來的結點就要後移,會產生大量的時間開銷。

雜湊索引最適合等值查詢。不支援範圍查詢。不支援索引完成排序。不支援最左字首。

這是乙個超連結

1、如果要支援事務,選擇innodb

2、表的絕大多數都是讀查詢,考慮myisam

3、系統崩潰後,myisam恢復更困難

這是乙個超連結

1.水平分表:將一張表的不同資料行分為多張表,通過採用hash、取模的方式分表

2.垂直分表:將一張表的不同字段放到一張表上

減少單張表的訪問壓力,減少資料庫的負擔,縮短查詢時間

rang分割槽、list分割槽、key分割槽、hash分割槽

優點:

1、儲存更多資料。分割槽表的資料可以分布在不同的物理裝置上,從而高效地利用多個硬體裝置。和單個磁碟或者檔案系統相比,可以儲存更多資料

2、優化查詢。在where語句中包含分割槽條件時,可以只掃瞄乙個或多個分割槽表來提高查詢效率;涉及sum和count語句時,也可以在多個分割槽上並行處理,最後彙總結果。

3、分割槽表更容易維護。例如:想批量刪除大量資料可以清除整個分割槽。

缺點:

1、乙個表最多只能有1024個分割槽

2、mysql5.1中,分割槽表示式必須是整數,或者返回整數的表示式。在mysql5.5中提供了非整數表示式分割槽的支援。

3、如果分割槽欄位中有主鍵或者唯一索引的列,那麼有主鍵列和唯一索引列都必須包含進來。即:分割槽字段要麼不包含主鍵或者索引列,要麼包含全部主鍵和索引列。

4、分割槽表中無法使用外來鍵約束

5、mysql的分割槽適用於乙個表的所有資料和索引,不能只對錶資料分割槽而不對索引分割槽,也不能只對索引分割槽而不對錶分割槽,也不能只對錶的一部分資料分割槽。

分表是一張表分為多張表,分割槽在邏輯上只有一張表,底層是由多少物理區組成。

這是乙個超連結

這是乙個超連結

mvcc即多版本併發控制機制。主要是用來實現讀寫的併發,並且不需要加鎖,降低系統開銷。innodb儲存引擎通過儲存資料某個時間的快照來實現,每行資料後面隱藏了兩列,分別是建立版本號和刪除版本號。

核心思想就是儲存乙個資料的多個版本號,使得當前讀寫不會產生衝突。

這是乙個超連結

innodb採用b+樹結構,是因為b+樹能夠減少單次查詢的磁碟訪問次數,降低io、提公升效能。

b+樹的key和data值都儲存在葉子結點,非葉子節點只進行資料索引。

秋招面試常見問題 資料庫

1.sql優化?為什麼要進行sql優化 sql語句可以有不同的寫法 如何進行sql優化 database transaction 是指作為單個邏輯工作單元執行的一系列 操作,要麼完全地執行,要麼完全地不執行。事務處理可以確保除非事務性單元內的所有操作都成功完成,否則不會永久更新面向資料的資源。通過將...

資料庫常見問題

髒讀 事務b讀取事務a還沒有提交的資料 不可重複讀 兩次事務讀的資料不一致 幻讀 事務a修改了資料,事務b也修改了資料,這時在事務a看來,明明修改了資料,咋不一樣 會出現 不會出現 資料庫 聯機事務處理oltp on line transaction processing 儲存的資料量小,方便操作,...

資料庫 面試題 常見問題(一)

到真正是那麼回事的it公司去面試,會就會,不會就答不會。一 大檔案 1 blob binary large object 適合於存放程式 影音等非結構化檔案。2 clob character large object 適用於儲存文字型資料,例如文章 新聞 記錄 日誌等。二 oracle函式和儲存過程...