DBAtlas · 数据库运维图谱

更新统计信息(供优化器使用)

Oracle

EXEC DBMS_STATS.GATHER_TABLE_STATS('HR', 'EMPLOYEE');
-- Whole schema: EXEC DBMS_STATS.GATHER_SCHEMA_STATS('HR');

AUTO 任务通常在夜间收集统计信息;出现问题时可手动收集。推荐使用 ESTIMATE_PERCENT=>AUTO_SAMPLE_SIZE。

PostgreSQL

ANALYZE customer;
-- Both cleanup and analyze: VACUUM ANALYZE customer;

Autovacuum 会自动完成这项工作;在突发的大批量数据加载后手动执行 ANALYZE 可得到准确的执行计划。

MySQL

ANALYZE TABLE customer;

在 InnoDB 上会短暂持有读锁;大表应在低负载时段执行。

SQL Server

UPDATE STATISTICS dbo.customer WITH FULLSCAN;
-- Whole database: EXEC sp_updatestats;

FULLSCAN 最准确但开销最大;大表上可优先使用抽样(SAMPLE)。

MongoDB

// There are no manual statistics; the planner measures at runtime.
// To clear a stale plan cache:
db.customer.getPlanCache().clear()

MongoDB 不做成本估算,而是进行实际试运行(plan racing);无需手动维护统计信息。

Redis

# Not applicable: Redis has no query optimizer / statistics.

命令复杂度是固定的;性能取决于数据结构的选择。

在 DBAtlas 中打开 →