DBAtlas · Atlas für Datenbankbetrieb

Parallele Abfrage ausführen / Parallelitätsgrad setzen

Oracle

-- At query level with a hint:
SELECT /*+ PARALLEL(t, 4) */ * FROM big_table t;
-- Force at session level:
ALTER SESSION FORCE PARALLEL QUERY PARALLEL 4;

Der Hint PARALLEL wendet einen parallelen Scan auf die Tabelle an; degree=DOP. Ein zu hoher DOP erschöpft die Serverressourcen, wähle ihn sorgfältig. parallel_degree_policy=AUTO verwaltet ihn automatisch.

PostgreSQL

-- Set the number of parallel workers for the session:
SET max_parallel_workers_per_gather = 4;
-- The planner adds a Gather/Gather Merge node:
EXPLAIN (ANALYZE) SELECT count(*) FROM big_table;

Erscheint Gather/Parallel Seq Scan im Plan, ist Parallelität aktiv. Auch max_parallel_workers und min_parallel_table_scan_size spielen eine Rolle.

MySQL

-- Limited InnoDB parallelism (certain operations only):
SET GLOBAL innodb_parallel_read_threads = 4;
-- Effective for COUNT(*) and primary key scans.

MySQL bietet keine allgemeine parallele Abfrageausführung; innodb_parallel_read_threads parallelisiert nur Clustered-Index-Scans (z. B. COUNT(*)). Komplexe JOINs laufen single-threaded.

SQL Server

-- MAXDOP hint at query level:
SELECT * FROM dbo.big_table OPTION (MAXDOP 4);
-- Instance level: sp_configure 'max degree of parallelism', 4;

MAXDOP begrenzt die Anzahl paralleler Threads; MAXDOP 1 deaktiviert Parallelität. Wird 'cost threshold for parallelism' überschritten, wird der Plan parallel.

MongoDB

// Allow disk use for a large aggregation:
db.sale.aggregate([ { $group: { _id: "$city", t: { $sum: "$amount" } } } ], { allowDiskUse: true })
// A sharded cluster processes each shard in parallel.

In einem Sharded Cluster läuft die Abfrage auf jedem Shard parallel; auf einem einzelnen Knoten laufen Aggregation-Stages meist sequenziell. allowDiskUse ermöglicht Operationen, die das Speicherlimit überschreiten.

Redis

# Not applicable: there is no concept of query parallelism.

Die Befehlsausführung ist single-threaded; skaliere mit Cluster (Sharding) oder nutze io-threads für Parallelität bei Netzwerk-I/O.

Elasticsearch

# Shard count = unit of parallelism; a query runs in parallel across shards.
# Parallelism by slicing within a single shard (with scroll/PIT):
GET <index>/_search
{ "slice": { "id": 0, "max": 4 }, "query": { "match_all": {} } }

Eine Suche läuft gleichzeitig auf allen relevanten Shards; die Anzahl der Primary Shards bestimmt die Grundparallelität. slices teilen große Scroll-/Reindex-Operationen auf.

In DBAtlas öffnen →