事務
什麼是事務
- 邏輯上的一組操作,要麼執行,要麼不執行
事務的特徵
- ACID,原子性、一致性、隔離性、持久性
- 原子性:最小執行單位,不允許分割
- 一致性:執行前後,數據保持一致
- 隔離性:併發訪問時,多個事務之間應該隔離
- 造成對數據庫的影響是持久的
併發事務帶來的問題
- 髒讀、幻讀、不可重複讀、更新丟失
- 髒讀:事務讀取未被提交的數據
- 幻讀:事務讀取時發現多了或少了數據,發生在另一個事務對錶進行insert或者update
- 不可重複讀:事務A讀取了數據,事務B修改了該數據,事務A不能讀取同一數據
- 更新丟失:數據庫僅保存最後一個事務修改的數據
事務隔離級別
- 讀未提交、讀已提交、可重複讀、可串行化
\ | 髒讀 | 不可重複讀 | 幻讀 |
---|---|---|---|
讀未提交 | 有 | 有 | 有 |
讀已提交 | 無 | 有 | 有 |
可重複讀 | 無 | 無 | 有 |
可串行化 | 無 | 無 | 無 |
數據庫引擎
MyISAM與InnoDB的區別
- 前者不支持事務和行級鎖,只支持表級鎖;後者支持事務、行級鎖、表級鎖
- 前者崩潰後無法安全恢復後者可以安全恢復
- 前者不支持外鍵,後者支持
- 前者葉節點存放的是數據地址,後者葉節點存放的是數據內容,可以是整行數據,也可以是主鍵
- 前者支持非聚集索引,後者支持聚集索引
索引
什麼是索引
- 一種數據結構,能夠幫助我們快速檢索數據庫中的數據
索引的類型
- 普通索引、唯一索引、主鍵索引、全文索引、多列索引
Hash索引與B+索引的區別
- Hash索引不支持範圍查詢、順序查詢,而B+樹支持
- 在衝突不大的情況下,Hash索引的檢索效率高於B+樹
- Mysql中InnoDB引擎默認使用B+樹
MySQL面試知識點
區分操作
Delete、truncate、drop
- Delete刪除數據,不釋放空間、不刪除表結構
- Truncate刪除數據、釋放空間、不刪除表結構
- Drop刪除數據、釋放空間、刪除表結構