Mysql筆記(三) Mysql的事務

2021-09-24 20:53:33 字數 1334 閱讀 3535

一、資料庫事務:

1、資料庫事務(簡稱:事務)

是資料庫管理系統執行過程中的乙個邏輯單位,由乙個有限的資料庫操作序列構成。簡單而言就是要保證一組資料可以操作,要麼全部成功,要嘛全部失敗。

2、資料庫事務的特性

資料庫事務擁有以下四個特性,習慣上被稱之為acid特性。

原子性(atomicity):事務作為乙個整體被執行,包含在其中的對資料庫的操作要麼全部被執行,要麼都不執行。

一致性(consistency):事務應確保資料庫的狀態從乙個一致狀態轉變為另乙個一致狀態。一致狀態的含義是資料庫中的資料應滿足完整性約束。

隔離性(isolation):多個事務併發執行時,乙個事務的執行不應影響其他事務的執行。

永續性(durability):已被提交的事務對資料庫的修改應該永久儲存在資料庫中。

3、事務的隔離級別

資料庫事務的隔離性是為了解決 當資料庫上有多個事務同時執行的時候,可能出現髒讀、不可重複讀、幻讀等問題,於是就有了隔離級別的概念。

**讀未提交(read-uncommitted): 乙個事務還未提交時,它做的變更就能被別的事務看到。

讀提交(read-committed):乙個事務提交後,它做的變更才能被別的事務看到。

可重複讀(repeatable read):乙個事務在執行過程中看到的資料,總是跟這個事務在啟動時看到的資料時一致的。

序列化(serializable):對於同一行資料,寫 會加寫鎖,讀會加讀鎖。當出現讀寫鎖衝突的時候,後訪問的事務必須等前乙個事務執行完成,才能繼續執行。

為了更好的了解事務隔離級別,我們可以根據下面的例子來加深:

ps:mysql查詢與設定事務隔離級別:

將啟動引數transaction-isolation 的值設定為 read-committed;

查詢語句:

mysql> show variables like 'transaction-isolation';
4、事務的啟動方式

1、顯示啟動事務語句,begin或start transaction,後面提交配套 commit,回滾 rollback;

2 set autocommit=0,關閉自動提交。

MySQL的那些事

我原本是 android 開發,後來轉了專案經理,在專案開發的過程中發現一些跟 mysql 相關的東西,就想著記錄下來,以下均為個人看法,歡迎溝通交流。我們專案資料庫一直用的都是 mysql,剛上線根本沒加索引,也沒什麼感覺。可是隨著使用者量的暴增,發現很多查詢操作都很慢,我們一直去檢查程式的流程是...

Mysql學習筆記(三)

所謂的子查詢,就是在 乙個查詢中巢狀了其他的若干查詢 即在乙個select查詢語句中的where和from子句中包含另乙個select查詢語句。在查詢語句中,外層的select查詢語句稱為 主查詢 where子句中的select查詢語句被稱為 子查詢 也稱巢狀查詢。列子查詢是指查詢結果返回的結果集是...

MySQL學習筆記(三)

一 修改提示操作符的命令 prompt 用法 prompt 後面接入 u 使用者名稱 h 伺服器的名字 d 當前開啟的資料庫 問題 但是這個命令有個問題是,當你在設定了你的 提示符的格式後,你退出了資料庫,等你下次再進來資料庫的時候提示符又變為了系統預設的,如何才能夠一次設定好,就不會變了呢?解決 ...