tidb 对 OLAP 的支持

你好!我们现在引入了tidb来同时支持OLAP和OLTP,部署了6台机器,其中3台tikv。

在AP场景下遇到了如下问题:经常会出现一条复杂的adhoc sql会导致整个tidb集群的负载很高,进而导致所有的sql查询都会变得很慢。 请问tidb有没有什么机制可以做到,单事务或者sql对资源消耗的上限(比如10%的cpu资源)? 或者有没有其他比较简单的方法可以避免出现类似的问题?

你好,

可以提供下 tidb 集群版本,如果为 4.0,可以在测试环境测试下 tiflash 加持的 tidb 集群是否可以缓解目前状况。

https://docs.pingcap.com/zh/tidb/v4.0/tiflash-overview

目前 tidb-server 配置文件中提供(注意版本参数支持问题,本帖以 4.0 为例):
image

https://docs.pingcap.com/zh/tidb/v4.0/tidb-configuration-file

那么有这样几个问题哈:
1)看文档tiflash需要在新的机器上进行部署吗?
2)mem-quota-query参数跟tiflash无关对吧?有针对cpu的限制参数吗?

你好,

建议在新服务器上部署,tiflash 是计算节点,避免混合部署出现的服务器资源争抢的现象,服务器需要的配置信息在文档中有所展示,因为只需要手动将部分 ap 表同步到 tiflash 所以在服务器要求上小于 tikv 服务器。

无关,针对的是单条 sql 占用内存超出此值将被停止。

有针对cpu的使用限制参数吗?

你好,

tidb 中并没有对单条 sql 语句使用 cpu 的限制,目前仅有内存和时间限制。

限制单条sql的执行时间上限是哪个参数呢?如果超出该时间限制tidb是直接杀掉该sql吗?

你好

  1. max_execution_time 此参数是 100ms 级别的精度

https://docs.pingcap.com/zh/tidb/v4.0/system-variables#tidb-支持的-mysql-系统变量

  1. hint 方式,针对单条语句,max_execution_timen(N)

下面的 Hint 设置了 1000 毫秒(即 1 秒)超时:

select /*+ MAX_EXECUTION_TIME(1000) */ * from t1 inner join t2 where t1.id = t2.id;

https://docs.pingcap.com/zh/tidb/v4.0/optimizer-hints#max_execution_timen

测试超出设定时间,将返回

Query execution was interrupted

image

tidb.log 中会输出对应日志:

1 个赞

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。