最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySql事務(wù)原理介紹及特性

 更新時間:2022年09月16日 14:06:39   作者:在人間負(fù)債^  
事務(wù)就是一組DML語句組成,這些語句在邏輯上存在相關(guān)性,這一組DML語句要么全部成功,要么全部失敗,是一個整體。MySQL提供一種機制,保證我們達(dá)到這樣的效果。事務(wù)還規(guī)定不同的客戶端看到的數(shù)據(jù)是不相同的

1. 什么是事務(wù)

一個事務(wù)就是一個完整的業(yè)務(wù)邏輯。

什么是一個完整的業(yè)務(wù)邏輯?

假設(shè)轉(zhuǎn)賬,從A賬戶向B賬戶中轉(zhuǎn)賬10000.

將A賬戶的錢減去10000 ( update語句)

將B賬戶的錢加上10000 ( update語句)

這就是一個完整的業(yè)務(wù)邏輯。

以_上的操作是-一個最小的工作單元,要么同時成功,要么同時失敗,不可再分。

這兩個update語句要求必須同時成功或者同時失敗,這樣才能保證錢是正確的。

僅有 DML (insert、delete、update)才會有事務(wù)一說,其他語句與事務(wù)無關(guān)?。?!

本質(zhì)上說,一個事務(wù)其實就是多條 DML 語句同時成功,或者同時失?。。?!

2. 事務(wù)是如何做到同時成功失敗

InnoDB 存儲引擎:提供了一組用來記錄事務(wù)性活動的日志文件

在事務(wù)的執(zhí)行的過程中,每一條 DML 的操作都會記錄到 “事務(wù)性活動的日志文件” 中。

在事務(wù)的執(zhí)行過程中,我們可以提交事務(wù),也可以回滾事務(wù)。

提交事務(wù)?

清空事務(wù)性活動的日志文件,將數(shù)據(jù)全部徹底持久化到數(shù)據(jù)庫表中。

提交事務(wù)標(biāo)志著,事務(wù)的結(jié)束。并且是一種全部成功的結(jié)束。

回滾事務(wù)?

將之前所有的 DML 操作全部撤銷,并且清空事務(wù)性活動的日志文件。

回滾事務(wù)標(biāo)志著,事務(wù)的結(jié)束,并且是一種全部失敗的結(jié)束。

3. 如何提交回滾事務(wù)

提交事務(wù):commit;

回滾事務(wù):rollback;

事務(wù)對應(yīng)的英語單詞是:transaction

1. mysql 中默認(rèn)的事務(wù)行為是怎樣的

mysql 默認(rèn)情況下是支持自動提交事務(wù)的。(自動提交)

什么是自動提交?

每執(zhí)行一次 DML 語句,則提交一次。

如何將 mysql 的自動提交機制關(guān)閉呢?

mysql> start transaction;

2. 回滾事務(wù)

回滾只能回滾到上一次的提交點

mysql> start transaction;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from dept_bak;
Empty set (0.00 sec)
mysql> insert into dept_bak values(10, 'abc', 'beijing');
Query OK, 1 row affected (0.00 sec)
mysql> insert into dept_bak values(10, 'abc', 'beijing');
Query OK, 1 row affected (0.00 sec)
mysql> select * from dept_bak;
+--------+------+---------+
| deptno | name | loc     |
+--------+------+---------+
|     10 | abc  | beijing |
|     10 | abc  | beijing |
+--------+------+---------+
2 rows in set (0.00 sec)
mysql> rollback;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from dept_bak;
Empty set (0.00 sec)

3. 提交事務(wù)

mysql> select * from dept_bak;
Empty set (0.00 sec)
mysql> insert into dept_bak values(10, 'aaa', 'bbb');
Query OK, 1 row affected (0.01 sec)
mysql> insert into dept_bak values(10, 'aaa', 'bbb');
Query OK, 1 row affected (0.00 sec)
mysql> select * from dept_bak;
+--------+------+------+
| deptno | name | loc  |
+--------+------+------+
|     10 | aaa  | bbb  |
|     10 | aaa  | bbb  |
+--------+------+------+
2 rows in set (0.00 sec)
mysql> commit;
Query OK, 0 rows affected (0.00 sec)
mysql> rollback;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from dept_bak;
+--------+------+------+
| deptno | name | loc  |
+--------+------+------+
|     10 | aaa  | bbb  |
|     10 | aaa  | bbb  |
+--------+------+------+
2 rows in set (0.00 sec)

4. 事務(wù)的4個特性

A:原子性

說明事務(wù)是最小的工作單元。不可再分。

C:一致性

所有事務(wù)要求,在同一個事務(wù)當(dāng)中,所有操作必須同時成功,或同時失敗,以保證數(shù)據(jù)的一致性。

I:隔離性

A事務(wù)和B事務(wù)之間具有一定的隔離性。

D:持久性

事務(wù)最終結(jié)束的一個保障。事務(wù)提交,就相當(dāng)于將沒有保存到硬盤上的數(shù)據(jù)保存到硬盤上。

5. 事務(wù)的隔離性

事務(wù)隔離性的4個級別:

1. 讀未提交:read uncommitted(最低隔離級別)

事務(wù) A 可以讀取到事務(wù) B 未提交的數(shù)據(jù)

存在的問題:臟讀現(xiàn)象(Dirty Read)

2. 讀已提交:read committed

事務(wù) A 只能讀取到事務(wù) B 提交之后的數(shù)據(jù)

這種隔離級別解決了臟讀現(xiàn)象!??!

存在的問題:不可重復(fù)讀取數(shù)據(jù)。

不可讀取數(shù)據(jù):

在事務(wù)開啟之后,第一次讀到的數(shù)據(jù)是3條,當(dāng)前事務(wù)還沒有結(jié)束,可能第二次再讀取的時候,讀到的數(shù)據(jù)是4條,3不等于4,稱為不可重復(fù)讀取。

3. 可重復(fù)讀:repeatble read

事務(wù) A 開啟之后,不管是多久,每一次在事務(wù)A中讀取的數(shù)據(jù)都是一致的。即使事務(wù)B將數(shù)據(jù)已經(jīng)修改,并且提交了,事務(wù)A讀取到的數(shù)據(jù)還是沒有發(fā)生改變,這就是可重復(fù)讀。

該隔離級別解決了不可重復(fù)讀。

存在的問題:幻影讀。

可重復(fù)讀,事務(wù)提交之后,只有事務(wù)不結(jié)束,讀到的數(shù)據(jù)永遠(yuǎn)都是事務(wù)剛開始時的數(shù)據(jù)。

mysql 中默認(rèn)的事務(wù)隔離級別?。。。?/p>

4. 序列化/串行化:serializable(最高隔離級別)

這是最高隔離級別,效率最低。解決了所有問題。

這種隔離級別表示事務(wù)排隊,不能并發(fā)!

每一次讀取到數(shù)據(jù)都是最真實的,并且效率是最低的。

到此這篇關(guān)于MySql事務(wù)原理介紹及特性的文章就介紹到這了,更多相關(guān)MySql事務(wù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL存儲過程及常用函數(shù)代碼解析

    MySQL存儲過程及常用函數(shù)代碼解析

    這篇文章主要介紹了MySQL存儲過程及常用函數(shù)代碼解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • Mysql中varchar長度設(shè)置方法

    Mysql中varchar長度設(shè)置方法

    這篇文章主要介紹了Mysql中varchar長度設(shè)置方法的相關(guān)資料,本文還給大家?guī)砹藇alar類型的變化及char()和varchar()的區(qū)別介紹,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-07-07
  • MYSQL中統(tǒng)計查詢結(jié)果總行數(shù)的便捷方法省去count(*)

    MYSQL中統(tǒng)計查詢結(jié)果總行數(shù)的便捷方法省去count(*)

    查看手冊后發(fā)現(xiàn)SQL_CALC_FOUND_ROWS關(guān)鍵詞的作用是在查詢時統(tǒng)計滿足過濾條件后的結(jié)果的總數(shù)(不受 Limit 的限制)具體使用如下,感興趣的朋友可以學(xué)習(xí)下
    2013-07-07
  • MySQL開啟配置binlog及通過binlog恢復(fù)數(shù)據(jù)步驟詳析

    MySQL開啟配置binlog及通過binlog恢復(fù)數(shù)據(jù)步驟詳析

    這篇文章主要給大家介紹了關(guān)于MySQL開啟配置binlog及通過binlog恢復(fù)數(shù)據(jù)的相關(guān)資料,binlog是MySQL最重要的日志,binlog是二進(jìn)制日志,它記錄了所有的DDL和DML語句,除了查詢語句select、show等,需要的朋友可以參考下
    2024-06-06
  • MYSQL的REPLACE和ON DUPLICATE KEY UPDATE語句介紹解決問題實例

    MYSQL的REPLACE和ON DUPLICATE KEY UPDATE語句介紹解決問題實例

    這篇文章主要介紹了MYSQL的REPLACE和ON DUPLICATE KEY UPDATE語句介紹解決問題實例,需要的朋友可以參考下
    2014-04-04
  • MySQL中通過EXPLAIN如何分析SQL的執(zhí)行計劃詳解

    MySQL中通過EXPLAIN如何分析SQL的執(zhí)行計劃詳解

    這篇文章主要給大家介紹了關(guān)于MySQL中通過EXPLAIN如何分析SQL的執(zhí)行計劃的相關(guān)資料,文中通過圖文以及示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的安康學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • redhat7.1 安裝mysql 5.7.10步驟詳解(圖文詳解)

    redhat7.1 安裝mysql 5.7.10步驟詳解(圖文詳解)

    這篇文章主要介紹了redhat7.1 安裝mysql 5.7.10的步驟詳細(xì)介紹本文圖文并茂給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2016-11-11
  • mysql的數(shù)據(jù)壓縮性能對比詳情

    mysql的數(shù)據(jù)壓縮性能對比詳情

    這篇文章主要介紹了mysql的數(shù)據(jù)壓縮性能對比,今天對這兩種方式分別進(jìn)行了測試,對比了二者在磁盤占用以及查詢性能方面各自的優(yōu)劣,下面我們大家一起進(jìn)入文章了解詳細(xì)內(nèi)容,需要的朋友也可以參考一下
    2021-11-11
  • 關(guān)于MySQL外鍵的簡單學(xué)習(xí)教程

    關(guān)于MySQL外鍵的簡單學(xué)習(xí)教程

    這篇文章主要介紹了關(guān)于MySQL外鍵的簡單學(xué)習(xí)教程,對InnoDB引擎下的外鍵約束做了簡潔的講解,需要的朋友可以參考下
    2015-11-11
  • Mysql使用全文索引(FullText?index)的實例代碼

    Mysql使用全文索引(FullText?index)的實例代碼

    使用索引時數(shù)據(jù)庫性能優(yōu)化的必備技能之一,下面這篇文章主要給大家介紹了關(guān)于Mysql使用全文索引(FullText?index)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04

最新評論

太谷县| 阜城县| 酉阳| 贵港市| 疏勒县| 巴中市| 漠河县| 博客| 依安县| 玛纳斯县| 木里| 湘阴县| 正安县| 清河县| 辉县市| 任丘市| 二连浩特市| 施甸县| 拜泉县| 淮南市| 永济市| 霍邱县| 南昌县| 锦州市| 双鸭山市| 吴忠市| 葵青区| 新龙县| 勐海县| 香格里拉县| 平塘县| 黄梅县| 镇平县| 遵化市| 林周县| 营口市| 临沧市| 滦平县| 南乐县| 楚雄市| 隆德县|