DBAtlas · Atlas für Datenbankbetrieb

Optimizer-/Parallelitätseinstellungen anzeigen/ändern

Oracle

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

Einstellungen wie optimizer_index_cost_adj und parallel_degree_policy beeinflussen die Planwahl; ändere sie mit Bedacht.

PostgreSQL

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

Auf SSDs wird random_page_cost ~1.1 empfohlen. enable_*-Flags dienen der Diagnose, nicht als dauerhafte Lösung.

MySQL

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

optimizer_switch schaltet einzelne Optimierungen ein/aus; auf Session-Ebene testen.

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 ist unbegrenzt; für OLTP meist 4-8. Der Standardwert 5 für 'cost threshold for parallelism' ist für die meisten zu niedrig.

MongoDB

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

allPlansExecution zeigt alle vom Planner bewerteten Pläne.

Redis

# Not applicable.

Es gibt keinen Planner; io-threads und die Wahl der Datenstruktur bestimmen die Performance.

Elasticsearch

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

Es gibt keinen Optimizer; Shard-Anzahl, Routing und Abfragestruktur bestimmen die Performance.

In DBAtlas öffnen →