【2019春招准备:10.数据库综合】
【內容】
- curd
- acid
- 并發會帶來的問題
- 多表查詢(內連接,外連接)
【補充】
========================================================
1. curd
增刪改查
2. acid
一個支持事務(Transaction)的數據庫具備的特性
| A | Atomicity | 被事務包裹的操作是不可分割的 |
| C | Consistency | 數據庫總量不應該在提交操作前后發生變化(宏觀的抽象的性質) |
| I | Isolation | 多個事務在并發時,解決如“臟讀“等”并發性問題的能力 |
| D | Durability | 保證數據庫啊哦做之后必須立即寫入持久化介質(如硬盤) |
3. 并發問題與隔離機制
√:該問題可能出現
×:該問題不出現
| Read Uncommitted | √ | √ | √ | 一個事務可以讀取另一個事務并未提交的結果(隔離性最低) |
| Read Committed | × | √ | √ | 一個事務提交后另一個事務才能讀取到同一個數據的更新結果(大部分數據庫的default) |
| Repeatable Read | × | × | √ | 在該事務的時間內,無論其他事物的對其修改與否,讀取結果都是完全相同的(mysql的default) |
| Serializable | × | × | × | 所有事物的操作必須依次執行(隔離性最高,但是性能最差,并發很低) |
| 解釋 | 其他事物看見了該事物沒有提交的結果(如果該事物回滾,對方讀取的叫做臟數據) | 在整個事物過程中,多次讀取數據,其結果不一樣(數據值) | 在整個事物過程中,多次查詢結果不一樣(sql的結果) |
4. 多表查詢
交叉連接(笛卡爾積,x不推薦)
內連接(隱式內連接,顯示內連接)
外連接(左外連接,右外連接)
5. mysql索引 && b+
墻裂推薦參考:https://yq.aliyun.com/articles/9280
b+樹是B樹和索引順序訪問方法(ISAM)得到的
b+樹的查找(IO的次數=b+樹的高度)
【MyISAM && InnoDB】
都是數據庫引擎
MyISAM傳統類型
InnoDB 改進版本,主要的區別是支持ACID的事務
| 事務的處理 | 非事務安全型的 | 事務安全型 |
| 鎖機制 | 表級別的鎖 | 行級別的鎖 |
| 擅長的操作 | select | insert, update |
| 緩存 | 索引塊 | 數據塊 |
| 尋址 | 文件偏移量 | 文件塊,文件行 |
- 除了上面的插入操作會做拆分
B+樹實際上在拆分前首先檢查,進行旋轉操作,保證樹盡量平衡,不會有一個分支特別冗雜。 - B+樹的刪除操作:使用填充因子控制刪除(>50%)
索引=邏輯結構+物理地址
B+樹的邏輯結構,保證在lognN的時間內找到需要的值;每一個節點有一個對應的物理地址的指針
第一,通過創建唯一性索引,可以保證數據庫表中每一行數據的唯一性。
第二,可以大大加快數據的檢索速度,這也是創建索引的最主要的原因。
第三,可以加速表和表之間的連接,特別是在實現數據的參考完整性方面特別有意義。
第四,在使用分組和排序子句進行數據檢索時,同樣可以顯著減少查詢中分組和排序的時間。
第五,通過使用索引,可以在查詢的過程中,使用優化隱藏器,提高系統的性能。
6. B樹 B+樹的優勢
B樹
根節點至少兩個子節點
階:所有節點中最多的孩子的個數
比如一個節點最多3個數字的23樹,如果按照大小,某個節點的數據到達4個就會分裂。中間的提升到父親節點上去。若父親節點也是4個,遞歸分裂。
B+樹
所有的葉節點構成有序鏈表,
B+樹的非葉子結點只包含導航信息,不包含實際的值
B+ 樹的優點在于:
由于B+樹在內部節點上不包含數據信息,因此在內存頁中能夠存放更多的key。 數據存放的更加緊密,具有更好的空間局部性。因此訪問葉子節點上關聯的數據也具有更好的緩存命中率。
B+樹的葉子結點都是相鏈的,因此對整棵樹的便利只需要一次線性遍歷葉子結點即可。而且由于數據順序排列并且相連,所以便于區間查找和搜索。而B樹則需要進行每一層的遞歸遍歷。相鄰的元素可能在內存中不相鄰,所以緩存命中性沒有B+樹好。
總結
以上是生活随笔為你收集整理的【2019春招准备:10.数据库综合】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: COMSOL 5.2安装教程(自用)
- 下一篇: Vue3实现简易的音乐播放器组件