什麼是事務?
事務是資料庫併發控制的基本單位
事務可以看作是一系列的sql語句集合
事務必須要麼全部執行成功,要麼全部執行失敗(回滾)
事務的acid特性
acid是事務的四個基本特性
原子性(atomicity):乙個事務中所有操作全部完成或者失敗
一致性(consistency):事務開始和結束之後資料完整性沒有被破壞
隔離性(isolation):允許多個事務同時對資料庫修改和讀寫
永續性(durability):事務結束之後,修改是永久的不會丟失
事務的併發控制可能產生哪些問題
如果不多事務進行併發控制,可能會產生四種異常情況
幻讀:乙個事務第二次查出現第一次沒有的結果
非重複讀:乙個事務重複讀兩次得到不同的結果
髒讀:乙個事務讀取到另外一哥事務沒有提交的修改
丟失修改:併發寫入造成其中一些修改丟失
四種事務隔離級別
為了解決併發控制異常,定義了四種事務隔離級別
讀未提交:別的事務可以讀取到未提交改變
讀已提交:只能讀取已經提交的資料
可重複讀:同乙個事務先後查詢結果一樣
序列化:事務完全序列化的執行,隔離級別最高,執行效率最低
如何解決高併發場景下的插入重複
高併發場景下,寫入資料庫會有資料重複問題
使用資料庫的唯一索引
使用佇列非同步寫入
使用redis實現分布式鎖
什麼是樂觀鎖,什麼是悲觀鎖
悲觀鎖是先獲取鎖再進行操作,一鎖二查三更新select for update
悲觀鎖先修改,更新的時候發現資料已經變了就回滾(check and set)
樂觀鎖一把通過版本號或者時間戳實現
使用需要根據響應速度,衝突頻率,重試代價來判斷使用哪一種鎖
資料庫 mysql 基礎
1.建立 create database 資料庫名 例如建立名為d testdb的資料庫 mysql create database d testdb 2.修改 alter database 資料庫名 character set 字符集名 例如修改字符集 set utf8 3.刪除 drop dat...
mysql資料庫基礎
乙個表不能有多個主鍵?解釋 不能,乙個表中有且只能有乙個主鍵,大事兩列 字段 可以作為乙個主鍵 例如 mysql create table t name varchar 5 addr varchar 28 age int 5 primary key name,addr 為什麼要設定主鍵?資料庫儲存的...
MySql資料庫(基礎)
學習資料庫,我覺得關鍵在於記住相關的英文單詞。把自己比較陌生的寫下來,便於記憶 查詢表結構 desc 表名 修改表頭欄位都是 alter table.開頭 給建立好的表新增位址字段,例如給學生表新增gender varchar 2 字段 alter table student add column ...