【详述】连续insert select操作写入数据后, 出现数据重复
【业务影响】 同一笔订单出现2条重复数据, 计算出的金额翻倍。 同一个用户出现2条注册数据。
【StarRocks版本】3.1.3存算分离模式
【集群规模】3fe(1 follower+2observer)+3be(fe与be混部)
【机器信息】8C/32G/万兆
【联系方式】18620130547
【附件】
1、更新模型表出现数据重复:
(1)建表语句:
CREATE TABLE logs_web_web_game_reg_new
(
user_id
varchar(100) NOT NULL COMMENT “”,
old_id
varchar(50) NOT NULL COMMENT “”,
recdate
date NOT NULL COMMENT “”,
game_id
varchar(50) NOT NULL COMMENT “”,
rectime
datetime NOT NULL COMMENT “”,
user_name
varchar(30) NOT NULL COMMENT “”,
jh_channel
varchar(50) NOT NULL COMMENT “”,
yy_ad
varchar(50) NOT NULL COMMENT “”,
os
varchar(20) NOT NULL COMMENT “”,
ios_idfa
varchar(255) NOT NULL COMMENT “”,
ios_idfv
varchar(255) NOT NULL COMMENT “”,
and_imei
varchar(255) NOT NULL COMMENT “”,
ip
varchar(100) NOT NULL COMMENT “”,
os_version
varchar(20) NOT NULL COMMENT “”,
sdk_version
varchar(20) NOT NULL COMMENT “”,
device_id
varchar(255) NOT NULL COMMENT “”,
device_name
varchar(255) NOT NULL COMMENT “”,
ch_id
int(11) NOT NULL COMMENT “”,
uptime
datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT “”,
and_adid
varchar(255) NOT NULL COMMENT “”,
and_id
varchar(255) NOT NULL COMMENT “”,
oaid
varchar(255) NULL COMMENT “”,
plat
varchar(10) NOT NULL COMMENT “”,
ld_id
int(11) NOT NULL COMMENT “”,
media_id
varchar(20) NOT NULL COMMENT “”,
media_campaign
varchar(100) NOT NULL COMMENT “”,
media_creative
varchar(100) NOT NULL COMMENT “”,
info
json NULL COMMENT “”,
bnadm_id
varchar(30) NULL COMMENT “”,
bnldm_id
varchar(30) NULL COMMENT “”,
game_version
varchar(255) NULL COMMENT “”,
ext1
varchar(255) NULL COMMENT “”
) ENGINE=OLAP
UNIQUE KEY(user_id
, old_id
, recdate
)
COMMENT “OLAP”
PARTITION BY date_trunc(‘day’, recdate)
DISTRIBUTED BY HASH(user_id
) BUCKETS 9
PROPERTIES (
“replication_num” = “1”,
“colocate_with” = “user_id_group”,
“datacache.enable” = “true”,
“storage_volume” = “builtin_storage_volume”,
“enable_async_write_back” = “false”,
“enable_persistent_index” = “false”,
“compression” = “LZ4”
);
(2)出现的现象:
出现2条完全一模一样的数据,表数据大概3500万,出现约4万重复的数据
查询结果也出现诡异现象,不同的查询方式可能出现重复, 也可能不出现。
2、主键模型数据重复:
(1)建表语句:
CREATE TABLE logs_web_web_pay
(
user_id
varchar(100) NOT NULL DEFAULT “0” COMMENT “”,
order_sn
varchar(100) NOT NULL COMMENT “”,
recdate
date NOT NULL DEFAULT “1970-01-01” COMMENT “”,
rectime
datetime NOT NULL COMMENT “”,
game_id
varchar(50) NOT NULL DEFAULT “0” COMMENT “”,
id
int(11) NOT NULL COMMENT “”,
create_time
datetime NOT NULL COMMENT “”,
update_time
datetime NOT NULL COMMENT “”,
game_role_id
varchar(50) NOT NULL COMMENT “”,
game_role_name
varchar(100) NOT NULL COMMENT “”,
money
decimal128(20, 2) NOT NULL DEFAULT “0” COMMENT “”,
type
smallint(6) NOT NULL DEFAULT “1” COMMENT “”,
status
smallint(6) NOT NULL DEFAULT “1” COMMENT “”,
pay_status
smallint(6) NOT NULL DEFAULT “0” COMMENT “”,
jh_channel
varchar(255) NULL COMMENT “”,
server
varchar(50) NULL COMMENT “”,
pay_type
varchar(50) NOT NULL DEFAULT “” COMMENT “”,
cp_trade_sn
varchar(100) NOT NULL DEFAULT “” COMMENT “”,
payment_trade_sn
varchar(50) NULL COMMENT “”,
goods_id
varchar(50) NOT NULL DEFAULT “” COMMENT “”,
goods_name
varchar(50) NULL DEFAULT “” COMMENT “”,
exchange_rate
int(11) NOT NULL DEFAULT “1” COMMENT “”,
game_url
varchar(255) NULL DEFAULT “” COMMENT “”,
yy_ad
varchar(50) NULL COMMENT “”,
os
varchar(20) NOT NULL DEFAULT “” COMMENT “”,
ios_idfa
varchar(255) NULL COMMENT “”,
ios_idfv
varchar(255) NULL COMMENT “”,
and_imei
varchar(255) NULL COMMENT “”,
ip
varchar(100) NOT NULL DEFAULT “” COMMENT “”,
os_version
varchar(20) NULL COMMENT “”,
sdk_version
varchar(20) NULL COMMENT “”,
device_id
varchar(255) NOT NULL DEFAULT “” COMMENT “”,
device_name
varchar(255) NULL COMMENT “”,
uptime
datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT “”,
and_adid
varchar(255) NULL DEFAULT “” COMMENT “”,
and_id
varchar(255) NULL DEFAULT “” COMMENT “”,
plat
varchar(10) NOT NULL DEFAULT “web” COMMENT “”,
ld_id
int(11) NULL COMMENT “”,
media_id
varchar(20) NULL COMMENT “”,
media_campaign
varchar(100) NULL COMMENT “”,
media_creative
varchar(100) NULL COMMENT “”,
bnadm_id
varchar(30) NULL COMMENT “”,
bnldm_id
varchar(30) NULL COMMENT “”,
info
json NULL COMMENT “”,
oaid
varchar(255) NULL COMMENT “”,
coupon_code
varchar(50) NULL COMMENT “”,
real_money
decimal128(20, 2) NULL COMMENT “”,
is_refund
smallint(6) NULL COMMENT “”,
refund_time
int(11) NULL COMMENT “”,
refund_info
varchar(255) NULL COMMENT “”,
ch_id
int(11) NULL COMMENT “”,
old_id
varchar(30) NULL COMMENT “”
) ENGINE=OLAP
PRIMARY KEY(user_id
, order_sn
, recdate
)
COMMENT “OLAP”
PARTITION BY date_trunc(‘day’, recdate)
DISTRIBUTED BY HASH(user_id
) BUCKETS 9
PROPERTIES (
“replication_num” = “1”,
“colocate_with” = “user_id_group”,
“datacache.enable” = “true”,
“storage_volume” = “builtin_storage_volume”,
“enable_async_write_back” = “false”,
“enable_persistent_index” = “false”,
“compression” = “LZ4”
);
(2)重复现象:
查询结果也出现诡异现象,count(distinct 主键)居然出现2个不同的结果。