You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何分析数据库中Prompt的查询频率,筛选高频20%用于翻译?

解决方案:追踪Prompt查询频率并筛选高频条目

既然你没法用内置的触发器或Profiler筛选,那咱们可以用几个实用的替代方案来统计每个Prompt的查询次数,进而找出Top 20%的高频内容:

1. 给原表添加查询计数字段(快速临时方案)

如果你的表结构允许修改,直接加一个query_count整数字段,默认值设为0。然后修改所有查询这个表的应用代码,每次查询某个Prompt时,顺便执行更新语句:

UPDATE prompt_table 
SET query_count = query_count + 1 
WHERE prompt_text = '目标提示文本';

运行一段时间积累数据后,就能用这条SQL找出Top 20%的Prompt:

SELECT prompt_text, query_count
FROM prompt_table
ORDER BY query_count DESC
LIMIT (SELECT FLOOR(0.2 * COUNT(*)) FROM prompt_table);

这个方案简单直接,适合快速落地,但要注意如果有大量并发查询,得加锁避免计数不准,同时需要修改应用代码。

2. 建立独立的查询日志表(低侵入式统计)

不想改动原表或业务逻辑的话,可以创建专门的日志表记录每次查询:

CREATE TABLE prompt_query_log (
    log_id INT AUTO_INCREMENT PRIMARY KEY,
    prompt_text VARCHAR(255) NOT NULL,
    query_time DATETIME DEFAULT CURRENT_TIMESTAMP
);

之后你可以通过两种方式填充日志:

  • 若应用端能做小改动,每次查询Prompt后往日志表插入一条记录
  • 用数据库事件调度器(比如MySQL的Event Scheduler、SQL Server的SQL Agent Job)定期解析通用日志,提取目标表的查询记录插入日志表

统计频次的SQL也很直观:

SELECT prompt_text, COUNT(*) AS query_count
FROM prompt_query_log
GROUP BY prompt_text
ORDER BY query_count DESC
LIMIT (SELECT FLOOR(0.2 * (SELECT COUNT(DISTINCT prompt_text) FROM prompt_query_log)));

这个方案对原业务影响小,还能保留历史查询记录,方便后续分析。

3. 用数据库审计工具替代Profiler

如果Profiler没法筛选,试试数据库自带的更灵活的审计工具:

  • SQL Server:用Extended Events创建针对目标表SELECT操作的事件会话,只捕获包含Prompt文本的查询,导出后统计频次
  • MySQL:开启General Log,用mysqlbinlog等工具过滤出目标表的SELECT语句,提取Prompt文本后统计
  • PostgreSQL:启用pg_stat_statements扩展,跟踪所有查询并筛选目标表的操作进行分析

这种方案不需要修改代码,但需要一定的数据库权限和日志分析能力。

4. 应用层埋点统计(高性能方案)

如果应用代码可控,在查询Prompt的逻辑里加统计逻辑,比如用Redis等内存缓存计数:每次查询时给对应Prompt的键值+1,定期将缓存计数同步到数据库。这种方式性能高、并发友好,还能实时查看频次数据。

等你拿到每个Prompt的查询次数,就能轻松筛选出使用频率最高的20%,优先进行翻译啦。

内容的提问来源于stack exchange,提问作者AndyZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:19:50