DBAtlas · 数据库运维图谱

查看/修改优化器 / 并行设置

Oracle

SHOW PARAMETER optimizer;
-- Session: ALTER SESSION SET optimizer_mode = FIRST_ROWS_10;
-- Parallelism: ALTER SESSION FORCE PARALLEL QUERY PARALLEL 4;

optimizer_index_cost_adj 和 parallel_degree_policy 等设置会影响执行计划选择;修改时需谨慎。

PostgreSQL

SHOW random_page_cost;
SHOW max_parallel_workers_per_gather;
-- Session: SET enable_seqscan = off;

在 SSD 上,推荐 random_page_cost ~1.1。enable_* 开关用于诊断,而不是长期解决方案。

MySQL

SELECT @@optimizer_switch;
SET SESSION optimizer_switch='index_merge=off';

optimizer_switch 可单独开启/关闭各项优化;应在会话级测试。

SQL Server

-- Instance-level MAXDOP and cost threshold:
EXEC sp_configure 'max degree of parallelism', 8; RECONFIGURE;
-- Database level: ALTER DATABASE SCOPED CONFIGURATION SET MAXDOP = 8;

MAXDOP=0 表示不限制;OLTP 通常为 4-8。“cost threshold for parallelism”的默认值 5 对大多数场景来说过低。

MongoDB

# There are no optimizer parameters; indexes and query shape are decisive.
db.customer.find({...}).explain('allPlansExecution')

allPlansExecution 显示规划器评估过的所有计划。

Redis

# Not applicable.

没有规划器;io-threads 和数据结构选择决定性能。

Elasticsearch

GET <index>/_settings?include_defaults=true
# search limits such as search.max_buckets, index.max_result_window

没有优化器;分片数量、routing 和查询结构决定性能。

在 DBAtlas 中打开 →