mysql資料庫基礎

2021-09-28 00:10:05 字數 911 閱讀 3996

什麼是事務?

事務是資料庫併發控制的基本單位

事務可以看作是一系列的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 ...