当前位置: 代码迷 >> 综合 >> clickhouse 临时表的生命周期 mybatis对于临时表的创建
  详细解决方案

clickhouse 临时表的生命周期 mybatis对于临时表的创建

热度:24   发布时间:2023-11-04 00:03:00.0

临时表的生命周期 mybatis对于临时表的创建

最近一直在搞clickhouse的查询业务,积累了些经验,这篇文章主要是分享一下关于临时表的创建查询相关的问题。

现在mybatis已经支持clickhouse普通的CRUD,但是对于临时表的创建查询还是有问题,下面让我们来探索一下。

1. clickhouse官方对临时表生命周期的描述

ClickHouse支持临时表,其具有以下特征:

  • 当会话结束时,临时表将随会话一起消失,这包含链接中断。
  • 临时表仅能够使用Memory表引擎。
  • 无法为临时表指定数据库。它是在数据库之外创建的。
  • 如果临时表与另一个表名称相同,那么当在查询时没有显示的指定db的情况下,将优先使用临时表。
  • 对于分布式处理,查询中使用的临时表将被传递到远程服务器。

可以使用下面的语法创建一个临时表:

CREATE TEMPORARY TABLE [IF NOT EXISTS] table_name [ON CLUSTER cluster]
(name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1],name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2],...
)

tips:保证不是在同一个会话的情况下,临时表可以重名

2. mybatis对临时表不支持的原因

因为mybatis的每一次请求都是一个新会话,所以当你用mybatis创建一个临时表,然后再去查询这个临时表,就会报没有这个临时表存在的错误;因为创建临时表操作和查询操作是两个请求,也就是两个会话,根据ck官方的解释,会话结束临时表生命截止,所以查询不到该临时表。

3. 根据上述出现问题的原因,来自己开发一个连接ck并进行查询的工具包,亲测可用

需要的话请评论区留言获得(新人博主,迄今为止就收到过一个赞,所以想让大家评论一下,攒攒人气?)

  相关解决方案