面經中刷到的問題:
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.鎖的...