Java面試知識點之數據庫篇(一)


前言:數據庫的相關知識,在面試中也經常出現,筆者認為非常有必要對此類知識進行相關總結。


1.索引

索引是對數據庫表中一列或多列的值進行排序的結構,是幫助數據庫高效獲取數據的數據結構

通俗理解:索引就是加快檢索表中數據的方法。數據庫的索引類似於書籍的索引。在書籍中,索引允許用戶不必翻閱完整個書就能迅速地找到所需要的信息;在數據庫中,索引也允許數據庫程序迅速地找到表中的數據,而不必掃描整個數據庫,從而提高查詢速度。

索引的優點:

1)通過創建唯一性索引,可以保證數據庫表中每一行數據的唯一性。
2)可以大大加快數據的檢索速度,這也是創建索引的最主要的原因。
3)可以加速表和表之間的連接,特別是在實現數據的參考完整性方面特別有意義。
4)在使用分組和排序子句進行數據檢索時,同樣可以顯著減少查詢中分組和排序的時間。
5)通過使用索引,可以在查詢的過程中,使用優化隱藏器,提高系統的性能。

索引的缺點:

1)創建索引和維護索引要耗費時間,這種時間隨着數據量的增加而增加。
2)索引需要占物理空間,除了數據表占數據空間之外,每一個索引還要占一定的物理空間,如果要建立聚簇索引,那么需要的空間就會更大。
3)當對表中的數據進行增加、刪除和修改的時候,索引也要動態的維護,這樣就降低了數據的維護速度。

具體參考:

https://blog.csdn.net/u010425776/article/details/60968248

http://www.cnblogs.com/KissKnife/archive/2009/03/30/1425534.html

https://www.cnblogs.com/aspwebchh/p/6652855.html

https://www.cnblogs.com/tgycoder/p/5410057.html

2.事務

事務(Transaction)是並發控制的基本單位。所謂的事務,它是一個操作序列,這些操作要么都執行,要么都不執行,它是一個不可分割的工作單位。事務是數據庫維護數據一致性的單位,在每個事務結束時,都能保持數據一致性。

其四個基本特性為:原子性一致性隔離性持久性

一致性的理解:

一致性是指在事務開始之前和事務結束以后,數據庫的完整性約束沒有被破壞。也就是說數據庫事務不能破壞關系數據的完整性以及業務邏輯上的一致性。

拿“轉賬”例子說明:

假設用戶A和用戶B兩者的錢加起來一共是5000,那么不管A和B之間如何轉賬,轉幾次賬,事務結束后兩個用戶的錢相加起來應該還得是5000,這就是事務的一致性。

具體參考:

https://blog.csdn.net/u010425776/article/details/60968283

https://www.cnblogs.com/hebao0514/p/5490698.html

https://www.cnblogs.com/fjdingsd/p/5273008.html

3.數據庫的樂觀鎖和悲觀鎖

悲觀鎖:假定會發生並發沖突,屏蔽一切可能違反數據完整性的操作。

樂觀鎖:假設不會發生並發沖突,只在提交操作時檢查是否違反數據完整性。

具體參考:

http://www.open-open.com/lib/view/open1452046967245.html

4.數據庫三大范式

具體參考:

https://blog.csdn.net/u010425776/article/details/60968300

5.數據庫連接池

數據庫連接池(Connection pooling)是程序啟動時建立足夠的數據庫連接,並將這些連接組成一個連接池,由程序動態地對池中的連接進行申請,使用,釋放。

具體參考:

https://www.cnblogs.com/aspirant/p/6747238.html

https://blog.csdn.net/u011088260/article/details/53311165

by Shawn Chen,2018.4.8日,晚。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM