你好!我们现在引入了tidb来同时支持OLAP和OLTP,部署了6台机器,其中3台tikv。
在AP场景下遇到了如下问题:经常会出现一条复杂的adhoc sql会导致整个tidb集群的负载很高,进而导致所有的sql查询都会变得很慢。 请问tidb有没有什么机制可以做到,单事务或者sql对资源消耗的上限(比如10%的cpu资源)? 或者有没有其他比较简单的方法可以避免出现类似的问题?
你好!我们现在引入了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 为例):
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吗?
你好
max_execution_time
此参数是 100ms 级别的精度https://docs.pingcap.com/zh/tidb/v4.0/system-variables#tidb-支持的-mysql-系统变量
下面的 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
tidb.log 中会输出对应日志:
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。