关于 django-materialized-views
这项技能指导 Django 开发者评估并实现 PostgreSQL 物化视图,涵盖设计、集成、刷新与验证,并考虑数据陈旧和数据库负载。
主要功能
- 01评估物化视图是否适用
- 02设计 SQL 输出列和索引
- 03通过 Django 迁移与模型集成
- 04规划并验证视图刷新
适用场景
- 01加速重复执行的昂贵读取
- 02在 Django 应用中添加只读视图
- 03选择安全的刷新策略
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ lvtd-llc/ skills --skill django-materialized-views安装后在 Claude Code 中输入/django-materialized-views确认已加载。
附带文件references/materialized-view-patterns.md
详细介绍
Django 物化视图
当昂贵的读取查询经常重复使用,且可以容忍受控的数据陈旧时,使用此技能。先尝试改进查询计划、索引和 ORM 表达式;物化视图会增加运维状态。
工作流
-
确认是否适用。
- 源查询开销高且稳定。
- 使用方可以接受陈旧数据。
- 刷新频率、责任归属和故障处理方式明确。
- 目标数据库为 PostgreSQL。
-
设计物化视图。
- 定义 SQL 查询和输出列。
- 如果需要并发刷新,则添加唯一列或唯一列集。
- 为使用方针对该视图的查询添加索引。
-
与 Django 集成。
- 使用
RunSQL创建视图。 - 将其表示为
managed = False的非托管模型。 - 确保非托管模型字段与 SQL 输出保持一致。
- 在应用边界禁止写入。
- 使用
-
实现刷新。
- 简单刷新使用
REFRESH MATERIALIZED VIEW。 - 仅当视图已填充且具有符合条件的唯一索引时,才使用
REFRESH MATERIALIZED VIEW CONCURRENTLY。 - 通过管理命令、任务队列或数据库作业安排刷新。
- 简单刷新使用
请参阅 materialized-view-patterns.md,了解迁移、模型和刷新的模板。
安全说明
- 物化视图返回的是存储的数据,不会自动保持最新。
- 并发刷新可避免阻塞读取,但有前提条件,并且每个视图同一时间仍只能进行一次刷新。
- 刷新大型视图可能会给数据库带来很大负载。请将其与读取负载分开测量。
验证
根据源表验证 SQL,测试非托管模型的读取,验证刷新行为,并测量刷新前后的读取延迟。
评论
支持 Markdown