- 新增国家级/用户级 Redis 写锁(token+Lua 安全释放),统一 country -> user 锁序 - 后台改国家码/名称时按 countryId 游标分批同步 RDS 与 mongo 全部国家冗余字段, 含注册国家码同事务重命名、团队区域重算(CAS + 投影回滚)与两次缓存失效 - 建团(BD 邀请/后台)、改用户资料、注册、编辑团队等写国家快照路径接入锁防竞态, 团队国家码一律取国家主表标准值 - 违规调整/账号状态改为仅写变更字段,防止旧快照覆盖同步结果 - 团队账单结算改用账单自身 region,配合团队迁区 - 补充 user_base_info (country_id,id) 索引与 mongo 复合索引迁移脚本 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
31 lines
1.2 KiB
SQL
31 lines
1.2 KiB
SQL
-- 国家资料级联同步按 (country_id, id) 游标分页;该索引避免国家更新时扫描整张用户表。
|
||
-- 生产表当前约 1.4 万行/4.5 MB,使用 INPLACE + LOCK=NONE,且限制元数据锁等待避免影响在线请求。
|
||
SET @current_schema = DATABASE();
|
||
SET SESSION lock_wait_timeout = 10;
|
||
|
||
SET @ddl = IF(
|
||
EXISTS (
|
||
SELECT 1
|
||
FROM INFORMATION_SCHEMA.STATISTICS first_column
|
||
WHERE first_column.TABLE_SCHEMA = @current_schema
|
||
AND first_column.TABLE_NAME = 'user_base_info'
|
||
AND first_column.SEQ_IN_INDEX = 1
|
||
AND first_column.COLUMN_NAME = 'country_id'
|
||
AND EXISTS (
|
||
SELECT 1
|
||
FROM INFORMATION_SCHEMA.STATISTICS second_column
|
||
WHERE second_column.TABLE_SCHEMA = first_column.TABLE_SCHEMA
|
||
AND second_column.TABLE_NAME = first_column.TABLE_NAME
|
||
AND second_column.INDEX_NAME = first_column.INDEX_NAME
|
||
AND second_column.SEQ_IN_INDEX = 2
|
||
AND second_column.COLUMN_NAME = 'id'
|
||
)
|
||
),
|
||
'SELECT 1',
|
||
'ALTER TABLE `user_base_info` ADD KEY `idx_country_id_id` (`country_id`, `id`), ALGORITHM=INPLACE, LOCK=NONE'
|
||
);
|
||
|
||
PREPARE stmt FROM @ddl;
|
||
EXECUTE stmt;
|
||
DEALLOCATE PREPARE stmt;
|