DBAtlas · Atlas für Datenbankbetrieb

Statistiken mit erweiterten Optionen erheben (Histogramme usw.)

Oracle

EXEC DBMS_STATS.GATHER_TABLE_STATS(
  ownname=>'HR', tabname=>'EMPLOYEE',
  estimate_percent=>DBMS_STATS.AUTO_SAMPLE_SIZE,
  method_opt=>'FOR ALL COLUMNS SIZE AUTO', degree=>4);

method_opt steuert Histogramme, degree die Parallelität. Mit LOCK_TABLE_STATS werden Statistiken gesperrt.

PostgreSQL

ALTER TABLE customer ALTER COLUMN city SET STATISTICS 500;
ANALYZE customer;

Sampling-Ziel pro Spalte; default_statistics_target setzt den globalen Standard.

MySQL

ANALYZE TABLE customer UPDATE HISTOGRAM ON city WITH 32 BUCKETS;

Histogrammunterstützung ab MySQL 8.0; nützlich bei Spalten, nach denen gefiltert wird, die aber nicht selektiv sind.

SQL Server

UPDATE STATISTICS dbo.customer WITH FULLSCAN;
-- Filtered statistics: CREATE STATISTICS ... WHERE ...

FULLSCAN ist am genauesten; bei großen Tabellen SAMPLE nutzen. AUTO_UPDATE_STATISTICS für automatische Aktualisierung.

MongoDB

// There are no manual statistics; the planner measures at runtime.
db.customer.getPlanCache().clear()

Abgesehen vom Leeren eines veralteten Plan-Caches sind keine manuellen Statistiken nötig.

Redis

# Not applicable.

Es gibt keine Statistiken/keinen Optimizer.

Elasticsearch

# There is no statistics gathering; refresh searchability:
POST <index>/_refresh

Field Data und Doc Values werden zur Abfragezeit genutzt; Force Merge reduziert die Segmente.

In DBAtlas öffnen →