如何在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
相关产品推荐
相关产品推荐

