添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

查询报错 QUERY_EXCEED_LIMIT ErrMsg:groups 100000001 exceed limit => 10000000

用户在执行SQL查询用limit处理分页时,如果start值限制10000无法获取10000以后的数据,如: LIMIT 1000000,20 。分析型数据库MySQL版对分页数量有限制,即查询返回结果集限制10000行。分析型数据库MySQL版会对select语句查询的返回结果集做全局最大限制,如果不加limit或limit函数超过10000,则只能返回10000行。

  • 可以在查询中添加注解 /*+limitmax=<最大值>*/ ,例如 /+limitmax=2000000/select * from ar_express3 limit 1000000,20`
  • 请联系技术支持申请调整默认返回限制。
  • 查询时遇到 memory is not enough

    由于分析型数据库MySQL版查询时,大量数据存在内存中。当SQL所需处理单表或者多表join时的结果较大时,计算节点内存会成为系统瓶颈。分析型数据库MySQL版CN节点为避免SQL压垮系统,会进行自我保护,自动将查询消耗内存较大的SQL fail掉,保证其它查询正常。因此当查询分析型数据库MySQL版报错提示 memory is not enough ,有以下2种建议:

  • 优化SQL,尽量不返回可有可无的结果集,同时尽量对不关心的数据添加过滤条件。若没有很好的处理方法,请联系分析型数据库MySQL版技术支持。
  • 若在现有业务基础上无法进行SQL优化,可考虑DB资源 扩容 ,甚至是调整资源模型规格。

    查询时报错,提示 scanRows exceed limit

    分析型数据库MySQL版查询时报错,错误信息为: ErrMsg:ErrCode:2001 ErrType:QUERY_EXCEED_LIMIT ErrMsg:scanRows exceed limit: xxx >

    为避免用户输入的SQL误写或性能较差,从而导致扫描表的大量数据集,分析型数据库MySQL版会进行scan限制。当SQL scan的行数达到一定数量时,会fail掉SQL的执行并提示用户 scanRows exceed limit 错误信息。当遇到该错误时,建议进行以下改进:
  • 从SQL本身进行优化,尽量添加更多的过滤条件,筛选出需要关注的数据进行计算。
  • 判断select的列是否都有必要获取,因为一个SQL可scan的数据条数=系统默认值/select的列数,若列数减少则可scan的数据条数更多。
  • 若SQL自身无法进行优化,但依旧触发该错误,可联系分析型数据库MySQL版技术支持对单个分析型数据库MySQL版的系统默认值进行调整,此操作可能会造成数据库性能下降。
  • 查询提示错误 META_COLUMN_NOT_EXIST

    在分析型数据库MySQL版表新增字段后,查询提示找不到新添加的列,具体是什么原因?表正在上线,但是上线失败或者CN副本在重启,都有可能出现 META_COLUMN_NOT_EXIST
  • 对于普通表

    一级普通表:新增字段且执行optimize成功后可查询到新增字段(老数据为null)。

    二级普通表:新增字段且需触发最大二级分区的optimize,待optimize成功后可查询到新增字段。

  • 对于未上线或者CN副本重启导致的报错,请检查上线情况或者重启情况。
    说明 optimize操作为异步后台操作(目前未开放接口给用户,可联系分析型数据库MySQL版技术支持),需等待任务完成后再做查询。

    查询刚刚创建的新表时报错 table is not ready

    新创建的表,可以INSERT数据,但查询该表报错 table is not ready
    ERROR 30007 (HY000): ProcessId=2017113014015101015416910909999087231 RT_ROUTER_ERROR tableId=28 DBId=1405 message=real time table is not ready.

    一般表建好以后,还需分配相应的资源,需等待几分钟表才能正常使用,否则就会报 not ready 错误。

    查询报错 NO_NODES_AVAILABLE

    报错关键字: NO_NODES_AVAILABLE

    报错信息:
    ERROR 1105 (HY000): MPP_QUERY_FAILED Retry_time=1 message=MPP engine error code: 30101, message: QueryError{message=Node for bucket is offline: [], sqlState=null, errorCode=65541, errorName=NO_NODES_AVAILABLE, errorType=INTERNAL_ERROR, errorLocation=null, failureInfo=mpp.client.FailureInfo@13887b2e}

    一般是数据库内部某个计算节点压力较大导致该节点暂时离线,系统能够自动修复。请用户过5~10分钟后重试。如果长时间出现该报错,请联系分析型数据库MySQL版技术支持。

    查询性能不稳定

    在分析型数据库MySQL版中执行SQL查询语句时,时慢时快。引起分析型数据库MySQL版查询不稳定的因素一般有以下几种:
  • 用户执行SQL时首次较慢,之后查询明显比第一次快,这是因为分析型数据库MySQL版自身带有缓存。第一次查询时会将数据缓存到内存中,若下次查询所需要的数据依然在内存中时,此时不用再次读磁盘,因此访问速度很快。
  • 用户使用的是普通表,且写入大量数据后未执行optimize操作,此时执行SQL会随着插入数据多而变得越来越慢。这是因为分析型数据库MySQL版的实时数据增量部分默认未建索引,因此执行查询时会频繁访问磁盘。为保证查询速度,建议当用户执行过大量INSERT或DELETE语句后,立即触发一次optimize table操作。
  • 用户对普通表执行大量的DELETE语句,而这些DELETE的条件中没有指定分区键,导致系统在所有分区上执行DELETE,耗费CN上大量CPU和内存资源。此时其他查询也有可能变慢或超时。
  • 按上述排查后还存在问题,请联系分析型数据库MySQL版技术支持。
  •