当前位置: 首页 > news >正文

关于网站建设 策划文案西安大雁塔的历史简介

关于网站建设 策划文案,西安大雁塔的历史简介,建设工程师交易网站,wh网站建设使用合并树引擎时,无论是ReplacingMergeTree还是SummingMergeTree,都只能保证数据的最终一致性,因为数据的去重、聚合等操作会在数据合并的期间进行,而合并会在后台以一个不确定的时间进行,因此无法预先计划&#xff1…

使用合并树引擎时,无论是ReplacingMergeTree还是SummingMergeTree,都只能保证数据的最终一致性,因为数据的去重、聚合等操作会在数据合并的期间进行,而合并会在后台以一个不确定的时间进行,因此无法预先计划;

数据准备

建表:

CREATE TABLE test_consistence(user_id UInt64,score String,deleted UInt8 DEFAULT 0,create_time DateTime DEFAULT toDateTime(0)
)ENGINE= ReplacingMergeTree(create_time)
ORDER BY user_id;

其中deleted作为是否删除的标识;create_time 是版本号字段,每组数据中 create_time 最大的一行表示最新的数据

导入数据:

INSERT INTO TABLE test_consistence(user_id,score)
WITH(SELECT ['A','B','C','D','E','F','G']
)AS dict
SELECT number AS user_id, dict[number%7+1] FROM numbers(10000000);

数据结构如下:

通过修改create_time的值,可以更新数据:

INSERT INTO TABLE test_consistence(user_id,score,create_time)
WITH(SELECT ['AA','BB','CC','DD','EE','FF','GG']
)AS dict
SELECT number AS user_id, dict[number%7+1], now() AS create_time FROM 
numbers(500000);

now()函数可以获取当前时间

查询发现,此时表中共有10500000条数据,说明还未进行去重;

去重方案

手动 OPTIMIZE

在写入数据后,立刻执行 OPTIMIZE 强制触发新写入分区的合并动作

optimize table test_consistence;

耗费时间:

可以看到,optimize是一个相对比较耗时的操作(与select、insert相比),因为需要进行大量的数据读写

通过 Group by 去重

执行去重的查询

SELECTuser_id ,argMax(score, create_time) AS score, argMax(deleted, create_time) AS deleted,max(create_time) AS ctime 
FROM test_consistence 
GROUP BY user_id
HAVING deleted = 0;

函数argMaxargMax(field1,field2):按照 field2 的最大值取 field1 的值

因此argMax(score, create_time)的含义就是,按照create_time的最大值取score的值,因为create_time代表当前数据的更新时间,因此总能取到最新的数据;

同理argMax(deleted, create_time)是取最新的deleted标识,来判断数据是否被删除

创建视图

通过上面的操作我们可以实现数据的去重等操作,从而保证一致性,因此创建视图来保存数据查询的逻辑

CREATE VIEW view_test_consistence AS
SELECTuser_id ,argMax(score, create_time) AS score, argMax(deleted, create_time) AS deleted,max(create_time) AS ctime 
FROM test_consistence 
GROUP BY user_id
HAVING deleted = 0;

视图创建的格式:create view view_name as select......

注意:这里创建的视图仅仅保存了数据查询的逻辑,并不保存具体的数据;

测试去重效果

插入数据:

insert into test_consistence(user_id, score, create_time) values(0, 'AAAA', now());

然后查询数据:

select * from test_consistence where user_id = '0';

发现并未去重;

而从视图中查询:

select * from view_test_consistence where user_id = '0';

则仅有最新的数据:

通过 FINAL 查询

在查询语句后增加 FINAL 修饰符,这样在查询的过程中将会执行 Merge 的特殊逻辑(例如数据去重,预聚合等)

测试

① 不使用final查询:

select * from visits_v1 WHERE StartDate = '2014-03-17' limit 100;

②使用final查询:

select * from visits_v1 final WHERE StartDate = '2014-03-17' limit 100;

可以看到,查询速度并没有普通的查询快,因此使用final确保数据一致性也是以效率为代价的;

版本说明

早期版本增加 FINAL 之后,查询会变成单线程;但从v20.5.2.7-stable版本之后转为多线程执行,并可以通过max_final_threads 参数控制单个查询的线程数:

explain pipeline select * from visits_v1 final WHERE StartDate = '2014-03-17' limit 100;

可以看到从 CollapsingSortedTransform 这一步开始已经是多线程执行,但是读取 part 部分的动作还是串行

http://www.yayakq.cn/news/167066/

相关文章:

  • 用自己电脑配置服务器做网站温州建设局网站
  • 荣耀手机商城官方网站下载电商详情页设计模板
  • 上海松江建设发展有限公司网站网站设计套用模板
  • 自学建网站做网站优化网站建设公司哪家好要选磐石网络
  • 写作网站制作网站维护需要学什么
  • 网站基本建设的原理网站建设 甘肃
  • 外贸商城建站wordpress 显示多媒体
  • 莱芜最好的网站建设公司开放平台模式
  • 如何做古诗词网站房产网络平台
  • 农家乐网站规划与建设方案台州建设局招标投标网站
  • 常州市建设局网站6贵阳手机端网站建设
  • 简述建设网站的具体步骤什么程序做教育网站好
  • 网站开发最新技术网站登录账号密码保存
  • 华强北 网站建设怎么联系小程序开发者
  • 合肥网络科技有限公司做网站好域名做网站
  • 什么是门户网站福建省建设工程继续教育网站
  • 化妆品网站的搭建网站流量对比
  • 深圳做企业网站的公司炫酷的网页特效
  • 常德网站seowordpress主页不加index.php 打不开
  • 怎么建设网站服务器wordpress插件 手机版
  • 软文营销的技巧有哪些?南昌快速排名优化
  • 外贸主动营销网站建设wordpress 书 主题
  • 郑州网站建设网站建设免备案免费域名
  • 网站与平台的开发区别个人网站设计制作步骤
  • 自适应网站的优劣微商城平台排行榜前十名
  • 网站备案帐号密码培训心得体会范文
  • 摄影化妆艺术学校网站源码wordpress后退会选中文字
  • 哈尔滨网站备案手续城固城乡建设规划网站
  • 服务好的高端网站建设企业中国建设银行网站会员可以改名
  • 网上买手表哪个网站可以买到正品网站建设及网页设计教案