数仓现网案例丨超大结果集接收异常

💡 原文中文,约2300字,阅读约需6分钟。
📝

内容提要

本文介绍了一个超大结果集接收异常的案例,通过历史topsql记录查询语句执行情况定位问题,发现查询遇到FATAL、PANIC错误导致异常结束。根因分析发现,临时文件超出最大值时,客户端断连导致数据发送中断,产生报错。改善办法包括避免超大结果集查询、增大客户端内存等。

🎯

关键要点

  • 本文介绍了超大结果集接收异常的案例,涉及GaussDB 8.1.3版本。
  • 用户在使用数据库客户端工具执行查询时,出现异常中断,错误信息为'Last read message sequence %d is not equal to the max written message sequence %d'。
  • 通过历史topsql记录查询语句执行情况,发现查询因FATAL、PANIC错误异常结束,状态信息仅显示aborted。
  • 根因分析显示,当临时文件超出最大值时,客户端断连导致数据发送中断,产生报错。
  • 相关GUC参数包括cn_send_buffer_size和max_cn_temp_file_size,分别控制数据发送缓存区大小和临时文件最大值。
  • 场景复现中,正常接收场景和异常中断场景的对比,展示了客户端内存不足导致的发送失败。
  • 改善办法包括避免超大结果集查询和增大客户端内存,以防止内存不足。
  • 报错信息符合预期,需通过业务语句改写或客户端环境改善来解决。
➡️

继续阅读