後端開發面試總結——數據庫篇

最近在準備後端開發校招面試,寫一份總結,整理一下自己的思路,幫助自己記憶。

數據庫篇

1.數據庫的三大範式

   第一範式:列不可再分  第二範式:非主屬性只能依賴於唯一主鍵,而不能依賴於其他主鍵 第三範式:非主屬性只能依賴於主鍵

  數據庫設計必須遵守三大範式,除非是爲了平衡,例如追求性能。

2.數據庫索引的方式

 2.1 hash索引

     hash索引,根據hash確定出索引的位置 ,hash方法只支持精確查找,不支持範圍查找。

2.2 b+樹索引

     b+樹索引底層構建一顆b+樹,支持精確查找和範圍查找。

     b+樹索引包括聚集索引、輔助索引、聯合索引、覆蓋索引。

聚集索引:數據即索引、索引即數據

輔助索引:索引在數據之外

聯合索引:多列的索引

覆蓋索引:   指所要查找的數據都在索引中,調用索引即可,而無需回表操作。

2.3 全文索引

   先建立索引,再對索引進行搜索的過程就叫全文檢索(Full-text Search) 

3.數據庫事務

  數據庫的事務指對數據庫的一組操作,或者一組指令。這些指令要麼都執行,要麼都不執行,不能被打斷。

  數據庫的事務具有ACID四種特性 即原子性、一致性、隔離性和持久性。

  原子性指這些操作是原子的,作爲一個整體,要麼都執行,要麼都不執行。

 一致性指事務的執行不能破壞數據庫數據的完整性和一致性,一個事務在執行之前和執行之後,數據庫都必須處於一致性狀態。

  隔離性指在併發環境中,併發的事務時相互隔離的,一個事務的執行不能不被其他事務干擾。

  持久性是指事務對數據庫的修改是持久的,對數據庫的狀態的影響永久保存到數據庫中。

4.數據庫事務的隔離級別

(由低到高)未提交讀、已提交讀、可重複讀、串行化

5.數據庫樂觀鎖和悲觀鎖

樂觀鎖認爲數據庫在讀寫過程中不會出現髒數據,要求較爲寬鬆,一般爲記錄加上version字段

悲觀鎖認爲數據庫在讀寫過程中會出現髒數據,要求較爲嚴格,使用select…for update會把數據給鎖住

要注意悲觀鎖中鎖的類型。

6.MyISAM和InnoDB的區別

 1.是否支持事務:MYISAM不支持事務、InnoDB支持事務

 2.鎖粒度:MYISAM是表級鎖,InnoDB支持行級鎖

 3.索引: InnoDB是聚集索引,MyISAM是非聚集索引

 4.InnoDB支持外鍵、InnoDB支持MVCC

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章