72 lines
2.3 KiB
PL/PgSQL
72 lines
2.3 KiB
PL/PgSQL
-- Seata Store Database Schema
|
||
-- 用于存储Seata分布式事务的全局事务、分支事务和锁信息
|
||
|
||
CREATE DATABASE IF NOT EXISTS seata DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
|
||
|
||
USE seata;
|
||
|
||
-- 全局事务表
|
||
CREATE TABLE IF NOT EXISTS `global_table` (
|
||
`xid` VARCHAR(128) NOT NULL,
|
||
`transaction_id` BIGINT,
|
||
`status` TINYINT NOT NULL COMMENT '0:begin;1:committing;2:committed;3:rollbacking;4:rolled back;5:timeout rollback',
|
||
`application_id` VARCHAR(64),
|
||
`transaction_service_group` VARCHAR(64),
|
||
`transaction_name` VARCHAR(64),
|
||
`timeout` INT,
|
||
`begin_time` BIGINT,
|
||
`application_data` VARCHAR(500),
|
||
`gmt_create` DATETIME,
|
||
`gmt_modified` DATETIME,
|
||
PRIMARY KEY (`xid`),
|
||
KEY `idx_gmt_modified_status` (`gmt_modified`),
|
||
KEY `idx_transaction_id` (`transaction_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='全局事务表';
|
||
|
||
-- 分支事务表
|
||
CREATE TABLE IF NOT EXISTS `branch_table` (
|
||
`branch_id` BIGINT NOT NULL,
|
||
`xid` VARCHAR(128) NOT NULL,
|
||
`transaction_id` BIGINT,
|
||
`resource_group_id` VARCHAR(32),
|
||
`resource_id` VARCHAR(256),
|
||
`branch_type` VARCHAR(8),
|
||
`status` TINYINT,
|
||
`client_id` VARCHAR(64),
|
||
`application_data` VARCHAR(500),
|
||
`gmt_create` DATETIME,
|
||
`gmt_modified` DATETIME,
|
||
PRIMARY KEY (`branch_id`),
|
||
KEY `idx_xid` (`xid`),
|
||
KEY `idx_transaction_id` (`transaction_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='分支事务表';
|
||
|
||
-- 全局锁表
|
||
CREATE TABLE IF NOT EXISTS `lock_table` (
|
||
`row_key` VARCHAR(128) NOT NULL,
|
||
`xid` VARCHAR(128),
|
||
`transaction_id` BIGINT,
|
||
`branch_id` BIGINT,
|
||
`resource_id` VARCHAR(256),
|
||
`table_name` VARCHAR(32),
|
||
`pk` VARCHAR(32),
|
||
`status` TINYINT NOT NULL DEFAULT '0' COMMENT '0:locked;1:unlocking',
|
||
`gmt_create` DATETIME,
|
||
`gmt_modified` DATETIME,
|
||
PRIMARY KEY (`row_key`),
|
||
KEY `idx_branch_id` (`branch_id`),
|
||
KEY `idx_status` (`status`),
|
||
KEY `idx_xid` (`xid`),
|
||
KEY `idx_transaction_id` (`transaction_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='全局锁表';
|
||
|
||
-- 分布式锁表(用于TCC模式)
|
||
CREATE TABLE IF NOT EXISTS `distributed_lock_table` (
|
||
`lock_key` VARCHAR(128) NOT NULL,
|
||
`lock_value` VARCHAR(256),
|
||
`expire_time` BIGINT,
|
||
`gmt_create` DATETIME,
|
||
`gmt_modified` DATETIME,
|
||
PRIMARY KEY (`lock_key`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='分布式锁表';
|