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

MySQL transaction事務(wù)安全示例講解

 更新時間:2022年06月18日 09:24:14   作者:彭世瑜  
這篇文章主要為大家介紹了MySQL數(shù)據(jù)庫事務(wù)安全transaction的示例講解教程,事務(wù)就是將一組操作封裝成一個執(zhí)行單元,要么一塊執(zhí)行成功,要么一塊失敗,不存在部分執(zhí)行成功的情況。事務(wù)保證了執(zhí)行的穩(wěn)定性,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步

事務(wù)安全 transaction

事務(wù) transaction 訪問可能更新數(shù)據(jù)庫中各種數(shù)據(jù)項的一個程序執(zhí)行單元unit

事務(wù)由事務(wù)開始(begin transaction)和事務(wù)結(jié)束(end transaction)之間執(zhí)行的全體操作組成

事務(wù)基本原理

MySQL允許將事務(wù)統(tǒng)一進行管理(存儲引擎innodb),將用戶所做的操作,暫時保存起來,不直接放到數(shù)據(jù)表(更新),等到用戶確認(rèn)結(jié)果之后再進行操作

事務(wù)通常是自動提交,也可以手動提交

自動事務(wù)

當(dāng)客戶端發(fā)送一條SQL指令(寫操作,增刪改)給服務(wù)器的時候,服務(wù)器在執(zhí)行后,不用等待用戶反饋結(jié)果,會自動將結(jié)果同步到數(shù)據(jù)表

兩個客戶端,一個客戶端執(zhí)行SQL指令,另一個客戶端查看執(zhí)行結(jié)果

通過變量控制自動事務(wù)

mysql> show variables like 'autocommit';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit    | ON    |
+---------------+-------+
-- 關(guān)閉自動事務(wù)
set autocommit = off;

mysql> show variables like 'autocommit';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit    | OFF   |
+---------------+-------+

關(guān)閉自動事務(wù)之后,一個客戶端修改數(shù)據(jù),另個一客戶端看不到修改的結(jié)果

一旦關(guān)閉自動事務(wù),就需要用戶提供是否同步的命令

  • commit 提交 (同步到數(shù)據(jù)表,事務(wù)會被清空)
  • rollback 回滾 (清空之前的操作,不要了)
-- 客戶端A關(guān)閉自動事務(wù)后操作數(shù)據(jù)
mysql> select * from my_class;
+----+--------+
| id | name   |
+----+--------+
|  1 | 一班   |
|  3 | 三班   |
+----+--------+
2 rows in set (0.01 sec)
mysql> insert into my_class (name) values('四班');
Query OK, 1 row affected (0.00 sec)

mysql> select * from my_class;
+----+--------+
| id | name   |
+----+--------+
|  1 | 一班   |
|  3 | 三班   |
|  5 | 四班   |
+----+--------+
3 rows in set (0.00 sec)
-- 客戶端B看不到新增的 四班數(shù)據(jù), 
mysql> select * from my_class;
+----+--------+
| id | name   |
+----+--------+
|  1 | 一班   |
|  3 | 三班   |
+----+--------+
2 rows in set (0.00 sec)

客戶端A執(zhí)行commit 提交事務(wù)之后,客戶端B就可以看到新增的數(shù)據(jù)了

通常不需要關(guān)閉自動事務(wù),需要使用事務(wù)的時候,使用手動事務(wù)

手動事務(wù)

開始、過程、結(jié)束,都要用戶手動發(fā)送事務(wù)操作指令來實現(xiàn)

手動事務(wù)指令

-- 1、開啟事務(wù),從這條語句開始,后面所有的語句都不會直接寫入到數(shù)據(jù)表,保存在事務(wù)日志中
start transaction 
-- 2、事務(wù)處理,多個指令構(gòu)成
-- 3、事務(wù)提交,結(jié)束事務(wù)
commit / rollback 

事務(wù)的使用

mysql> select * from my_class;
+----+--------+
| id | name   |
+----+--------+
|  1 | 一班   |
|  3 | 三班   |
|  5 | 四班   |
+----+--------+
3 rows in set (0.04 sec)
mysql> select * from my_student;
+----+--------+----------+------+--------+
| id | name   | class_id | age  | gender |
+----+--------+----------+------+--------+
|  1 | 劉備   |        1 |   18 |      2 |
|  2 | 李四   |        1 |   19 |      1 |
|  3 | 王五   |     NULL |   20 |      2 |
|  4 | 張飛   |     NULL |   21 |      1 |
|  5 | 關(guān)羽   |     NULL |   22 |      2 |
|  6 | 曹操   |        1 |   20 |   NULL |
+----+--------+----------+------+--------+
6 rows in set (0.00 sec)
-- 開啟事務(wù)
start transaction;
-- 執(zhí)行事務(wù)操作,多個修改操作
insert into my_class (name)values ('六班');
insert into my_student (name, class_id, age, gender)values ('司馬懿', 6, 26, 1);
-- 提交事務(wù)
commit;
-- 或者回滾操作,所有數(shù)據(jù)無效清空
rollback;

回滾點

當(dāng)有一系列事務(wù)操作是,而其中的步驟如果成功了,沒有必要重新來過,可以在某個點,設(shè)置一個記號(回滾點),然后如果后面有失敗,那么可以回到這個記號的位置

-- 增加回滾點
savepoint 回滾點名字;
-- 回到回滾點 清空之后所有操作
rollback to 回滾點名字;

一個事務(wù)處理過程中,如果有很多步驟,可以設(shè)置多個回滾點

事務(wù)的特點

ACID:

  • 原子性 automicity 一個事務(wù)是不可分割的工作單元,要么都做,要么都不做
  • 一致性 consistency 事務(wù)必須是使數(shù)據(jù)庫從一個一致性狀態(tài)變到另一個一致性狀態(tài)
  • 隔離性 isolation 一個事務(wù)的執(zhí)行,不能被其他事務(wù)干擾,操作數(shù)據(jù)的時候會鎖住該條數(shù)據(jù)
  • 持久性 durability 一個事務(wù)一旦提交,他對數(shù)據(jù)庫中的數(shù)據(jù)改變就是永久的

如果條件中使用了索引,會隔離一條記錄;反之,通過全表檢索,會鎖定整個表

到此這篇關(guān)于MySQL transaction事務(wù)安全示例講解 的文章就介紹到這了,更多相關(guān)MySQL transaction 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL 5.7.17 免安裝版本的安裝配置

    MySQL 5.7.17 免安裝版本的安裝配置

    這篇文章主要為大家詳細(xì)介紹了MySQL 5.7.17 免安裝版本的安裝配置教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • 一文讀懂navicat for mysql基礎(chǔ)知識

    一文讀懂navicat for mysql基礎(chǔ)知識

    Navicat是一個強大的MySQL數(shù)據(jù)庫管理和開發(fā)工具。Navicat為專業(yè)開發(fā)者提供了一套強大的足夠尖端的工具,但它對于新用戶仍然是易于學(xué)習(xí)。本文重點給大家介紹navicat for mysql基礎(chǔ)知識,感興趣的朋友一起學(xué)習(xí)吧
    2021-05-05
  • MySQL數(shù)據(jù)庫學(xué)習(xí)之分組函數(shù)詳解

    MySQL數(shù)據(jù)庫學(xué)習(xí)之分組函數(shù)詳解

    這篇文章主要為大家詳細(xì)介紹一下MySQL數(shù)據(jù)庫中分組函數(shù)的使用,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)MySQL有一定幫助,需要的可以參考一下
    2022-07-07
  • MySQL數(shù)據(jù)表使用的SQL語句整理

    MySQL數(shù)據(jù)表使用的SQL語句整理

    這篇文章主要介紹了MySQL數(shù)據(jù)表使用的SQL語句整理,文章基于MySQL的相關(guān)資料展開舉例說明,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-05-05
  • MySQL中聚簇索引與非聚簇索引的實現(xiàn)

    MySQL中聚簇索引與非聚簇索引的實現(xiàn)

    MySQL數(shù)據(jù)庫中,聚簇索引和非聚簇索引是提高查詢效率的關(guān)鍵,聚簇索引決定數(shù)據(jù)的物理存儲順序,通常由主鍵或UNIQUE索引構(gòu)成,非聚簇索引則通過指針定位數(shù)據(jù)行,適合訪問數(shù)據(jù)子集,下面就來具體介紹一下,感興趣的可以了解一下
    2024-09-09
  • MySQL8.0.26安裝與卸載的完整步驟記錄

    MySQL8.0.26安裝與卸載的完整步驟記錄

    這篇文章主要給大家介紹了MySQL8.0.26安裝與卸載的完整步驟,文中通過圖文以及示例代碼介紹非常詳細(xì),對于在windows下安裝msql非常有幫助,需要的朋友可以參考下
    2021-07-07
  • 解析遠(yuǎn)程連接管理其他機器上的MYSQL數(shù)據(jù)庫

    解析遠(yuǎn)程連接管理其他機器上的MYSQL數(shù)據(jù)庫

    本篇文章是對遠(yuǎn)程連接管理其他機器上的MYSQL數(shù)據(jù)庫進行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • 一文搞懂Mysql中的共享鎖、排他鎖、悲觀鎖、樂觀鎖及使用場景

    一文搞懂Mysql中的共享鎖、排他鎖、悲觀鎖、樂觀鎖及使用場景

    剛開始學(xué)習(xí)MySQL中鎖的時候,網(wǎng)上一查出來一堆,什么表鎖、行鎖、讀鎖、寫鎖、悲觀鎖、樂觀鎖等等等,直接整個人就懵了,下面這篇文章主要給大家介紹了關(guān)于Mysql中共享鎖、排他鎖、悲觀鎖、樂觀鎖及使用場景的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • redhat7.1 安裝mysql 5.7.10步驟詳解(圖文詳解)

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

    這篇文章主要介紹了redhat7.1 安裝mysql 5.7.10的步驟詳細(xì)介紹本文圖文并茂給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2016-11-11
  • mysql(5.6及以下)解析json的方法實例詳解

    mysql(5.6及以下)解析json的方法實例詳解

    這篇文章主要介紹了mysql(5.6及以下)解析json的方法,本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-07-07

最新評論

铜川市| 额济纳旗| 揭阳市| 江孜县| 定陶县| 马关县| 剑河县| 揭西县| 濮阳市| 松阳县| 承德县| 高雄县| 石渠县| 蕉岭县| 彝良县| 陆良县| 平乐县| 沙坪坝区| 增城市| 淮北市| 斗六市| 南乐县| 阿城市| 博乐市| 宁化县| 张掖市| 德庆县| 盖州市| 什邡市| 河北区| 镇平县| 凉山| 滨州市| 临漳县| 湘乡市| 镇原县| 右玉县| 监利县| 卢湾区| 长泰县| 大渡口区|