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

本文探讨了Mybatis在处理ClickHouse临时表时遇到的问题,由于会话限制导致临时表生命周期短。作者提供了自定义工具包以解决此问题,并鼓励读者参与互动。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

临时表的生命周期 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并进行查询的工具包,亲测可用

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

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值