fix: harden wiki delivery and leaderboard performance
This commit is contained in:
1 parent
4b86106a24
commit
e053b36b6e
28 files changed
+616
-68
No files matched your search
@@ -4,9 +4,9 @@
|
||||
--
|
||||
-- 背景:
|
||||
-- 这些索引声明在各 ORM model 的 __table_args__ 里,但 Base.metadata.create_all
|
||||
-- 对【已存在的表】不会补建索引,而 alembic 自动迁移在本项目里是关闭的
|
||||
-- (engine.py 中 `# await _run_alembic_upgrade(url)` 被注释)。
|
||||
-- 因此在【已有数据的 MySQL 部署】上,这些索引很可能并未真正创建,排行榜的
|
||||
-- 对【已存在的表】不会补建索引。本项目虽会在启动时运行 Alembic,但大表
|
||||
-- 补索引刻意不放进启动迁移,避免在线建索引拖长或阻塞服务启动。
|
||||
-- 因此在【已有数据的 MySQL 部署】上需要低峰期执行本脚本,否则排行榜的
|
||||
-- 单日聚合查询会退化为全表扫描,拖慢并占用连接。
|
||||
--
|
||||
-- 用法:
|
||||
@@ -55,19 +55,28 @@ DELIMITER ;
|
||||
CALL _create_index_if_missing('runs', 'ix_runs_created_user_status', '`created_at`, `user_id`, `status`');
|
||||
CALL _create_index_if_missing('runs', 'ix_runs_user_created', '`user_id`, `created_at`');
|
||||
CALL _create_index_if_missing('runs', 'ix_runs_thread_created', '`thread_id`, `created_at`');
|
||||
CALL _create_index_if_missing('runs', 'ix_runs_created_assistant_user', '`created_at`, `assistant_id`, `user_id`');
|
||||
CALL _create_index_if_missing('runs', 'ix_runs_created_model_user', '`created_at`, `model_name`, `user_id`');
|
||||
|
||||
-- ---- tool_call_metrics -------------------------------------------------------
|
||||
CALL _create_index_if_missing('tool_call_metrics', 'ix_tool_call_metrics_created_user', '`created_at`, `user_id`');
|
||||
CALL _create_index_if_missing('tool_call_metrics', 'ix_tool_call_metrics_run_created', '`run_id`, `created_at`');
|
||||
CALL _create_index_if_missing('tool_call_metrics', 'ix_tool_call_metrics_created_skill_user', '`created_at`, `skill_name`, `user_id`');
|
||||
CALL _create_index_if_missing('tool_call_metrics', 'ix_tool_call_metrics_created_tool_user', '`created_at`, `tool_name`, `user_id`');
|
||||
|
||||
-- ---- llm_call_metrics --------------------------------------------------------
|
||||
CALL _create_index_if_missing('llm_call_metrics', 'ix_llm_call_metrics_created_user', '`created_at`, `user_id`');
|
||||
CALL _create_index_if_missing('llm_call_metrics', 'ix_llm_call_metrics_run_created', '`run_id`, `created_at`');
|
||||
CALL _create_index_if_missing('llm_call_metrics', 'ix_llm_call_metrics_created_model_user', '`created_at`, `model_name`, `user_id`');
|
||||
|
||||
-- ---- threads_meta ------------------------------------------------------------
|
||||
CALL _create_index_if_missing('threads_meta', 'ix_threads_meta_created_user', '`created_at`, `user_id`');
|
||||
CALL _create_index_if_missing('threads_meta', 'ix_threads_meta_user_created', '`user_id`, `created_at`');
|
||||
|
||||
-- ---- scheduled_task_runs -----------------------------------------------------
|
||||
-- NOT EXISTS anti-join used when the leaderboard excludes scheduler runs.
|
||||
CALL _create_index_if_missing('scheduled_task_runs', 'ix_scheduled_task_runs_agent_run_id', '`agent_run_id`');
|
||||
|
||||
-- ---- position_roundtable_sessions --------------------------------------------
|
||||
-- Explicit taskId history is loaded by taskId and newest update time.
|
||||
CALL _create_index_if_missing('position_roundtable_sessions', 'ix_position_roundtable_sessions_task_updated', '`external_task_id`, `updated_at`');
|
||||
@@ -75,15 +84,19 @@ CALL _create_index_if_missing('position_roundtable_sessions', 'ix_position_round
|
||||
-- ---- 清理临时存储过程 --------------------------------------------------------
|
||||
DROP PROCEDURE IF EXISTS _create_index_if_missing;
|
||||
|
||||
-- ---- 执行后自检:确认 9 个索引都已存在 ---------------------------------------
|
||||
-- ---- 执行后自检:确认排行榜索引都已存在 ----------------------------------------
|
||||
SELECT table_name, index_name
|
||||
FROM information_schema.statistics
|
||||
WHERE table_schema = DATABASE()
|
||||
AND index_name IN (
|
||||
'ix_runs_created_user_status', 'ix_runs_user_created', 'ix_runs_thread_created',
|
||||
'ix_runs_created_assistant_user', 'ix_runs_created_model_user',
|
||||
'ix_tool_call_metrics_created_user', 'ix_tool_call_metrics_run_created',
|
||||
'ix_tool_call_metrics_created_skill_user', 'ix_tool_call_metrics_created_tool_user',
|
||||
'ix_llm_call_metrics_created_user', 'ix_llm_call_metrics_run_created',
|
||||
'ix_threads_meta_created_user', 'ix_threads_meta_user_created'
|
||||
'ix_llm_call_metrics_created_model_user',
|
||||
'ix_threads_meta_created_user', 'ix_threads_meta_user_created',
|
||||
'ix_scheduled_task_runs_agent_run_id'
|
||||
)
|
||||
GROUP BY table_name, index_name
|
||||
ORDER BY table_name, index_name;
|
||||
Reference in new issue
Block a user