當前位置:首頁 » 操作系統 » 資料庫事務提交

資料庫事務提交

發布時間: 2022-06-23 01:06:09

① 如何查看和修改Mysql資料庫的事務提交方式

查看 MySQL 客戶端的事務提交方式命令:select @@autocommit;
修改 MySQL 客戶端的事務提交方式為手動提交命令:set @@autocommit = 0;
(註:0 表示手動提交,即使用 MySQL 客戶端執行 SQL 命令後必須使用commit命令執行事務,否則所執行的 SQL 命令無效,如果想撤銷事務則使用 rollback 命令。1 表示自動提交,即在 MySQL 客戶端不在需要手動執行 commit 命令。)
MySQL 在自動提交模式下,每個 SQL 語句都是一個獨立的事務。
注意:
1、手動設置set @@autocommit = 0,即設定為非自動提交模式,只對當前的mysql命令行窗口有效,打開一個新的窗口後,默認還是自動提交;
2、對於非自動提交模式,比如在命令行中添加一條記錄,退出命令行後在重新打開命令行,之前插入的記錄是不在的。(用select * from + 表名 驗證一下就可以了)

② 什麼是事務事務中的提交和回滾是什麼意思

事務(Transaction),一般是指要做的或所做的事情。在計算機術語中是指訪問並可能更新資料庫中各種數據項的一個程序執行單元(unit)。事務通常由高級資料庫操縱語言或編程語言(如SQL,C++或Java)書寫的用戶程序的執行所引起,並用形如begin transaction和end transaction語句(或函數調用)來界定。

事務的提交是指事務里的所有操作都正常完成。

事務的回滾是指程序或數據處理錯誤,將程序或數據恢復到上一次正確狀態的行為。

(2)資料庫事務提交擴展閱讀:

事務的特徵:

事務應該具有4個屬性:原子性、一致性、隔離性、持久性。這四個屬性通常稱為ACID特性。

1、原子性(atomicity)。一個事務是一個不可分割的工作單位,事務中包括的諸操作要麼都做,要麼都不做。

2、一致性(consistency)。事務必須是使資料庫從一個一致性狀態變到另一個一致性狀態。一致性與原子性是密切相關的。

隔離性(isolation)。一個事務的執行不能被其他事務干擾。即一個事務內部的操作及使用的數據對並發的其他事務是隔離的,並發執行的各個事務之間不能互相干擾。

4、持久性(rability)。持久性也稱永久性(permanence),指一個事務一旦提交,它對資料庫中數據的改變就應該是永久性的。接下來的其他操作或故障不應該對其有任何影響。

③ 打開或關閉本次資料庫連接的自動命令提交事務模式

mysqli::autocommit -- mysqli_autocommit — 打開或關閉本次資料庫連接的自動命令提交事務模式
說明
面向對象風格
mysqli::autocommit ( bool $mode ) : bool
過程化風格
mysqli_autocommit ( mysqli $link , bool $mode ) : bool
打開或關閉本次資料庫連接的自動命令提交事務模式。
如需要確認當前連接的自動事務提交狀態,可執行這個SQL請求SELECT @@autocommit.
參數
link
僅以過程化樣式:由mysqli_connect() 或 mysqli_init() 返回的鏈接標識。
mode
Whether to turn on auto-commit or not.
返回值
成功時返回 TRUE, 或者在失敗時返回 FALSE。
注釋
Note:
這個方法不會在不支持事務處理的表單查詢中生效,如MyISAM或 ISAM。

④ mysql資料庫 事務提交怎麼處理

1.普通事務
以 begin / start transaction 開始,commit / rollback 結束的事務。或者是帶有保存點 savepoint 的事務。
2. 鏈式事務
一個事務在提交的時候自動將上下文傳給下一個事務,也就是說一個事務的提交和下一個事務的開始是原子性的,下一個事務可以看到上一個事務的處理結果。MySQL 的鏈式事務靠參數 completion_type 控制,並且回滾和提交的語句後面加上 work 關鍵詞。
3. 嵌套事務
有多個 begin / commit / rollback 這樣的事務塊的事務,並且有父子關系。子事務的提交完成後不會真的提交,而是等到父事務提交才真正的提交。
4. 自治事務
內部事務的提交不隨外部事務的影響,一般用作記錄內部事務的異常情況。MySQL 不支持自治事務,但是某些場景可以用 MySQL 的插件式引擎來變相實現。

⑤ 誰給我詳細解釋一下資料庫中的事務提交吧。

事務(TRANSACTION)是作為單個邏輯工作單元執行的一系列操作 這些操作作為一個整體一起向系統提交,要麼都執行、要麼都不執行 事務是一個不可分割的工作邏輯單元 比如說銀行操作轉賬,一個人的賬號減100,另一個加100,如果提交兩條語句某一條出錯了,就會造成一個讓無故增加100元,或一個無故減少100。所以作為一個整體提交,要麼都成功,要麼都失敗。 觸發器是在對表進行插入、更新或刪於強除操作時自動執行的存儲過程
觸發器通常用制業務規則
觸發器是一種高級約束,可以定義比用CHECK 約束更為復雜的約束
可執行復雜的SQL語句(if/while/case)
可引用其它表中的列 觸發器也就是 固定的業務邏輯比如一個員工退休,就會當該員工從員工表刪除的時候將他自動插入退休員工表

⑥ 資料庫的事務機制是什麼

回答的有點多請耐心看完。
希望能幫助你還請及時採納謝謝
1事務的原理
事務就是將一組SQL語句放在同一批次內去執行,如果一個SQL語句出錯,則該批次內的所有SQL都將被取消執行。MySQL事務處理只支持InnoDB和BDB數據表類型。

1事務的ACID原則
** 1(Atomicity)原子性**: 事務是最小的執行單位,不允許分割。原子性確保動作要麼全部完成,要麼完全不起作用;
2(Consistency)一致性: 執行事務前後,數據保持一致;
3(Isolation)隔離性: 並發訪問資料庫時,一個事務不被其他事務所干擾。
4(Durability)持久性: 一個事務被提交之後。對資料庫中數據的改變是持久的,即使資料庫發生故障。

1緩沖池(Buffer Pool)
Buffer Pool中包含了磁碟中部分數據頁的映射。當從資料庫讀取數據時,會先從Buffer Pool中讀取數據,如果Buffer Pool中沒有,則從磁碟讀取後放入到Buffer Pool中。當向資料庫寫入數據時,會先寫入到Buffer Pool中,Buffer Pool中更新的數據會定期刷新到磁碟中(此過程稱為刷臟)。

2日誌緩沖區(Log Buffer)
當在MySQL中對InnoDB表進行更改時,這些更改命令首先存儲在InnoDB日誌緩沖區(Log Buffer)的內存中,然後寫入通常稱為重做日誌(redo logs)的InnoDB日誌文件中。

3雙寫機制緩存(DoubleWrite Buffer)
Doublewrite Buffer是共享表空間的物理文件的 buffer,其大小是2MB.是一個一分為二的2MB空間。
刷臟操作開始之時,先進行臟頁**『備份』**操作.將臟頁數據寫入 Doublewrite Buffer.
將Doublewrite Buffer(順序IO)寫入磁碟文件中(共享表空間) 進行刷臟操作.

4回滾日誌(Undo Log)
Undo Log記錄的是邏輯日誌.記錄的是事務過程中每條數據的變化版本和情況.
在Innodb 磁碟架構中Undo Log 默認是共享表空間的物理文件的Buffer.
在事務異常中斷,或者主動(Rollback)回滾的過程中 ,Innodb基於 Undo Log進行數據撤銷回滾,保證數據回歸至事務開始狀態.

5重做日誌(Redo Log)
Redo Log通常指的是物理日誌,記錄的是數據頁的物理修改.並不記錄行記錄情況。(也就是只記錄要做哪些修改,並不記錄修改的完成情況) 當資料庫宕機重啟的時候,會將重做日誌中的內容恢復到資料庫中。

1原子性
Innodb事務的原子性保證,包含事務的提交機制和事務的回滾機制.在Innodb引擎中事務的回滾機制是依託 回滾日誌(Undo Log) 進行回滾數據,保證數據回歸至事務開始狀態.

2那麼不同的隔離級別,隔離性是如何實現的,為什麼不同事物間能夠互不幹擾? 答案是 鎖 和 MVCC。
3持久性
基於事務的提交機制流程有可能出現三種場景.
1 數據刷臟正常.一切正常提交,Redo Log 循環記錄.數據成功落盤.持久性得以保證

2數據刷臟的過程中出現的系統意外導致頁斷裂現象 (部分刷臟成功),針對頁斷裂情況,採用Double write機制進行保證頁斷裂數據的恢復.

3數據未出現頁斷裂現象,也沒有刷臟成功,MySQL通過Redo Log 進行數據的持久化即可

4一致性
從資料庫層面,資料庫通過原子性、隔離性、持久性來保證一致性

2事務的隔離級別
Mysql 默認採用的 REPEATABLE_READ隔離級別 Oracle 默認採用的 READ_COMMITTED隔離級別

臟讀: 指一個事務讀取了另外一個事務未提交的數據。
不可重復讀: 在一個事務內讀取表中的某一行數據,多次讀取結果不同
虛讀(幻讀): 是指在一個事務內讀取到了別的事務插入的數據,導致前後讀取不一致。

2基本語法
-- 使用set語句來改變自動提交模式
SET autocommit = 0; /*關閉*/
SET autocommit = 1; /*開啟*/

-- 注意:
--- 1.MySQL中默認是自動提交
--- 2.使用事務時應先關閉自動提交

-- 開始一個事務,標記事務的起始點
START TRANSACTION

-- 提交一個事務給資料庫
COMMIT

-- 將事務回滾,數據回到本次事務的初始狀態
ROLLBACK

-- 還原MySQL資料庫的自動提交
SET autocommit =1;

-- 保存點
SAVEPOINT 保存點名稱 -- 設置一個事務保存點
ROLLBACK TO SAVEPOINT 保存點名稱 -- 回滾到保存點
RELEASE SAVEPOINT 保存點名稱 -- 刪除保存點
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/*
課堂測試題目

A在線買一款價格為500元商品,網上銀行轉賬.
A的銀行卡余額為2000,然後給商家B支付500.
商家B一開始的銀行卡余額為10000

創建資料庫shop和創建表account並插入2條數據
*/

CREATE DATABASE `shop`CHARACTER SET utf8 COLLATE utf8_general_ci;
USE `shop`;

CREATE TABLE `account` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(32) NOT NULL,
`cash` DECIMAL(9,2) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8

INSERT INTO account (`name`,`cash`)
VALUES('A',2000.00),('B',10000.00)

-- 轉賬實現
SET autocommit = 0; -- 關閉自動提交
START TRANSACTION; -- 開始一個事務,標記事務的起始點
UPDATE account SET cash=cash-500 WHERE `name`='A';
UPDATE account SET cash=cash+500 WHERE `name`='B';
COMMIT; -- 提交事務
# rollback;
SET autocommit = 1; -- 恢復自動提交
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
3事務實現方式-MVCC
1什麼是MVCC
MVCC是mysql的的多版本並發控制即multi-Version Concurrency Controller,mysql的innodb引擎支持MVVC。MVCC是為了實現事務的隔離性,通過版本號,避免同一數據在不同事務間的競爭,你可以把它當成基於多版本號的一種樂觀鎖。當然,這種樂觀鎖只在事務級別為RR(可重復讀)和RC(讀提交)生效。MVCC最大的好處,相信也是耳熟能詳:讀不加鎖,讀寫不沖突,極大的增加了系統的並發性能。

2MVCC的實現機制
InnoDB在每行數據都增加兩個隱藏欄位,一個記錄創建的版本號,一個記錄刪除的版本號。

在多版本並發控制中,為了保證數據操作在多線程過程中,保證事務隔離的機制,降低鎖競爭的壓力,保證較高的並發量。在每開啟一個事務時,會生成一個事務的版本號,被操作的數據會生成一條新的數據行(臨時),但是在提交前對其他事務是不可見的;對於數據的更新(包括增刪改)操作成功,會將這個版本號更新到數據的行中;事務提交成功,新的版本號也就更新到了此數據行中。這樣保證了每個事務操作的數據,都是互不影響的,也不存在鎖的問題。

3MVCC下的CRUD
SELECT:
當隔離級別是REPEATABLE READ時select操作,InnoDB每行數據來保證它符合兩個條件:
** 1 事務的版本號 大於等於 創建行版本號**
** 2 行數據的刪除版本 未定義 或者大於 事務版本號**
【行創建版本號 事務版本號 行刪除版本號】

INSERT:
InnoDB為這個新行 記錄 當前的系統版本號。

DELETE:
InnoDB將當前的系統版本號 設置為 這一行的刪除版本號。

UPDATE:
InnoDB會寫一個這行數據的新拷貝,這個拷貝的版本為 當前的系統版本號。它同時也會將這個版本號 寫到 舊行的刪除版本里。
————————————————
版權聲明:本文為CSDN博主「@Autowire」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/zs18753479279/article/details/113933252

⑦ 資料庫的手動提交和自動提交區別

一、處理方式不同

1、手動提交:用顯式的方式定義其開始和結束的事務,當使用start transaction和 commit語句時則表示發生顯式事務。

2、自動提交:指每一條數據操作語句都自動地成為一個事務,事務的開始是隱式的,事務的結束有明確的標記。

二、特點不同

1、手動提交:邏輯相關的操作分成了一個組,在數據永久改變前,可以預覽數據變化。

2、自動提交:能夠保證數據的讀一致性。


三、處理結果不同

1、手動提交:務被提交給了DBMS(資料庫管理系統),則DBMS(資料庫管理系統)需要確保該事務中的所有操作都成功完成且其結果被永久保存在資料庫中。

2、自動提交:事務中有的操作沒有成功完成,則事務中的所有操作都需要被回滾,回到事務執行前的狀態;同時,該事務對資料庫或者其他事務的執行無影響,所有的事務都好像在獨立的運行。


⑧ 什麼是資料庫事務

(1):事務(Transaction)是並發控制的單位,是用戶定義的一個操作序列。這些操作要麼都做,要麼都不做,是一個不可分割的工作單位。通過事務,SQL
Server能將邏輯相關的一組操作綁定在一起,以便伺服器保持數據的完整性。
(2):事務通常是以BEGIN
TRANSACTION開始,以COMMIT或ROLLBACK結束。
COMMIT表示提交,即提交事務的所有操作。具體地說就是將事務中所有對資料庫的更新寫回到磁碟上的物理資料庫中去,事務正常結束。
ROLLBACK表示回滾,即在事務運行的過程中發生了某種故障,事務不能繼續進行,系統將事務中對資料庫的所有以完成的操作全部撤消,滾回到事務開始的狀態。
(3):事務運行的三種模式:
A:自動提交事務
每條單獨的語句都是一個事務。每個語句後都隱含一個COMMIT。
B:顯式事務
以BEGIN
TRANSACTION顯式開始,以COMMIT或ROLLBACK顯式結束。
C:隱性事務
在前一個事務完成時,新事務隱式啟動,但每個事務仍以COMMIT或ROLLBACK顯式結束。
(4):事務的特性(ACID特性)
A:原子性(Atomicity)
事務是資料庫的邏輯工作單位,事務中包括的諸操作要麼全做,要麼全不做。
B:一致性(Consistency)
事務執行的結果必須是使資料庫從一個一致性狀態變到另一個一致性狀態。一致性與原子性是密切相關的。
C:隔離性(Isolation)
一個事務的執行不能被其他事務干擾。
D:持續性/永久性(Durability)
一個事務一旦提交,它對資料庫中數據的改變就應該是永久性的。
注:事務是恢復和並發控制的基本單位。

⑨ 資料庫事務提交了還能用日誌恢復嗎

資料庫事務提交了還能用日誌恢復。
提交後,可以恢復最後一個日誌備份即剛做的日誌備份,指定恢復時間點到誤操作之前的時刻。就可以。
還有事務日誌備份保留上次事務日誌備份後發生的所有事務的痕跡。它還允許你把資料庫恢復到資料庫發生錯誤之前的一個時間點。事務日誌備份按順序發生,從而建立一個備份鏈。在把一連串事務日誌備份恢復到一個時間點時,事務日誌文件也必須按順序恢復

熱點內容
如何把安卓機上的圖片備份 發布:2024-11-09 00:49:58 瀏覽:262
android分享微信 發布:2024-11-09 00:49:14 瀏覽:976
數列極限運演算法則 發布:2024-11-09 00:48:37 瀏覽:895
k線公式源碼 發布:2024-11-09 00:35:24 瀏覽:784
國際編程大賽 發布:2024-11-09 00:35:23 瀏覽:856
全志編譯內核驅動 發布:2024-11-09 00:30:59 瀏覽:55
phpphpfpm 發布:2024-11-09 00:27:54 瀏覽:981
機車新手怎麼看配置 發布:2024-11-09 00:12:20 瀏覽:193
關鍵行動安卓如何下載 發布:2024-11-08 23:56:59 瀏覽:59
大便壓縮小 發布:2024-11-08 23:52:37 瀏覽:293