1. 程式人生 > 其它 >js中的函式防抖和節流

js中的函式防抖和節流

技術標籤:資料分析師資料分析mysql

MySQL的事務管理

1 概述

TRANSACTION 是一種保護機制

在使用事務和事務處理時,有幾個關鍵詞彙反覆出現。下面是關於事務處理需要知道的幾個術語:

  • 事務(transaction)指一組SQL語句
  • 回退(rollback)指撤銷指定SQL語句的過程
  • 提交(commit)指將未儲存的SQL語句結果寫入資料庫表
  • 保留點(savepoint)指事務處理中設定的臨時佔位符(place_x0002_holder),你可以對它釋出回退(與回退整個事務處理不同)

事務處理是一種機制,用來管理必須成批執行的MySQL操作,以保證資料庫不包含不完整的操作結果。利用事務處理,可以保證一組操作不會中途停止,它們或者作為整體執行,或者完全不執行(除非明確指示)。
如果沒有錯誤發生,整組語句提交給(寫到)資料庫表。如果發生錯誤,則進行回退(撤銷)以恢復資料庫到某個已知且安全的狀態。

1.1 事務處理的例子

比如:
A往ATM存入1000¥,此時A-1000¥,假設此時銀行收到錢後DB出錯沒有記錄A的賬戶+1000¥,則A的資產-1000¥,資料庫出錯。而在存在 Rollback的情況下,銀行沒有正確記錄A的賬戶+1000¥時,ATM會自動退出這1000¥。

1.2 事務處理的特點

用來維護資料庫的完整性,保證成批 SQL操作的成功,如果有問題則全部失敗

1.3 事務處理的前提

innodb支援(當前 SQL預設為innodb)
myisam不支援

1.4 事務處理的術語

transaction 事務處理
rollback 回滾
commit 提交
savepoint 存檔點

2 MySQL事務管理的使用

2.1 建立一個演示表

start TRANSACTION 就像是在正常遊戲存檔之外,開了一個副本進行資料處理,這樣可以保證原始資料的安全(開啟了保護機制)。

2.2 ROLLBACK 回滾資料(備份-刪除-恢復)

drop table customers2;
create table customers2 as select * from customers; select * from customers2; # 看看啥情況 start TRANSACTION; # 開啟保護機制! delete from customers2; # 刪掉資料 select * from customers2; # 看看啥情況 rollback; # 回滾結果,恢復 customer2 select * from customers2; # 又恢復了

2.3 COMMIT 提交資料(備份-確認修改)

drop table customers2;
create table customers2 as select * from customers;
select * from customers2;
start TRANSACTION;			# 開啟保護機制!
delete from customers2;
select * from customers2;
commit;						# 一旦確認修改,就無法恢復了!

2.4 SAVEPOINT

drop table customers2;
create table customers2 as select * from customers;
select * from customers2;

start TRANSACTION;
delete from customers2 where cust_id = '10001';
select * from customers2;
savepoint x1;
delete from customers2 where cust_id = '10002';
select * from customers2;
ROLLBACK TO x1;
	
select * from customers2;

在這裡插入圖片描述

注:
TRANSACTION 的排隊處理
如果兩個使用者A和B同時進行 TRANSACTION操作,A先進行,B後進行
當A操作沒有完成(COMMIT)的時候,B進行操作,則B會卡在這個位置
直到A的操作完成,B才能繼續操作(A結束的瞬間B的程式自動執行)