DBAtlas · Атлас эксплуатации баз данных

Сбор статистики с расширенными параметрами (гистограммы и т. п.)

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 управляет гистограммами, degree — параллелизмом. Для фиксации статистики используйте LOCK_TABLE_STATS.

PostgreSQL

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

Целевой размер выборки для столбца; default_statistics_target задаёт глобальное значение по умолчанию.

MySQL

ANALYZE TABLE customer UPDATE HISTOGRAM ON city WITH 32 BUCKETS;

Поддержка гистограмм в MySQL 8.0; полезна для столбцов, по которым фильтруют, но которые неселективны.

SQL Server

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

FULLSCAN — самый точный; на больших таблицах используйте SAMPLE. AUTO_UPDATE_STATISTICS — для автоматического обновления.

MongoDB

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

Кроме очистки устаревшего кэша планов, ручная статистика не нужна.

Redis

# Not applicable.

Статистики/оптимизатора нет.

Elasticsearch

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

Field data и doc values используются во время запроса; force merge сокращает число сегментов.

Открыть в DBAtlas →