簡談GTS使用中的效能問題

2021-09-10 17:16:43 字數 2358 閱讀 2391

全域性事務服務(global transaction service,簡稱 gts)是一款高效能、高可靠、接入簡單的分布式事務中介軟體,用於解決分布式環境下的事務一致性問題。 在單機資料庫下很容易維持事務的 acid(atomicity、consistency、isolation、durability)特性,但在分布式系統中並不容易,gts 可以保證分布式系統中的分布式事務的 acid 特性。 gts 支援 drds、rds、mysql 等多種資料來源,可以配合 edas 和 dubbo 等微服務框架使用, 相容 mq 實現事務訊息。通過各種組合,可以輕鬆實現分布式資料庫事務、多庫事務、訊息事務、服務鏈路級事務等多種業務需求。

這是阿里雲官網對gts的介紹,官網也給了很多demo,我就拿其中的sample-txc-****** 來作個效能比較測試

訪問 

2、建立資料庫 

a. 建立兩個資料庫

b . 建表

sql如下

create table `user_money_a` (

`id` int(11) not null auto_increment,

`money` int(11) default null,

primary key (`id`)

) engine=innodb default charset=utf8;

create table `user_money_b` (

`id` int(11) not null auto_increment,

`money` int(11) default null,

primary key (`id`)

) engine=innodb default charset=utf8;

create table `txc_undo_log` (

`id` bigint(20) not null auto_increment comment '主鍵',

`gmt_create` datetime not null comment '建立時間',

`gmt_modified` datetime not null comment '修改時間',

`xid` varchar(100) not null comment '全域性事務id',

`branch_id` bigint(20) not null comment '分支事務id',

`rollback_info` longblob not null comment 'log',

`status` int(11) not null comment '狀態',

`server` varchar(32) not null comment '分支所在db ip',

primary key (`id`),

key `unionkey` (`xid`,`branch_id`)

) engine=innodb auto_increment=211225994 default charset=utf8 comment='事務日誌表';

結果如下

3、修改配製檔案

注意:本地除錯時,一定要選擇公網測試的配製

4、增加標記**

5、進行四組測試

測試結果如下

有事務有錯誤

有事務無錯誤

無事務有錯誤

無事務無錯誤

執行時間(毫秒)

11335

8277

1586

1500

從上面測試結果綜合分析可以看出,

當程式出錯 時,有事務的效能要慢7倍左右

當程式不出錯時,有事務的效能要慢5倍左右

我是在本地進行測試,如果放在複雜的線上環境,預計結果偏差可能更大!

簡談python中的 call

最近在思考 call 和類方法的使用場景,雖然功能會有重疊,但凡存在的必是合理的,肯定會有輕微的不同,看了django以及部分框架的設計原始碼,各有各的設計風格,本著功能邊界的看法,所以做個總結。classa def init self,a,b self.a a self.b b defdo sta...

Vim 編輯器的使用簡談

1.建立檔案 vi 檔名 表示開啟或者建立乙個檔案,如果建立乙個檔案之後,但是什麼也沒寫就退出的話這個檔案不會被建立 1.命令模式 可以支援很多的命令 a,進入編輯模式,游標右移一位 i,進入編輯模式,游標不動 o,進入編輯模式,游標移動到下一行 進入底行模式 yw,拷貝乙個單詞 yy,拷貝一行 n...

簡談scala 中的val 與 var

斷斷續續學習scala也有一段時間了,初期總對val 與var 的理解不太透徹,今天來做做總結。一般都知道val 表示不可變,var表示可變,比如 val s hello s world 錯誤,不能對val重新賦值 var i 1 i 2 沒有問題 但是在碰到可變與不可變資料結構的時候,容易造成迷惑...