批量数据变更后手动收集统计信息 本页介绍天翼云TeleDB数据库在批量数据变更后,手动执行vacuum analyze收集统计信息的方法。 在批量数据变更后,由于autovacuum触发机制原因,或autovacuum任务繁忙原因,统计信息收集可能会一定的延时,此时统计信息是不准确的,会导致相关SQL的执行计划生成不准确,从而导致SQL执行变慢甚至执行卡死问题。 批量数据变更包括:批量导入数据、批量更新数据、批量删除数据、truncate表、truncate表+批量导入数据。 针对此问题,应在批量数据变更后,手动执行vacuum analyze收集统计信息。 在执行vacuum analyze前,可以适当调大maintenanceworkmem来提高效率,例如: set maintenanceworkmem to '8GB'; vacuum analyze 表名; 可能会因为账号权限要求,应用账号没有对该表的vacuum analyze权限,可创建函数解决此问题: create or replace function useranalyze (schemaname text,tablename text) returns int as $$ declare vsql text; begin vsql : 'vacuum analyze ' schemaname '.' tablename; execute vsql; return 1; end; $$ language plpgsql; select useranalyze('public','teledb1');