日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

mysql-管理事务

發布時間:2025/3/20 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql-管理事务 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、介紹

  mysql支持幾種基本的數據庫引擎,其中MYSQL的兩種最基本的引擎MyISAM和InnoDB,其中只有InnoDB支持事務管理。

  事務處理:可以用來維護數據庫的完整性,他保證成批的MySQL操作要么完全執行,要么不完全執行。

  事務處理是一種機制,用來管理必須成批執行的MYSQL操作,以保證數據庫不包含不完整的操作結果。

?

二、事務的幾個基本術語

  事務(transaction):指一組SQL語句

  回退(rollback):指撤銷指定SQL語句的過程

  提交(commit):指將未存儲的SQL語句結果寫入數據庫表。

  保留點(savepoint):指事務處理中設置的臨時占位符,你可以對它發布回退(與回退整個事務處理不同)

?

三、控制事務處理

  事務開始:

    start transaction;

  1、使用ROLLBACK:MySQL用這個命令來回退(撤銷)MySQL語句:

    select * from ordertotal;

    start transaction;

    delete from transaction;

    select * from ordertotals;

    rollbaclk;

    select * from ordertotals;

    雖然已經刪除數據,但是我們在提交之前使用了rollback,那么在進行查詢的時候,已經刪除了的數據又恢復了。

    rollback只能在一個事務處理內使用,事務處理用來管理insert,update和delete語句,而select,create,drop等都不能使用事務管理。

  

    2、使用commit:在事務處理中,提交并不會隱含的進行,為進行明確的提交,使用commit語句。

      start transaction;

      delete from orderitems where order_num=20010;

      delete from orders where order_num=20010;

      commit;

?

    3、使用保留點:簡單的rollback和commit語句就可以寫入或撤銷整個事務處理,但是更復雜的事務處理可能需要部分提交或回退。

   為了支持回退部分事務處理,必須能在事務處理塊中合適的位置放置占位符,這樣需要回退,可以回退到某個占位符。

   savepoint delete1;

   rollback to delete1;  

    

    4、更改默認的提交方式

      默認的mysql行為是自動提交所有的改動,但是你可以設置Mysql不自動提交修改,如下:  

      set autocommit=0;

?

三、事務隔離級別

    事務隔離性:是當多個用戶并發訪問數據庫時,比如操作同一張表時,數據庫為每一個用戶開啟的事務,不能被其他事務的操作所干擾,多個并發事務之間要相互隔離。

    1、串行化(Serializable):所有事務一個接一個執行,這樣可以避免幻讀(phantom read),對于基于鎖來實現的并發控制的數據庫來說,串行化要求在執行范圍查詢的時候,需要獲取范圍鎖,如果不是基于鎖實現并發控制的數據庫,則檢查到有違反串行操作的事務時,需回滾該事務。  

    2、可重復讀(repeated read):所有被select獲取的數據都不能被修改,這樣就可以避免一個事務前后讀取不一致的情況。但是沒有辦法控制幻讀,因為這個時候事務不能更改所選的數據,但是可以增加數據,因為強惡意事務沒有范圍鎖。(事務a讀取數據,事務b可以同樣讀取,不可以更改數據,但是可以增加數據)

    3、讀已提交(read commit):被讀取的數據可以被其他事務修改,這樣可能導致不可重復讀,也就是說,事務讀取的時候,獲取讀鎖,但是在讀完之后立即釋放(不需要等事務結束),而寫鎖則是事務提交之后才釋放的,釋放讀鎖之后就可能被其他事務修改數據。改等級也是sql server默認的隔離等級。(事務a讀取數據,事務b不可以讀取數據,事務b可以修改數據)

    4、讀未提交(read uncommitted):最低的隔離等級,允許其他事物看到沒有提交的數據,會導致臟讀。

?

    總結:1、四個級別逐漸增強,每個級別解決一問題;

      ? 2、事務級別越低,性能越差,大多數環境read committed就可以用了。

轉載于:https://www.cnblogs.com/television/p/8370786.html

總結

以上是生活随笔為你收集整理的mysql-管理事务的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。