分布式事務

2021-09-22 19:43:40 字數 1072 閱讀 6815

<?php

$conn1 = new mysqli(self::$host,self::$username,self::$password,self::$dbname);//獲取例項1

$conn2 = new mysqli(self::$host,self::$username,self::$password,self::$dbname);//獲取例項2

$xa = uniqid("");//指定分布式事務id唯一(操作兩個不同的資料庫sql的xaid唯一)

$sql1 = "insert into user (username,password) values('admin3','111111')";//執行例項1庫的sql

$sql2 = "delete from user where id = 165";//執行例項2庫的sql

//步驟1

$conn1->query("xa start '$xa'");//開始xa1

$conn2->query("xa start '$xa'");//開始xa2

//步驟2

$add_status = $conn1->query($sql1);//執行sql1

$del_status = $conn2->query($sql2);//執行sql2

//步驟三

$conn1->query("xa end '$xa'");//結束xa1

$conn2->query("xa end '$xa'");//結束xa2

//步驟四

$conn1->execute_xa("xa prepare '$xa'");//準備提交1

$conn2->execute_xa("xa prepare '$xa'");//準備提交2

//步驟五(操作失敗)

if(!($add_status && $del_status))

//步驟六(操作成功)

$conn1->query("xa commit '$xa'");//事務提交1

$conn2->query("xa commit '$xa'");//事務提交2

?>

分布式 分布式事務

是資料庫執行過程中的乙個邏輯單位,由乙個有限的資料庫操作序列構成。事務的acid四大特性 原子性 atomicity 事務作為乙個整體被執行。一致性 consistency 從乙個一致的狀態轉換到另乙個一致的狀態。隔離性 isolation 多個事務併發執行時,併發事務之間互相影響的程度。永續性 d...

分布式事務 分布式事務的實現

如果在多個服務中需要對不同的資料庫進行操作。因為不同服務操作的資料庫都不同,所以保證在同乙個事務中完成操作顯然是不科學的。那實現分布式事務的思想 1 方法入口,建立一條日誌記錄,狀態定義為初始狀態,即儲存本條日誌記錄 可以儲存在資料庫中,也可以寫出到本地磁碟檔案 2 可以在非同步執行緒或在定時任務中...

分布式之分布式事務

被人問到分布式事務,之前學rabbitmq 的時候學到過rabbitmq 高階的事務,因為沒有用過,所有沒有回答好。這裡總結一下。1.單機版事務。事務的四大特性 acid a.原子性 b.一致性 c.隔離性 d.永續性 單機事務可以通過設定事務的隔離級別 參見spring 的事務隔離級別 2.分布式...