属性参考¶
本节介绍了最重要的配置属性,这些属性可用于调整 Presto 或在需要时更改其行为。
以下页面并非 Presto 中所有可用配置和会话属性的完整列表,也不包括任何连接器特定的目录配置属性。有关目录配置属性的更多信息,请参阅 连接器文档。
通用属性¶
join-distribution-type
¶
类型:
string
允许值:
AUTOMATIC
,PARTITIONED
,BROADCAST
默认值:
AUTOMATIC
要使用的分布式联接类型。当设置为 PARTITIONED
时,Presto 将使用散列分布式联接。当设置为 BROADCAST
时,它会将右侧表广播到集群中具有左侧表数据的所有节点。分区联接需要使用联接键的散列重新分配两个表。这可能比广播联接慢(有时快得多),但允许联接更大的表。特别是,如果右侧表远小于左侧表,则广播联接会更快。但是,广播联接要求右侧表在过滤后在每个节点的内存中容纳,而分布式联接只需要在所有节点的分布式内存中容纳。当设置为 AUTOMATIC
时,Presto 将根据成本做出最佳分布类型是哪种的决策。它还会考虑交换联接的左右输入。在 AUTOMATIC
模式下,如果无法计算成本,例如,如果表没有统计信息,Presto 将默认使用散列分布式联接。这也可以使用 join_distribution_type
会话属性在每个查询的基础上指定。
redistribute-writes
¶
类型:
boolean
默认值:
true
此属性启用写入前的数据重新分配。通过在集群中的节点上对数据进行散列,这可以消除数据倾斜在写入时的性能影响。如果已知输出数据集没有倾斜,则可以禁用它以避免对所有数据进行散列和重新分配到网络中的开销。这也可以使用 redistribute_writes
会话属性在每个查询的基础上指定。
内存管理属性¶
query.max-memory-per-node
¶
类型:
data size
默认值:
JVM max memory * 0.1
这是查询在工作程序上可以使用的最大用户内存量。用户内存是在执行期间为可以直接归因于或由用户查询控制的事物分配的。例如,执行期间散列表使用的内存,排序期间使用的内存等。当工作程序上查询的用户内存分配达到此限制时,它将被终止。
query.max-total-memory-per-node
¶
类型:
data size
默认值:
query.max-memory-per-node * 2
这是查询在 worker 上可以使用的用户和系统内存的最大值。系统内存是在执行期间分配的,用于不直接归因于或受用户查询控制的事物。例如,由读取器、写入器、网络缓冲区等分配的内存。当查询在任何 worker 上分配的用户和系统内存之和达到此限制时,查询将被终止。 的值 query.max-total-memory-per-node
必须大于 query.max-memory-per-node
.
query.max-memory
¶
类型:
data size
默认值:
20GB
这是查询在整个集群中可以使用的用户内存的最大值。用户内存是在执行期间分配的,用于直接归因于或受用户查询控制的事物。例如,在执行期间构建的哈希表使用的内存、排序期间使用的内存等。当查询在所有 worker 上的用户内存分配达到此限制时,查询将被终止。
query.max-total-memory
¶
类型:
data size
默认值:
query.max-memory * 2
这是查询在整个集群中可以使用的用户和系统内存的最大值。系统内存是在执行期间分配的,用于不直接归因于或受用户查询控制的事物。例如,由读取器、写入器、网络缓冲区等分配的内存。当查询在所有 worker 上分配的用户和系统内存之和达到此限制时,查询将被终止。 的值 query.max-total-memory
必须大于 query.max-memory
.
memory.heap-headroom-per-node
¶
类型:
data size
默认值:
JVM max memory * 0.3
这是在 JVM 堆中预留的内存量,作为 Presto 未跟踪的分配的额外空间/缓冲区。
query.low-memory-killer.policy
¶
类型:
string
默认值:
none
用于选择在集群内存不足 (OOM) 时要终止的查询的策略。此属性可以取以下值之一: none
、 total-reservation
或 total-reservation-on-blocked-nodes
。 none
禁用集群 OOM 终止程序。 的值 total-reservation
配置一个策略,该策略终止在整个集群中具有最大内存保留的查询。 的值 total-reservation-on-blocked-nodes
配置一个策略,该策略终止在内存不足 (阻塞) 的 worker 上使用最多内存的查询。
溢出属性¶
experimental.spill-enabled
¶
类型:
boolean
默认值:
false
尝试将内存溢出到磁盘,以避免超出查询的内存限制。
溢出通过将内存卸载到磁盘来工作。此过程可以允许内存占用量大的查询通过,但代价是执行速度变慢。目前,溢出仅支持聚合和连接(内连接和外连接),因此此属性不会减少窗口函数、排序和其他连接类型所需的内存使用量。
请注意,这是一个实验性功能,应谨慎使用。
此配置属性可以被 spill_enabled
会话属性覆盖。
experimental.join-spill-enabled
¶
类型:
boolean
默认值:
true
当 spill_enabled
为 true
时,这将确定 Presto 是否会尝试将内存溢出到磁盘以用于连接,以避免超出查询的内存限制。
此配置属性可以被 join_spill_enabled
会话属性覆盖。
experimental.aggregation-spill-enabled
¶
类型:
boolean
默认值:
true
当 spill_enabled
为 true
时,这将确定 Presto 是否会尝试将内存溢出到磁盘以用于聚合,以避免超出查询的内存限制。
此配置属性可以被 aggregation_spill_enabled
会话属性覆盖。
experimental.distinct-aggregation-spill-enabled
¶
类型:
boolean
默认值:
true
当 aggregation_spill_enabled
为 true
时,这将确定 Presto 是否会尝试将内存溢出到磁盘以用于不同聚合,以避免超出查询的内存限制。
此配置属性可以被 distinct_aggregation_spill_enabled
会话属性覆盖。
experimental.order-by-aggregation-spill-enabled
¶
类型:
boolean
默认值:
true
当 aggregation_spill_enabled
为 true
时,这将确定 Presto 是否会尝试将内存溢出到磁盘以用于排序聚合,以避免超出查询的内存限制。
此配置属性可以被 order_by_aggregation_spill_enabled
会话属性覆盖。
experimental.window-spill-enabled
¶
类型:
boolean
默认值:
true
当 spill_enabled
为 true
时,这将确定 Presto 是否会尝试将内存溢出到磁盘以用于窗口函数,以避免超出查询的内存限制。
此配置属性可以被 window_spill_enabled
会话属性覆盖。
experimental.order-by-spill-enabled
¶
类型:
boolean
默认值:
true
当 spill_enabled
为 true
时,这将确定 Presto 是否会尝试将内存溢出到磁盘以用于排序,以避免超出查询的内存限制。
此配置属性可以被 order_by_spill_enabled
会话属性覆盖。
experimental.spiller.task-spilling-strategy
¶
类型:
string
允许的值:
ORDER_BY_CREATE_TIME
、ORDER_BY_REVOCABLE_BYTES
、PER_TASK_MEMORY_THRESHOLD
默认值:
ORDER_BY_CREATE_TIME
确定用于选择何时撤销内存以及从哪些任务撤销内存的策略。
ORDER_BY_CREATE_TIME
和 ORDER_BY_REVOCABLE_BYTES
将在内存池超出 experimental.memory-revoking-threshold
时触发溢出,直到内存池使用量低于 experimental.memory-revoking-target
。 ORDER_BY_CREATE_TIME
将首先从较旧的任务中触发撤销,而 ORDER_BY_REVOCABLE_BYTES
将首先从使用更多可撤销内存的任务中触发撤销。
PER_TASK_MEMORY_THRESHOLD
将在任务的可撤销内存使用量超过 experimental.spiller.max-revocable-task-memory
时触发溢出。
警告
PER_TASK_MEMORY_THRESHOLD
策略不会在内存池已满时触发溢出,这可能会阻止内存不足查询终止程序启动。如果 Presto 在没有保留内存池的情况下运行,这尤其危险。
experimental.memory-revoking-threshold
¶
类型:
double
最小值:
0
最大值:
1
默认值:
0.9
当内存池超出此百分比时触发内存撤销。
experimental.memory-revoking-target
¶
类型:
double
最小值:
0
最大值:
1
默认值:
0.5
在撤销内存时,尝试撤销足够的内存,以便最终内存池的使用量低于目标百分比。
experimental.query-limit-spill-enabled
¶
类型:
boolean
默认值:
false
当溢出已启用且 experimental.spiller.task-spilling-strategy
为 ORDER_BY_CREATE_TIME
或 ORDER_BY_REVOCABLE_BYTES
时,当查询的可撤销内存、用户内存和系统内存总和超过 query_max_total_memory_per_node
时,也会从查询中溢出可撤销内存。这允许查询具有更一致的性能,而与集群上的负载无关,但代价是效率较低地使用可用内存。
experimental.spiller.max-revocable-task-memory
¶
类型:
data size
默认值:
500MB
如果 experimental.spiller.task-spilling-strategy
设置为 PER_TASK_MEMORY_THRESHOLD
,此属性定义触发任务溢出的阈值。此属性对于任何其他溢出策略都将被忽略。
experimental.max-revocable-memory-per-node
¶
类型:
data size
默认值:
16GB
此属性定义查询在每个节点上可以使用的可撤销内存量。
experimental.spiller-spill-path
¶
类型:
string
没有默认值。 启用溢出时必须设置。
溢出内容将写入的目录。它可以是逗号分隔的列表,以便同时溢出到多个目录,这有助于利用系统中安装的多个驱动器。
不建议溢出到系统驱动器。最重要的是,不要溢出到写入 JVM 日志的驱动器,因为磁盘过度使用可能会导致 JVM 暂停很长时间,从而导致查询失败。
experimental.spiller-max-used-space-threshold
¶
类型:
double
默认值:
0.9
如果给定溢出路径的磁盘空间使用率高于此阈值,则此溢出路径将不再适合溢出。
experimental.spiller-threads
¶
类型:
integer
默认值:
4
溢出线程的数量。如果默认值无法使底层溢出设备饱和(例如,使用 RAID 时),请增加此值。
experimental.max-spill-per-node
¶
类型:
data size
默认值:
100 GB
单个节点上所有查询使用的最大溢出空间。
experimental.query-max-spill-per-node
¶
类型:
data size
默认值:
100 GB
单个节点上单个查询使用的最大溢出空间。
experimental.aggregation-operator-unspill-memory-limit
¶
类型:
data size
默认值:
4 MB
用于取消溢出单个聚合运算符实例的内存限制。此配置属性可以被 aggregation_operator_unspill_memory_limit
会话属性覆盖。
experimental.spill-compression-enabled
¶
类型:
boolean
默认值:
false
启用对溢出到磁盘的页面的数据压缩。
experimental.spill-encryption-enabled
¶
类型:
boolean
默认值:
false
启用使用随机生成的密钥(每个溢出文件)来加密和解密溢出到磁盘的数据。
experimental.spiller.single-stream-spiller-choice
¶
类型:
String
默认值:
LOCAL_FILE
启用溢出时将使用的单流溢出器。有两个选项:LOCAL_FILE(默认)和 TEMP_STORAGE。
experimental.spiller.spiller-temp-storage
¶
类型:
String
默认值:
local
当 experimental.spiller.single-stream-spiller-choice
设置为 TEMP_STORAGE 时,溢出器使用的临时存储。
experimental.temp-storage-buffer-size
¶
类型:
Data Size
默认值:
4KB
当 experimental.spiller.single-stream-spiller-choice
设置为 TEMP_STORAGE 时,缓冲区的尺寸。
交换属性¶
交换在 Presto 节点之间传输数据,以执行查询的不同阶段。调整这些属性可能有助于解决节点间通信问题或改善网络利用率。
exchange.client-threads
¶
类型:
integer
最小值:
1
默认值:
25
交换客户端用来从其他 Presto 节点获取数据的线程数量。较高的值可以改善大型集群或高并发集群的性能,但过高的值可能会导致性能下降,因为上下文切换和额外的内存使用。
exchange.concurrent-request-multiplier
¶
类型:
integer
最小值:
1
默认值:
3
确定相对于可用缓冲内存的并发请求数量的乘数。最大请求数量是根据平均每个请求缓冲使用量乘以该乘数来计算可以放入可用缓冲空间的客户端数量的启发式方法确定的。例如,如果 exchange.max-buffer-size
为 32 MB
,并且已经使用了 20 MB
,而每个请求的平均大小为 2MB
,则最大客户端数量为 multiplier * ((32MB - 20MB) / 2MB) = multiplier * 6
。调整此值可以调整启发式方法,这可能会增加并发性并改善网络利用率。
exchange.max-buffer-size
¶
类型:
data size
默认值:
32MB
交换客户端中用于保存从其他节点获取的数据(在处理数据之前)的缓冲区的尺寸。更大的缓冲区可以提高大型集群的网络吞吐量,从而减少查询处理时间,但会减少可用于其他用途的内存量。
exchange.max-response-size
¶
类型:
data size
最小值:
1MB
默认值:
16MB
从交换请求返回的响应的最大尺寸。响应将被放置在交换客户端缓冲区中,该缓冲区在所有针对交换的并发请求中共享。
如果存在高延迟,则增加该值可能会改善网络吞吐量。减少该值可能会改善大型集群的查询性能,因为它减少了偏斜,因为交换客户端缓冲区保存了更多任务的响应(而不是保存更少任务的更多数据)。
sink.max-buffer-size
¶
类型:
data size
默认值:
32MB
正在等待上游任务拉取的任务数据的输出缓冲区尺寸。如果任务输出是哈希分区,则缓冲区将跨所有分区消费者共享。如果网络具有高延迟或集群中有许多节点,则增加此值可能会改善在阶段之间传输数据的网络吞吐量。
任务属性¶
task.concurrency
¶
类型:
integer
限制: 必须是 2 的幂。
默认值:
16
并行运算符(例如连接和聚合)的默认本地并发性。此值应根据查询并发性和工作程序资源利用率进行调整。对于同时运行许多查询的集群,较低的值更好,因为集群将已经被所有正在运行的查询利用,因此增加并发性会导致由于上下文切换和其他开销而导致的减速。对于一次只运行一个或几个查询的集群,较高的值更好。这也可以使用 task_concurrency
会话属性在每个查询的基础上指定。
task.http-response-threads
¶
类型:
integer
最小值:
1
默认值:
100
可以创建的用于处理 HTTP 响应的线程的最大数量。线程是按需创建的,并在空闲时清理,因此如果要处理的请求数量很少,则不会对较大的值造成开销。在具有大量并发查询的集群中,或者在具有数百或数千个工作程序的集群中,更多线程可能会有所帮助。
task.http-timeout-threads
¶
类型:
integer
最小值:
1
默认值:
3
用于在生成 HTTP 响应时处理超时时间的线程数量。如果所有线程经常被使用,则应增加此值。这可以通过 com.facebook.presto.server:name=AsyncHttpExecutionMBean:TimeoutExecutor
JMX 对象进行监控。如果 ActiveCount
始终与 PoolSize
相同,则增加线程数量。
task.info-update-interval
¶
类型:
duration
最小值:
1ms
最大值:
10s
默认值:
3s
控制任务信息的陈旧程度,该信息用于调度。较大的值可以减少协调器 CPU 负载,但可能会导致次优拆分调度。
task.max-partial-aggregation-memory
¶
类型:
data size
默认值:
16MB
分布式聚合的局部聚合结果的最大大小。增加此值可以减少网络传输量,并通过允许在刷新之前在本地保留更多组来降低 CPU 利用率,但代价是增加内存使用量。
task.max-worker-threads
¶
类型:
integer
默认值:
Node CPUs * 2
设置工作进程用于处理拆分的线程数。如果工作进程 CPU 利用率较低且所有线程都在使用中,增加此数字可以提高吞吐量,但会导致堆空间使用量增加。如果设置的值过高,由于上下文切换,可能会导致性能下降。活动线程数可通过 com.facebook.presto.execution.executor:name=TaskExecutor.RunningSplits
JXM 对象的 RunningSplits
属性获取。
线程数可以使用绝对值(例如,10
)或相对于可用 CPU 内核数量的值(例如,1.5C
)来配置。使用相对值时,线程数将根据可用 CPU 内核乘以指定因子(例如,1.5
)并四舍五入到最接近的整数来计算。
task.min-drivers
¶
类型:
integer
默认值:
task.max-worker-threads * 2
工作进程上运行的叶级拆分目标数量。这是一个最小值,因为每个叶级任务至少保证有 3
个运行的拆分。非叶级任务也保证运行以防止死锁。较低的值可能会提高新任务的响应速度,但会导致资源利用不足。较高的值可以提高资源利用率,但会使用更多内存。
task.writer-count
¶
类型:
integer
限制: 必须是 2 的幂。
默认值:
1
每个工作进程每个查询的并发写入线程数。增加此值可能会提高写入速度,尤其是在查询不绑定 I/O 并且可以利用额外的 CPU 进行并行写入时(一些连接器在写入时可能会因压缩或其他因素而受到 CPU 的瓶颈)。如果设置过高,可能会导致集群因过度使用资源而变得过载。这也可以在查询的基础上使用 task_writer_count
会话属性来指定。
task.interrupt-runaway-splits-timeout
¶
类型:
duration
默认值:
10m
中断阻塞而没有释放控制权的拆分线程的超时时间。只有在特定位置阻塞的线程才会被中断。目前这只是在 Joni 正则表达式库中阻塞的线程。
节点调度程序属性¶
node-scheduler.max-splits-per-node
¶
类型:
integer
默认值:
100
每个工作进程节点可以运行的拆分数量的目标值,假设所有拆分都具有标准拆分权重。
如果查询以大批次提交(例如,定期运行大量报告)或对于产生许多快速完成但不支持分配拆分权重值来向拆分调度程序表达该值的连接器,建议使用较高的值。增加此值可能会通过确保工作进程具有足够的拆分来保持其充分利用而提高查询延迟。
当连接器支持基于权重的拆分调度时,分配的拆分数量将取决于各个拆分的权重。如果拆分很小,则允许更多拆分分配给每个工作进程以进行补偿。
如果设置过高,会浪费内存,并且可能会导致性能下降,因为拆分没有在工作进程之间平衡。理想情况下,它应该设置为始终至少有一个拆分等待处理,但不要更高。
node-scheduler.max-pending-splits-per-task
¶
类型:
integer
默认值:
10
对于查询的单个阶段,每个工作进程节点可以排队的具有标准拆分权重的未完成拆分数量,即使该节点已经达到总拆分数量的限制。允许每个阶段有最少的拆分数量是防止饥饿和死锁所必需的。
此值必须小于 node-scheduler.max-splits-per-node
,通常会因相同原因而增加,并且如果设置过高,会有类似的缺点。
node-scheduler.min-candidates
¶
类型:
integer
最小值:
1
默认值:
10
节点调度程序在选择拆分目标节点时将评估的候选节点的最小数量。如果将此值设置得太低,可能会阻止拆分在所有工作进程节点之间正确平衡。如果设置得太高,可能会增加查询延迟并增加协调器的 CPU 使用量。
node-scheduler.network-topology
¶
类型:
string
允许的值:
legacy
,flat
默认值:
legacy
设置调度拆分时要使用的网络拓扑。 legacy
在调度拆分时会忽略拓扑。 flat
会尝试将拆分调度到数据所在的宿主机,方法是为本地拆分保留 50% 的工作队列。对于分布式存储在与 Presto 工作进程相同的节点上运行的集群,建议使用 flat
。
优化器属性¶
optimizer.dictionary-aggregation
¶
类型:
boolean
默认值:
false
启用对字典上的聚合的优化。这也可以在查询的基础上使用 dictionary_aggregation
会话属性来指定。
optimizer.optimize-hash-generation
¶
类型:
boolean
默认值:
true
在执行期间尽早计算用于分布、连接和聚合的哈希码,允许在查询后面的操作之间共享结果。这可以通过避免多次计算相同的哈希来减少 CPU 使用量,但代价是增加哈希的网络传输量。在大多数情况下,它会减少整体查询处理时间。这也可以在查询的基础上使用 optimize_hash_generation
会话属性来指定。
使用 EXPLAIN 时,通常禁用此属性有助于使查询计划更易于阅读。
optimizer.optimize-metadata-queries
¶
类型:
boolean
默认值:
false
启用通过使用存储为元数据的数值来优化某些聚合。这允许 Presto 在恒定时间内执行一些简单的查询。目前,此优化适用于分区键的 max
、min
和 approx_distinct
以及不受输入基数影响的其他聚合(包括 DISTINCT
聚合)。使用它可能会显着加快一些查询。
主要缺点是,如果连接器返回没有行的分区的分区键,则可能会产生不正确的结果。特别是,Hive 连接器可以在其他系统创建它们时返回空分区(Presto 无法创建它们)。
optimizer.optimize-single-distinct
¶
类型:
boolean
默认值:
true
单一 distinct 优化将尝试用单个 GROUP BY
子句替换多个 DISTINCT
子句,这在执行上可能会快得多。
optimizer.push-aggregation-through-join
¶
类型:
boolean
默认值:
true
当聚合在外部连接之上,并且来自连接外部的所有列都在分组子句中时,聚合将被推送到外部连接之下。这种优化对于相关标量子查询特别有用,相关标量子查询被重写为外部连接上的聚合。例如
SELECT * FROM item i
WHERE i.i_current_price > (
SELECT AVG(j.i_current_price) FROM item j
WHERE i.i_category = j.i_category);
启用这种优化可以通过减少连接需要处理的数据量来显着加快查询速度。但是,它可能会减慢具有非常选择性连接的某些查询的速度。这也可以在查询的基础上使用 push_aggregation_through_join
会话属性来指定。
optimizer.push-table-write-through-union
¶
类型:
boolean
默认值:
true
在使用 UNION ALL
且写入数据的查询中并行化写入。这提高了在 UNION ALL
查询中写入输出表的的速度,因为这些写入在收集结果时不需要额外的同步。当写入速度尚未饱和时,启用这种优化可以提高 UNION ALL
速度。但是,它可能会减慢已经在重负载系统中的查询速度。这也可以在查询的基础上使用 push_table_write_through_union
会话属性来指定。
optimizer.join-reordering-strategy
¶
类型:
string
允许的值:
AUTOMATIC
,ELIMINATE_CROSS_JOINS
,NONE
默认值:
AUTOMATIC
用于连接重排序的策略。 NONE
保持查询中列出的表的顺序。 ELIMINATE_CROSS_JOINS
重排序连接以尽可能消除交叉连接,并在其他情况下保持原始查询顺序。 在重排序连接时,它也尽可能保持原始表顺序。 AUTOMATIC
枚举可能的顺序,并使用基于统计的成本估算来确定最低成本顺序。 如果统计信息不可用,或者由于任何原因无法计算成本,则使用 ELIMINATE_CROSS_JOINS
策略。 这也可以使用 join_reordering_strategy
会话属性在每个查询的基础上指定。
optimizer.max-reordered-joins
¶
类型:
integer
默认值:
9
当 optimizer.join-reordering-strategy 设置为基于成本时,此属性确定可以一次重排序的最大连接数。
警告
可能的连接顺序的数量随关系数量呈阶乘增长,因此增加此值会导致严重的性能问题。
optimizer.use-defaults-for-correlated-aggregation-pushdown-through-outer-joins
¶
类型:
boolean
默认值:
true
聚合有时可以推到外部连接下方(参见 optimizer.push-aggregation-through-join)。 通常,聚合函数具有自定义空值处理行为。 为了正确处理外部连接可能产生的空值填充行,优化器引入了后续的交叉连接,其中包含对单个空值的相应聚合,然后将来自连接输出的聚合与这些空值聚合的值合并。
对于某些聚合函数(忽略空值的函数,COUNT
等),可以避免交叉连接,并且可以将 NULL
上的默认/已知聚合值直接与连接的聚合输出合并。 此优化消除了交叉连接,可能会将外部连接转换为内部连接,从而产生更优化的计划。
optimizer.rewrite-expression-with-constant-variable
¶
类型:
boolean
默认值:
true
从过滤和赋值表达式中提取具有常数值的表达式,并用常数值替换表达式。
optimizer.history-based-optimizer-plan-canonicalization-strategies
¶
类型:
string
默认值:
IGNORE_SAFE_CONSTANTS
用于将查询计划规范化为基于历史的优化的计划规范化策略。
optimizer.track-history-stats-from-failed-queries
¶
类型:
boolean
默认值:
true
跟踪来自失败查询中完整计划片段的基于历史的计划统计信息。
optimizer.log-plans-used-in-history-based-optimizer
¶
类型:
boolean
默认值:
false
记录基于历史的优化中使用的统计信息等效计划和规范化计划。
optimizer.exploit-constraints
¶
类型:
boolean
默认值:
true
启用对逻辑属性(如不同键或基数)在查询计划节点之间的分析和传播。 优化器可以随后使用这些属性来执行各种优化。
optimizer.confidence-based-broadcast
¶
类型:
boolean
默认值:
false
启用基于正在使用统计信息的置信度的广播,方法是广播具有最高(HIGH
或 FACT
)置信度统计信息的连接节点一侧。 如果两侧具有相同的置信度统计信息,则将遵循原始行为。 这也可以使用 confidence_based_broadcast
会话属性在每个查询的基础上指定。
optimizer.treat-low-confidence-zero-estimation-as-unknown
¶
类型:
boolean
默认值:
false
启用在连接期间将 LOW
置信度、零估计值视为 UNKNOWN
。 这也可以使用 treat-low-confidence-zero-estimation-as-unknown
会话属性在每个查询的基础上指定。
optimizer.retry-query-with-history-based-optimization
¶
类型:
boolean
默认值:
false
启用对可能通过 HBO 获益的失败查询进行重试。 这也可以使用 retry-query-with-history-based-optimization
会话属性在每个查询的基础上指定。
规划器属性¶
planner.query-analyzer-timeout
¶
类型:
duration
默认值:
3m
查询分析器的最大运行时间,以防处理时间过长或卡在无限循环中。 当超时到期时,规划器线程会被中断并抛出异常。
正则表达式函数属性¶
以下属性允许调整 正则表达式函数。
regex-library
¶
类型:
string
允许的值:
JONI
,RE2J
默认值:
JONI
用于正则表达式函数的库。 JONI
通常对于常见用法更快,但对于某些表达式模式可能需要指数时间。 RE2J
使用不同的算法,该算法保证线性时间,但通常速度较慢。
re2j.dfa-states-limit
¶
类型:
integer
最小值:
2
默认值:
2147483647
RE2J 在构建用于正则表达式匹配的快速但可能占用大量内存的确定性有限自动机 (DFA) 时使用的最大状态数。 如果达到限制,RE2J 将回退到使用较慢但内存占用较少的非确定性有限自动机 (NFA) 的算法。 降低此值会降低正则表达式搜索的最大内存占用,但会牺牲速度。
re2j.dfa-retries
¶
类型:
integer
最小值:
0
默认值:
5
RE2J 在使用较慢但内存占用较少的 NFA 算法处理所有后续输入之前,在达到状态限制时重试 DFA 算法的次数。 如果对给定输入行遇到限制很可能是异常值,您希望能够使用更快的 DFA 算法处理后续行。 如果您很可能对后续行的匹配也遇到限制,则您希望从一开始就使用正确的算法,以免浪费时间和资源。 您处理的行越多,此值就应该越大。
日志记录属性¶
log.max-history
¶
类型:
integer
默认值:
30
log.max-history
属性控制应用程序保留的存档日志时段数。 在 Presto 中,一个日志时段对应一天。 例如,如果 log.max-history
设置为 30,系统将保留过去 30 天的日志。
log.max-size
¶
类型:
data size
默认值:
100MB
通用应用程序日志文件的最大文件大小。
http-server.log.enabled
¶
类型:
boolean
默认值:
true
用于启用或禁用 HTTP 服务器日志记录的标志。
http-server.log.compression.enabled
¶
类型:
boolean
默认值:
true
用于启用或禁用 HTTP 服务器日志文件的压缩的标志。
http-server.log.path
¶
类型:
string
默认值:
var/log/http-request.log
HTTP 服务器使用的日志文件的路径。 该路径相对于数据目录,由启动脚本配置,如 运行 Presto 中所述。
http-server.log.max-history
¶
类型:
integer
默认值:
15
http-server.log.max-history
属性控制 HTTP 服务器保留的存档日志时段数。 在 Presto 中,一个日志时段对应一天。 例如,如果 http-server.log.max-history
设置为 15,系统将保留过去 15 天的日志。
http-server.log.max-size
¶
类型:
data size
默认值:
100MB
HTTP 服务器日志文件的最大文件大小。
与旧版本兼容的属性¶
legacy_json_cast
¶
类型:
boolean
默认值:
true
从 JSON
转换为 ROW
时,为了向后兼容,忽略 RowType
中字段名称的大小写,以便匹配不区分大小写。 将 legacy_json_cast
设置为 false
以在匹配时严格执行 RowType
中带双引号的字段名称的大小写敏感性。 未带引号的字段名称的匹配仍然不区分大小写。