資料庫基礎

2021-10-23 08:37:10 字數 1485 閱讀 4606

面經中刷到的問題:

1.事務的四大特性,具體介紹一下

2.髒讀和幻讀,不可重複讀發生場景與區別

3.介紹一下資料庫事務

4.講一下b+樹,為什麼使用b+樹

5.講一下主鍵

6.資料庫的四種隔離級別

7.mysql有哪些索引

8.聚集索引和非聚集索引

四大特性:

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

一致性:事務操作前後,資料庫都是一致性狀態

隔離性:類似於上鎖,防止多個併發事務同一時間訪問同一張表

永續性:一旦事務操作完成,對於資料庫的更改將是永久性的

事務的隔離級別:

讀未提交:只給寫操作上鎖,讀不上鎖。會引起髒讀問題,引入讀已提交來解決

讀已提交:寫鎖(x)讀鎖(s),不同操作需要分別獲取不同的鎖。乙個資料上有x鎖,則不能獲取任意鎖;乙個資料上有s鎖,則仍舊可以獲取其他s鎖。讀取了資料之後,不管接下來操作,直接釋放s鎖。會引起不可重複讀問題,引入可重複讀來解決

可重複讀:修改s鎖為直到完成事務(一條語句所有的操作)才會釋放s鎖,發現還有乙個問題:幻讀,引用序列化解決

序列化:事務只能一件一件的進行,不能併發

常見的三大問題:

髒讀:在a讀取資料時,讀到了b事務中處理的資料;之後b回滾了,改寫資料撤銷,但a已經讀取到了未撤銷的資料

不可重複讀:同一條事務中,每一次讀的資料不一樣;a讀ab,寫c,b寫a,a再次寫c

幻讀:a對某一列資料進行了批量更改,但是事後確認時發現一行資料未被更改,因為b在a操作時插入了一行資料

mysql預設級別是可重複讀;oracle預設讀已提交,還支援序列化

b+樹的結構特點:

b+樹的好處:

聚集索引和非聚集索引的區別:聚集索引一般採用主鍵作為索引條件(預設為第一列unique且不含空的列),葉子節點包含整條資料裡的所有資訊,乙個資料庫內只能有乙個;非聚集索引中的葉子節點不包含全部的行資訊,但是會有bookmark來告訴儲存引擎索引對應資料的方法(主鍵),乙個資料庫內可存在多個非聚集索引。

索引需要注意:盡量取小的索引,提公升b+樹的效能;注意最左原則

加不加索引?-----主要考慮檢索效能與修改效能的平衡;加了索引會提高檢索效能但是降低修改效能

加:經常需要搜尋的列上(包括主鍵),提高搜尋速度

在經常用在連線的列上,加快連線速度

在經常需要排序和範圍搜尋,where的列上,加快速度

不加:很少被查詢到的列

取值範圍很小的列

候選關鍵字是唯一標識每行資料的屬性(集);主屬性是候選關鍵字的成員

資料庫三大正規化:

不用序列式解決幻讀的方法:

悲觀鎖與樂觀鎖的區別:悲觀鎖假定會發生衝突,先請求鎖再等待或執行;樂觀鎖假定不會發生衝突,在commit的時候檢視版本號或者時間戳,若發生衝突,則回滾事務。

drop:不需要一張表的時候

delete:刪除部分資料行時,搭配where

truncate:保留表但是刪除所有資料

資料庫 資料庫基礎

什麼是sql 結構化查詢語言 structtured query language sql的作用 啟動mysql.exe,連線伺服器後,就可以使用sql來操作伺服器了。類似php中操作mysql的語句就是sql語句 sql標準 由國際標準化組織 iso 制定的,對dbms 資料庫管理系統 的統一操作...

資料庫基礎 資料庫設計

一 資料庫生命週期 1.週期 需求分析,概念結構設計,邏輯設計,物理設計,系統實施,系統執行和維護。2.響應的文件 二 正規化 一般資料庫要求規範化到第三正規化,視具體需求重新調整。第一正規化 1nf 強調列的原子性,即列不能分為多列。第二正規化 2nf 關係屬於第一正規化,且每乙個非主屬性完全函式...

資料庫基礎

一.資料庫事物特徵 1.atomic 原子性 不可分割 2.consistency 一致性 參照完整 3.isolation 隔離性 防止併發 4.durability 永續性 永久儲存資料 二.事物和併發 1.併發問題 第一類丟失,髒讀,虛讀,不可重複讀,第二類丟失更新 不可重複讀的特例 2.鎖的...