国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

多庫事務(wù)問題,2個庫同時提交或同步滾回

quinn

問題描述

我要進(jìn)行多庫操作時,事務(wù)是不是這樣的,會不會存第一個提交成功,第二個提交失敗,導(dǎo)致第一個不能滾回

   Db::connection('api_log')->beginTransaction();
        Db::connection('default')->beginTransaction();

        try {
            // 業(yè)務(wù)處理

            Db::connection('api_log')->commit();
            Db::connection('default')->commit();

        } catch (\Throwable $exception) {
            var_dump($exception);

            Db::connection('api_log')->rollBack();
            Db::connection('default')->rollBack();

        }
944 3 3
3個回答

深藍(lán)

多庫事務(wù),應(yīng)該沒有這么簡單,最近我也有這個疑惑。

  • 暫無評論
第六人

這種多庫操作,就不要依賴事務(wù),可以在代碼層面判斷,比如庫1的事務(wù)1先提交入庫(標(biāo)記一個狀態(tài)字段,trans=1 表示還有其他庫的事務(wù)沒執(zhí)行完),如果庫2事務(wù)2也提交成功,則更新庫1的對應(yīng)字段trans=2 表示數(shù)據(jù)執(zhí)行完成每一次,如果庫2事務(wù)2執(zhí)行失敗,則不更新庫1的數(shù)據(jù),或者可以做刪除操作,表示失敗,大概邏輯是這樣,就是通過代碼層面判斷。

  • 深藍(lán) 2024-08-08

    那如果在更新庫1對應(yīng)字段trans=2的過程中出現(xiàn)問題呢?這就是一個死亡螺旋。

  • 第六人 2024-08-08

    不知道你說的出現(xiàn)問題是具體是指什么,那可以考慮把更新庫1 trans字段的邏輯丟到一個可靠隊列,確認(rèn)更新成功ack,才刪除隊列,如果沒有ack成功,那只能把這個數(shù)據(jù)當(dāng)成異常數(shù)據(jù)了,可以記錄日志排查原因?;蛘呖梢韵衲欠N分布式事務(wù),雙方都確認(rèn)成功才算成功

初試
  • 暫無評論
年代過于久遠(yuǎn),無法發(fā)表回答
??