You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AWS Athena中禁用缓存?CSV与Parquet性能对比需求

AWS Athena 查询缓存禁用方案(适配CSV vs Parquet性能测试)

先给你明确答案:AWS Athena默认是开启查询结果缓存的,所以你做性能对比时必须主动禁用它,才能避免重复查询的耗时被缓存干扰。下面是几种靠谱的实现方式:

1. 单次会话临时禁用(控制台/CLI通用)

每次跑性能测试查询前,先执行这条SQL语句:

SET query_results_cache_enabled = false;

这条命令会临时关闭当前会话的缓存,后续的查询都会从头计算,不会复用之前的结果。测试结束后要恢复的话,执行SET query_results_cache_enabled = true;就行。

2. 工作组级永久禁用(适合长期测试)

如果你的测试都在同一个工作组里,可以直接改工作组的配置,一劳永逸:

  • 打开Athena控制台,切换到你用的工作组
  • 点击「编辑工作组」
  • 在「查询结果缓存」选项里选「禁用」
  • 保存后,这个工作组下的所有查询都会默认禁用缓存,不用每次手动设参数。

3. API/SDK调用时指定禁用(自动化测试场景)

如果用代码(比如Python的boto3)提交查询,可以在请求里直接指定禁用缓存。举个例子:

import boto3

athena_client = boto3.client('athena')

response = athena_client.start_query_execution(
    QueryString='SELECT ... FROM your_test_table',  # 你的性能测试查询
    QueryExecutionContext={'Database': 'your_db'},
    ResultConfiguration={'OutputLocation': 's3://your-result-bucket/path/'},
    ExecutionParameters=['query_results_cache_enabled=false']  # 直接传递禁用缓存的参数
)

避坑提醒:别用随机条件绕缓存

有些同学会在查询里加AND rand() > 0这种无意义的条件来避开缓存,但这种操作可能会改变查询的执行计划,导致性能数据失真,所以强烈建议用前面几种直接禁用缓存的方法,不要用这种 workaround。

内容的提问来源于stack exchange,提问作者Kunal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:53:49