TiDB执行慢SQL必须保持会话连接吗?

[背景]
需要用到TiDB的OLAP能力,所以需要执行大sql

[问题]
1、我在执行sql时,可否像Hive一样异步提交SQL,然后过段时间再来查询结果?
2、如果不可以,那我必须在当前会话等待sql执行结束并返回结果吗?
3、如果我的sql耗时较长,遇到网络波动导致我的会话断开或异常,我这次查询会被立刻终止作废吗?

1赞

是否可以使用 mysql -e 尝试后台执行,如果结果数据不多,输出到文件里,是否可行?

2赞

你好,TiDB是分布式的,好像没法在服务端将查询结果输出到文件吧?
另外,mysql -e的话,也是需要客户端跟服务端保持连接的吧?

由于我的业务场景是需要接收各种定时OLAP语句,得到查询结果后,等待对方拉取。
在查询资料发现无法服务端后台执行sql后,考虑代码中每执行一个OLAP语句便开启一个会话,将结果流式写入本地文件。
在这期间会如果遇到耗时较长sql,会非常容易出现会话连接问题

请问你这里的网络抖动是频繁发生在客户端和 TiDB 服务端吗?TiDB 各组件间会出现这种情况吗?如果集群内部组件也会出现这种情况,那查询会中止掉。

网络抖动并不会频繁发生,任何两个节点之间都有网络抖动的可能,但由于一般都会同机房部署,概率较小。
这里只是举例,咨询对OLAP能支持到哪种程度

如果应用是直接通过 tidb-server 访问应该做不到你说的这种情况,不过可以尝试下 tispark ,看下能否满足你的需求:https://docs.pingcap.com/zh/tidb/v5.0/tispark-overview