面試基礎知識 資料庫

2021-10-23 00:26:05 字數 2064 閱讀 8477

事務是指作為單個邏輯工作單元執行的一系列操作,可以被看作乙個單元的一系列sql語句的集合。要麼完全地執行,要麼完全地不執行。如果不對資料庫進行併發控制,可能會產生 髒讀、非重複讀、幻像讀、丟失修改的異常情況。

同一時間,只允許乙個事務請求同一資料,不同的事務之間彼此沒有任何干擾。比如a正在從一張銀行卡中取錢,在a取錢的過程結束前,b不能向這張卡轉賬。

1)原子性(atomicity)

原子性是指事務包含的所有操作要麼全部成功,要麼全部失敗回滾,因此事務的操作如果成功就必須要完全應用到資料庫,如果操作失敗則不能對資料庫有任何影響。

2)一致性(consistency)

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

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

3)隔離性(isolation)

隔離性是當多個使用者併發訪問資料庫時,比如操作同一張表時,資料庫為每乙個使用者開啟的事務,不能被其他事務的操作所干擾,多個併發事務之間要相互隔離。

4)永續性(durability)

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

屬性不可分:要求資料庫表的每一列都是不可分割的原子資料項。

確保資料庫表中的每一列都和主鍵相關,而不能只與主鍵的某一部分相關

確保資料表中的每一列資料都和主鍵直接相關,而不能間接相關。

在資料之外,資料庫系統還維護著滿足特定查詢演算法的資料結構,這些資料結構以某種方式指向資料,這樣就可以在這些資料結構的基礎上實現高階查詢演算法,這種資料結構就是索引

索引一般分為b+樹索引hash索引

b+樹索引:在b-tree上改進得到,其非葉子結點均為key值,葉子結點是key-value鍵值對,葉子結點前後相連並且有序

hash索引:通過對ket進行hash而將記錄儲存在不同的bucket中,可以做到常數時間的查詢

為什麼有了b+樹還需要hash索引?

1)b+樹預設有序,hash預設無序,所以hash索引無法用來排序

2)hash索引在搜尋速度o(1)要快於b+樹索引o(logn)

3)hash只能進行等值查詢(因為需要計算hash(key)再去匹配),而b+樹索引可以進行等值、部分字首、範圍查詢

新增索引的原則:

1)在查詢中很少使用的列不應該建立索引

2)只有很少資料值的列也不應該建立索引

3)定義為text、image和bit資料型別不應該新增索引,因為這些型別要麼相當大,要麼資料少

4)當需要的修改效能遠遠大於檢索效能時,不應該建立索引

索引的優點:

1)可以大大加快資料檢索的速度

2)通過建立唯一索引,可以保證資料庫表中每一行資料的唯一性

3)使用分組和排序檢索時,可以顯著減少分組和排序的時間

索引的缺點:

1)建立索引和維護索引需要好費時間

2)索引需要佔額外的物理空間

3)當對表中的資料進行增刪改的時候,索引也需要動態維護,這樣就降低了資料庫的維護速度

內連線:只返回兩個表中聯結字段相等的行,即兩個表的交集

外連線:返回相等的行和不等的行。包括左外連線、右外連線和全外連線。

左外連線:左邊表資料行全部保留,右邊表保留相匹配的行。

右外連線:右邊表資料行全部保留,左邊表保留匹配的行。

全外連線:左外連線的結果 和 右外連線連線 做並集。

資料庫基礎知識 資料庫系統的型別

層級資料庫 由樹實現 網狀資料庫 由圖實現 缺點 需要使用者建立指標來維護,結構描述複雜 資料庫檢索操作依賴於由指標指示的路徑 逐一記錄的操作,不能有效支援記錄集合的操作。關聯式資料庫 由表實現 優點 資料之間的關聯關係由table中屬性的值來表徵,結構描述簡單 資料檢索操作不依賴於路徑資訊或過程資...

usb基礎知識資料

usb massage storage協議 usb描述符詳細含義 usb裝置的識別流程 usb主機控制器host controler uhci universal host controller inte ce 通用主機控制介面,usb1.0 1.1 ohci open host controlle...

資料庫基礎知識 資料庫基礎概念和名詞術語

資料庫 database 是儲存有組織的資料的容器 通常是乙個檔案或一組檔案 理解資料庫的一種最簡單的辦法是將其想象為乙個檔案櫃。此檔案櫃是乙個存放資料的物理位置,不管資料是什麼以及如何組織的。資料庫軟體應稱為dbms 資料庫管理系統 如 mysql。資料庫是通過dbms建立和操縱的容器。在你將資料...