

# 高级选项
高级

## 提取大小


要在此请求中返回的最大结果（行）数。有关参数信息，请参阅 [GetQuery MaxResults](https://docs.amazonaws.cn/athena/latest/APIReference/API_GetQueryResults.html#athena-GetQueryResults-request-MaxResults)。对于流式处理 API，最大值为 10000000。


****  

| **连接字符串名称** | **参数类型** | **默认值** | **连接字符串示例** | 
| --- | --- | --- | --- | 
| RowsToFetchPerBlock | 可选 |  `1000`（对于非流式处理） `20000`（对于流式处理）  | RowsToFetchPerBlock=20000; | 

## 结果提取器


默认结果提取器直接从 Amazon S3 下载查询结果，而无需通过 Athena API 操作获取。当它检测到无法直接下载 S3 的情况时，它会自动回退到使用 `GetQueryResultsStream` API 操作。例如，当使用 `CSE_KMS` 选项加密查询结果时，就会发生这种情况。

在大多数情况下，建议使用 `auto` 提取器。但是，如果 IAM 策略或 S3 存储桶策略使用 `s3:CalledVia` 条件将对 S3 对象的访问限制为来自 Athena 的请求，则自动提取器将首先尝试从 S3 下载结果，然后再回退到使用 `GetQueryResultsStream`。在这种情况下，您可能需要将 `ResultFetcher` 设置为 `GetQueryResultsStream`，以避免额外的 API 调用。

**注意**  
驱动程序仍可识别“启用流式处理 API”(`UseResultsetStreaming=1;`) 和“启用 S3 提取器”(`EnableS3Fetcher=1;`) 参数。但是，我们鼓励您使用 `ResultFetcher` 参数以获得更好的体验。


****  

| **连接字符串名称** | **参数类型** | **默认值** | **可能的值** | **连接字符串示例** | 
| --- | --- | --- | --- | --- | 
|  ResultFetcher  | 可选 | auto | auto, S3, GetQueryResults, GetQueryResultsStream | ResultFetcher=auto | 

## 启用结果重用


指定运行查询时是否可以重用先前查询结果。有关参数信息，请参阅 ResultReuseByAgeConfiguration。


****  

| **连接字符串名称** | **参数类型** | **默认值** | **连接字符串示例** | 
| --- | --- | --- | --- | 
| EnableResultReuse | 可选 | 0 | EnableResultReuse=1; | 

## 结果重用最长使用期限


以分钟为单位指定 Athena 应考虑的先前查询结果的重用最长使用期限。有关参数信息，请参阅 [ResultReuseByAgeConfiguration](https://docs.amazonaws.cn/athena/latest/APIReference/API_ResultReuseByAgeConfiguration.html)。


****  

| **连接字符串名称** | **参数类型** | **默认值** | **连接字符串示例** | 
| --- | --- | --- | --- | 
| ReusedResultMaxAgeInMinutes | 可选 | 60 | ReusedResultMaxAgeInMinutes=90; | 

## 使用多个 S3 线程


使用多个线程从 Amazon S3 获取数据。启用此选项后，存储在 Amazon S3 存储桶中的结果文件将使用多个线程并行获取。

仅当网络带宽适合时，才启用此选项。例如，在我们对 EC2 [c5.2xlarge](https://www.amazonaws.cn/ec2/instance-types/c5/) 实例进行的测量中，单线程 S3 客户端的网络吞吐量达到了 1Gbps，而多线程 S3 客户端达到了 4Gbps。


****  

| **连接字符串名称** | **参数类型** | **默认值** | **连接字符串示例** | 
| --- | --- | --- | --- | 
|  UseMultipleS3Threads  | 可选 | 0 | UseMultipleS3Threads=1; | 

## 使用单一目录和架构


默认情况下，ODBC 驱动程序会查询 Athena 以获取可用目录和架构列表。此选项将强制驱动程序使用 ODBC 数据来源管理器配置对话框或连接参数指定的目录和架构。


****  

| **连接字符串名称** | **参数类型** | **默认值** | **连接字符串示例** | 
| --- | --- | --- | --- | 
| UseSingleCatalogAndSchema | 可选 | 0 | UseSingleCatalogAndSchema=1; | 

## 使用查询来列出表


对于 `LAMBDA` 目录类型，允许 ODBC 驱动程序提交[SHOW TABLES](show-tables.md)查询来获取可用表的列表。此设置是默认设置。如果此参数设置为 0，则 ODBC 驱动程序将使用 Athena [ListTableMetadata](https://docs.amazonaws.cn/athena/latest/APIReference/API_ListTableMetadata.html) API 来获取可用表的列表。请注意，对于 `LAMBDA` 目录类型，使用 `ListTableMetadata` 会导致性能下降。


****  

| **连接字符串名称** | **参数类型** | **默认值** | **连接字符串示例** | 
| --- | --- | --- | --- | 
| UseQueryToListTables | 可选 | 1 | UseQueryToListTables=1; | 

## 使用 WCHAR 作为字符串类型


默认情况下，ODBC 驱动程序在 Athena 中使用 `SQL_CHAR` 和 `SQL_VARCHAR` 字符串数据类型 `char`、`varchar`、`string`、`array`、`map<>`、`struct<>` 和 `row`。将此参数设置为 `1`，会强制驱动程序将 `SQL_WCHAR` 和 `SQL_WVARCHAR` 作为字符串数据类型。使用宽字符和宽可变字符类型，可确保正确存储和检索不同语言的字符。


****  

| **连接字符串名称** | **参数类型** | **默认值** | **连接字符串示例** | 
| --- | --- | --- | --- | 
| UseWCharForStringTypes | 可选 | 0 | UseWCharForStringTypes=1; | 

## 查询外部目录


指定驱动程序是否需要从 Athena 查询外部目录。有关更多信息，请参阅 [迁移到 ODBC 2.x 驱动程序](odbc-v2-driver-migrating.md)。


****  

| **连接字符串名称** | **参数类型** | **默认值** | **连接字符串示例** | 
| --- | --- | --- | --- | 
| QueryExternalCatalogs | 可选 | 0 | QueryExternalCatalogs=1; | 

## 验证 SSL


控制在使用 Amazon SDK 时是否验证 SSL 证书。此值将传递给 `ClientConfiguration.verifySSL` 参数。有关更多信息，请参阅《适用于 C\$1\$1 的 Amazon SDK 开发人员指南》**中的 [Amazon 客户端配置](https://docs.amazonaws.cn/sdk-for-cpp/v1/developer-guide/client-config.html)。


****  

| **连接字符串名称** | **参数类型** | **默认值** | **连接字符串示例** | 
| --- | --- | --- | --- | 
| VerifySSL | 可选 | 1 | VerifySSL=0; | 

## S3 结果块大小


以字节为单位指定要为单一 Amazon S3 [GetObject](https://docs.amazonaws.cn/AmazonS3/latest/API/API_GetObject.html) API 请求下载的数据块大小。默认值为 67108864（64MB）。允许的最小值和最大值分别为 10485760（10MB）和 2146435072（约 2GB）。


****  

| **连接字符串名称** | **参数类型** | **默认值** | **连接字符串示例** | 
| --- | --- | --- | --- | 
| S3ResultBlockSize | 可选 | 67108864 | S3ResultBlockSize=268435456; | 

## 字符串列长度


为具有 `string` 数据类型的列指定列长度。由于 Athena 使用 [Apache Hive 字符串数据类型](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Types#LanguageManualTypes-StringsstringStrings)，但该数据类型并未定义精度，所以 Athena 报告的默认长度为 2147483647 (`INT_MAX`)。商业智能工具通常会为列预先分配内存，这可能会导致内存消耗较高。为避免这种情况，Athena ODBC 驱动程序会限制 `string` 数据类型列的报告精度，也会公开 `StringColumnLength` 连接参数，以便可以更改默认值。


****  

| 连接字符串名称 | 参数类型 | 默认 值 | 连接字符串示例 | 
| --- | --- | --- | --- | 
| StringColumnLength | 可选 | 255 | StringColumnLength=65535; | 

## 复杂类型列长度


为具有复杂数据类型（如 `map`、`struct` 和 `array`）的列指定列长度。与 [StringColumnLength](#odbc-v2-driver-advanced-options-string-column-length) 一样，对于具有复杂数据类型的列，Athena 报告的精度为 0。Athena ODBC 驱动程序会为具有复杂数据类型的列设置默认精度，也会公开 `ComplexTypeColumnLength` 连接参数，以便可以更改默认值。


****  

| 连接字符串名称 | 参数类型 | 默认 值 | 连接字符串示例 | 
| --- | --- | --- | --- | 
| ComplexTypeColumnLength | 可选 | 65535 | ComplexTypeColumnLength=123456; | 

## 可信 CA 证书


指示 HTTP 客户端查找 SSL 证书信任存储的位置。此值将传递给 `ClientConfiguration.caFile` 参数。有关更多信息，请参阅《适用于 C\$1\$1 的 Amazon SDK 开发人员指南》**中的 [Amazon 客户端配置](https://docs.amazonaws.cn/sdk-for-cpp/v1/developer-guide/client-config.html)。


****  

| **连接字符串名称** | **参数类型** | **默认值** | **连接字符串示例** | 
| --- | --- | --- | --- | 
| TrustedCerts | 可选 | %INSTALL\$1PATH%/bin | TrustedCerts=C:\$1\$1Program Files\$1\$1Amazon Athena ODBC Driver\$1\$1bin\$1\$1cacert.pem; | 

## 最小轮询期


指定在 Athena 中轮询查询执行状态之前要等待的最小时间值（以毫秒为单位）。


****  

| **连接字符串名称** | **参数类型** | **默认值** | **连接字符串示例** | 
| --- | --- | --- | --- | 
| MinQueryExecutionPollingInterval | 可选 | 100 | MinQueryExecutionPollingInterval=200; | 

## 最大轮询期


指定在 Athena 中轮询查询执行状态之前要等待的最大时间值（以毫秒为单位）。


****  

| **连接字符串名称** | **参数类型** | **默认值** | **连接字符串示例** | 
| --- | --- | --- | --- | 
| MaxQueryExecutionPollingInterval | 可选 | 60000 | MaxQueryExecutionPollingInterval=1000; | 

## 轮询乘数


指定增加轮询期的系数。默认情况下，轮询以最小轮询期值开始，每次轮询时都翻倍，直到达到最大轮询期值。


****  

| **连接字符串名称** | **参数类型** | **默认值** | **连接字符串示例** | 
| --- | --- | --- | --- | 
| QueryExecutionPollingIntervalMultiplier | 可选 | 2 | QueryExecutionPollingIntervalMultiplier=2; | 

## 最长轮询持续时间


指定驱动程序可以在 Athena 中轮询查询执行状态的最大时间值（以毫秒为单位）。


****  

| **连接字符串名称** | **参数类型** | **默认值** | **连接字符串示例** | 
| --- | --- | --- | --- | 
| MaxPollDuration | 可选 | 1800000 | MaxPollDuration=1800000; | 

## 连接超时


HTTP 连接等待建立连接的时间长度（以毫秒为单位）。此值是为 `ClientConfiguration.connectTimeoutMs` Athena 客户端设置的。如果未指定，则使用 curl 的默认值。有关连接参数的信息，请参阅《适用于 Java 的 Amazon SDK 开发人员指南》**中的[客户端配置](https://docs.amazonaws.cn/sdk-for-java/v1/developer-guide/section-client-configuration.html)。


****  

| **连接字符串名称** | **参数类型** | **默认值** | **连接字符串示例** | 
| --- | --- | --- | --- | 
| ConnectionTimeout | 可选 | 0 | ConnectionTimeout=2000; | 

## 请求超时


指定 HTTP 客户端的套接字读取超时。此值是为 Athena 客户端的 `ClientConfiguration.requestTimeoutMs` 参数设置的。有关更多信息，请参阅《适用于 Java 的 Amazon SDK 开发人员指南》**中的[客户端配置](https://docs.amazonaws.cn/sdk-for-java/v1/developer-guide/section-client-configuration.html)。


****  

| **连接字符串名称** | **参数类型** | **默认值** | **连接字符串示例** | 
| --- | --- | --- | --- | 
| RequestTimeout | 可选 | 10000 | RequestTimeout=30000; | 