表架构同步发现:在 PostgreSQL 18 上,每个表的约束查询需要 60-90 秒,部署需要 30-40 分钟
描述
实体驱动的架构同步(db.get_schema_registry(...) + registry.sync())在 PostgreSQL 上用于架构发现,耗时 30-40 分钟。
设置:3 个应用程序共享一个 PostgreSQL 数据库,每个应用程序都有自己的架构和数据库用户。在部署时,每个应用程序都运行 sea-orm 架构同步,对所有 3 个应用程序都有影响。
时间花在 sea-schema 的约束发现查询(SchemaQueryBuilder::query_table_constraints — information_schema.table_constraints 连接 referential_constraints_subquery)上:
每次执行花费 60-96 秒,返回的行数仅为 9-14 行(例如,在我们的慢语句日志中,
elapsed=96.377s rows_returned=14),
内容来源: SeaQL/sea-orm