<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      MySQL中對于事務的具體詳細說明

      [摘要]MySQL事務:1.MySQL事務控制語句(1).開啟事務begin;(2).提交事務commit;(3).回滾事務rollback;(4).設置事務是否自動提交set autocommit = {...

      MySQL事務:

      1.MySQL事務控制語句

      (1).開啟事務

      begin;

      (2).提交事務

      commit;

      (3).回滾事務

      rollback;

      (4).設置事務是否自動提交

      set autocommit = {0   1}; // 0不自動提交,1自動提交

      例如:

      begin;// 開啟事務
      insert into table_name values(內容);
      commit;// 提交事務

      這個就是一個簡單的插入數據的事務

      begin;// 開啟事務
      insert into table_name values(內容);// 后悔了,不想插入數據了
      rollback;// 回滾,取消這次的事務操作

      這個就是一個簡單的插入數據的回滾事務

      2.MySQL事務隔離語句

      查看MySQL的隔離級別

      show variables like 'tx_isolation';

      (1).read-uncommitted(讀取未提交內容)

      臟讀(帶來的問題);

      一個用戶在兩次查詢結果中的內容不相同.

      設置默認隔離級別(設置完成后需要重新登錄):

      set global transaction isolation level read uncommitted;

      兩個用戶同時登錄數據庫,分別開啟事務,一個用戶的事務執行增刪改操作,另一個用戶的事務只進行查詢操作,前者執行完操作,不進行提交,后者就可以看到操作結果,但如果這時候前者進行了事務的回滾,后者這時候查詢就會看到不一樣與上次不一樣的結果(也就是沒有進行操作的結果),這就是臟讀問題.

      (2).read committed(讀取提交內容)

      事務只能看見已經提交事務所做的改變,同一查詢可能返回不同的結果,此級別導致的不可重復讀問題.

      設置默認隔離級別(設置完成后需要重新登錄):

      set global transaction isolation level read committed;

      在一次事務中,看到了兩次不一樣的查詢結果(與臟讀類似).

      (3).repeatable read(可重復讀)

      能確保同一事務的多個實例在并發讀取數據時,會看到同樣的數據行(數據庫的莫爾納隔離級別).

      設置默認隔離級別(設置完成后需要重新登錄):

      set global transaction isolation level repeatable read;

      也就在在一次事務中,無論另一個用戶如何修改數據,在這次事務中查詢到的結果總是相同.

      ***隱式事務提交***:

      alter table users engine = innodb;// 會造成事務的隱式提交

      3.InnoDB鎖機制

      (1).一個表中沒有任何的主鍵和索引,一個事務會鎖住這個表的所有記錄,其他的事務無法進行操作這個表.

      (2).一個表中存在主鍵或者索引,一個事務會鎖住表的他操作的某行數據,不回鎖住整個表,如果其他的事務操作這個表的其他數據,這個時候是不受影響的.需要注意的是這的行級鎖是間隙鎖,也就是說如果你修改的某幾行數據,比如過修改id<10的n行數據.=,這時,id = 11的數據也會被鎖住,這是需要注意的.

      以上就是MySQL中關于事務的具體詳解的詳細內容,更多請關注php中文網其它相關文章!


      學習教程快速掌握從入門到精通的SQL知識。




      日韩精品一区二区三区高清