1. 程式人生 > 其它 >線上介面經常超時,我用執行緒池+ FutureTask解決了,YYDS

線上介面經常超時,我用執行緒池+ FutureTask解決了,YYDS

一、概念

如果一個包含多個步驟的業務操作,被事務管理,那麼這些操作要麼同時成功,要麼同時失敗

 

二、操作

-- 開啟事務: 
start transaction;

-- 回滾:
rollback;

--提交:
commit;

 

三、舉例

CREATE TABLE account (
    id INT PRIMARY KEY AUTO_INCREMENT,
    NAME VARCHAR(10),
    balance DOUBLE
);

-- 新增資料
INSERT INTO account (NAME, balance) VALUES ('zhangsan', 1000), ('
lisi', 1000); SELECT * FROM account; UPDATE account SET balance = 1000; -- 張三給李四轉賬 500 元 -- 0. 開啟事務 START TRANSACTION; -- 1. 張三賬戶 -500 UPDATE account SET balance = balance - 500 WHERE NAME = 'zhangsan'; -- 2. 李四賬戶 +500 -- 出錯了 UPDATE account SET balance = balance + 500 WHERE NAME = 'lisi'; -- 發現執行沒有問題,提交事務 COMMIT;
-- 發現出問題了,回滾事務 ROLLBACK;

 

四、事務提交

1、事務提交的兩種方式

① 自動提交

  • mysql 就是自動提交的
  • 一條DML(增刪改)語句會自動提交一次事務

② 手動提交

  • Oracle 資料庫預設是手動提交事務
  • 需要先開啟事務,再提交

2、修改事務的預設提交方式

檢視事務的預設提交方式:

-- 1 代表自動提交 0 代表手動提交
SELECT @@autocommit;   

修改預設提交方式:

set @@autocommit = 0;

 

五、事務的四大特徵

① 原子性:是不可分割的最小操作單位,要麼同時成功,要麼同時失敗

② 永續性:當事務提交或回滾後,資料庫會持久化的儲存資料

③ 隔離性:多個事務之間,相互獨立

④ 一致性:事務操作前後,資料總量不變