1

数据结构 :

主表(5亿):

创建表USER_DETAILS

visitor_idvarchar(50) 默认为空,

partition_id INT,

related_text 长文本,

creation_date时间戳 DEFAULT CURRENT_TIMESTAMP,

主键 ( visitor_id,partition_id) )

引擎=TokuDB

按列表分区(partition_id)(

(0) 引擎 = TokuDB 中的分区 p0 值,

(1) ENGINE = TokuDB 中的分区 p1 值,

(2) ENGINE = TokuDB 中的分区 p2 值,

(3) ENGINE = TokuDB 中的分区 p3 值,

(4) ENGINE = TokuDB 中的分区 p4 值,

(5) ENGINE = TokuDB 中的分区 p5 值,

(6) ENGINE = TokuDB 中的分区 p6 值,

(7) ENGINE = TokuDB 中的分区 p7 值,

(8) ENGINE = TokuDB 中的分区 p8 值,

(9) ENGINE = TokuDB 中的分区 p9 值;

中间表(10-20 百万):

创建表USER_DETAILS_INTERMEDIATE

idbigint(20) NOT NULL AUTO_INCREMENT,

visitor_id` varchar(50) DEFAULT NULL,

partition_idint(11) 默认空值,

related_text长文本,主键(id));

问题 :

当我将数据从中间表传输到主表时花费了太多时间。

我尝试了以下解决方案:

解决方案1:

替换成 USER_DETAILS(visitor_id,partition_id,json_list)

选择 visitor_id ,partition_id ,related_text

FROM USER_DETAILS_INTERMEDIATE

解决方案 2(在循环中运行以下语句:每个循环 10000 行):

替换成 USER_DETAILS(visitor_id,partition_id,json_list)

选择 visitor_id ,partition_id ,related_text

FROM USER_DETAILS_INTERMEDIATE

WHERE id 在 var_min_id 和 var_max_id 之间;

以上查询都需要时间。

有没有另一种方法来改善这个..?

4

0 回答 0