db399a40fa
- ops_stat: 真实值 offset→保底(max);初始基数过只增不减护栏 - ops_marquee: 脱敏名手机尾号+中文昵称混合;金额长尾;时间随机抖动;真实+种子不足兜底补满;真实记录查询 ~30s 缓存 - comparison_record: 复合索引 (status, created_at) + 迁移(PG CONCURRENTLY);修复 alembic 多 head(merge 改挂 onboarding_completion) - 轮播种子批量删除/启用接口 + ids 上限;docs 同步 - 附带并行会话 WIP:admin users / wallet Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: OuYingJun1024 <1034284404@qq.com> Reviewed-on: #42 Co-authored-by: ouzhou <ouzhou@wonderable.ai> Co-committed-by: ouzhou <ouzhou@wonderable.ai>
49 lines
1.5 KiB
Python
49 lines
1.5 KiB
Python
"""add composite index (status, created_at) on comparison_record
|
|
|
|
首页轮播 feed(按 status='success' 过滤 + created_at 近期排序)与省钱战绩聚合
|
|
都吃这个过滤+排序;复合索引避免随数据量增大退化成全表扫。
|
|
|
|
Revision ID: comparison_status_created_idx
|
|
Revises: a8c47fc4dc39
|
|
Create Date: 2026-06-10
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from alembic import op
|
|
|
|
revision = "comparison_status_created_idx"
|
|
down_revision = "a8c47fc4dc39"
|
|
branch_labels = None
|
|
depends_on = None
|
|
|
|
INDEX_NAME = "ix_comparison_status_created"
|
|
|
|
|
|
def upgrade() -> None:
|
|
bind = op.get_bind()
|
|
if bind.dialect.name == "postgresql":
|
|
# PG 上 comparison_record 已有数据量, 普通 CREATE INDEX 持表写锁会阻塞线上写入;
|
|
# 用 CONCURRENTLY 不锁表(须脱离事务, autocommit_block 切到自动提交)。
|
|
with op.get_context().autocommit_block():
|
|
op.create_index(
|
|
INDEX_NAME, "comparison_record", ["status", "created_at"],
|
|
unique=False, postgresql_concurrently=True,
|
|
)
|
|
else:
|
|
op.create_index(
|
|
INDEX_NAME, "comparison_record", ["status", "created_at"], unique=False
|
|
)
|
|
|
|
|
|
def downgrade() -> None:
|
|
bind = op.get_bind()
|
|
if bind.dialect.name == "postgresql":
|
|
with op.get_context().autocommit_block():
|
|
op.drop_index(
|
|
INDEX_NAME, table_name="comparison_record",
|
|
postgresql_concurrently=True,
|
|
)
|
|
else:
|
|
op.drop_index(INDEX_NAME, table_name="comparison_record")
|