Files
senmesh-zc/backend/db/upgrade-20261103-transfer-perf.sql
KodouWZF c5d19f47a2 perf(传输): xs_file_record.md5_code 补索引
文件入库时用 MD5 做内容去重查询(FileServiceImpl 上传后 find(md5Code)),
该列此前没有索引,每个文件入库都是一次全表扫描。解包一个含 N 个文件的
传输包就是 N 次全表扫描,300 人规模下 xs_file_record 达数万行时,
单文件入库可省几十到几百毫秒,100 个文件的包可省数秒到数十秒。

按 init 与 upgrade 双写:MySQL 版 DDL 加 KEY,PG 版加 CREATE INDEX,
新建 upgrade-20261103-transfer-perf.sql 供已上线环境增量执行
(DM8 走第 1 节,PG 走第 2 节,并给出 CONCURRENTLY 备选)。
交付包 sql/01-init-table.sql 按 README 要求从仓库整份覆盖,不手改副本。
2026-11-03 22:03:33 +08:00

27 lines
1.6 KiB
SQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- =============================================================
-- 升级脚本:跨网传输链路性能优化(第一批)
-- 日期:2026-11-03
-- 说明:给 xs_file_record.md5_code 补索引。
-- 文件入库时会用 MD5 做内容去重查询
-- (FileServiceImpl 上传 → find(md5Code)),此前该列无索引,
-- 每个文件入库都是一次全表扫描。解包一个含 N 个文件的传输包
-- 就是 N 次全表扫描,数据量上来后是多文件解包的主要数据库开销。
-- 新环境由 init 脚本建表时已包含该索引,本脚本仅供已上线环境增量执行。
-- 执行方式:MySQL/达梦(DM8 MySQL兼容模式)执行第 1 节;
-- PostgreSQL 执行第 2 节。
-- 注意:表数据量大时建索引会锁写,建议业务低峰执行。
-- 重复执行会报「索引已存在」,忽略即可。
-- =============================================================
-- -------------------------------------------------------------
-- 1. MySQL / 达梦 DM8
-- -------------------------------------------------------------
CREATE INDEX idx_file_record_md5_code ON xs_file_record(md5_code);
-- -------------------------------------------------------------
-- 2. PostgreSQL
-- -------------------------------------------------------------
-- 表已有数据且不能停写时,改用下面这句(不可在事务块内执行):
-- CREATE INDEX CONCURRENTLY idx_file_record_md5_code ON xs_file_record(md5_code);
CREATE INDEX IF NOT EXISTS idx_file_record_md5_code ON xs_file_record(md5_code);