| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- -- ====================================================================
- -- Token使用日志表迁移脚本 (用于访问频率限制)
- -- ====================================================================
- -- 版本: v1.0
- -- 创建日期: 2025-08-25
- -- 描述: 创建token_usage_logs表,用于记录令牌使用情况以支持访问频率限制功能
- -- ====================================================================
- -- ====================================================================
- -- MySQL 语法
- -- ====================================================================
- CREATE TABLE IF NOT EXISTS token_usage_logs (
- id INT AUTO_INCREMENT PRIMARY KEY,
- token_id INT NOT NULL COMMENT '令牌ID',
- created_at BIGINT NOT NULL COMMENT '创建时间戳',
- INDEX idx_token_created (token_id, created_at),
- INDEX idx_created (created_at)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Token使用日志表(用于访问频率限制)';
- -- ====================================================================
- -- PostgreSQL 语法 (如果使用PostgreSQL,取消下面注释)
- -- ====================================================================
- /*
- CREATE TABLE IF NOT EXISTS token_usage_logs (
- id SERIAL PRIMARY KEY,
- token_id INTEGER NOT NULL,
- created_at BIGINT NOT NULL
- );
- CREATE INDEX IF NOT EXISTS idx_token_usage_logs_token_created ON token_usage_logs(token_id, created_at);
- CREATE INDEX IF NOT EXISTS idx_token_usage_logs_created ON token_usage_logs(created_at);
- COMMENT ON TABLE token_usage_logs IS 'Token使用日志表(用于访问频率限制)';
- COMMENT ON COLUMN token_usage_logs.token_id IS '令牌ID';
- COMMENT ON COLUMN token_usage_logs.created_at IS '创建时间戳';
- */
- -- ====================================================================
- -- SQLite 语法 (如果使用SQLite,取消下面注释)
- -- ====================================================================
- /*
- CREATE TABLE IF NOT EXISTS token_usage_logs (
- id INTEGER PRIMARY KEY AUTOINCREMENT,
- token_id INTEGER NOT NULL,
- created_at INTEGER NOT NULL
- );
- CREATE INDEX IF NOT EXISTS idx_token_usage_logs_token_created ON token_usage_logs(token_id, created_at);
- CREATE INDEX IF NOT EXISTS idx_token_usage_logs_created ON token_usage_logs(created_at);
- */
- -- ====================================================================
- -- 清理旧数据的脚本 (可选,定期执行以减少存储空间)
- -- ====================================================================
- /*
- -- 删除30天前的记录 (建议设置定时任务执行)
- DELETE FROM token_usage_logs WHERE created_at < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 30 DAY));
- -- PostgreSQL版本
- -- DELETE FROM token_usage_logs WHERE created_at < EXTRACT(EPOCH FROM NOW() - INTERVAL '30 days');
- -- SQLite版本
- -- DELETE FROM token_usage_logs WHERE created_at < strftime('%s', 'now', '-30 days');
- */
- -- ====================================================================
- -- 使用说明
- -- ====================================================================
- /*
- 此表用于记录令牌的每次使用,支持访问频率限制功能:
- 1. 表结构:
- - id: 主键,自增
- - token_id: 令牌ID,关联tokens表
- - created_at: 创建时间戳
- 2. 索引:
- - idx_token_created: 复合索引,用于快速查询某个令牌在特定时间范围内的使用次数
- - idx_created: 时间索引,用于定期清理旧数据
- 3. 使用场景:
- - 分钟级限制:查询当前分钟内的记录数
- - 日级限制:查询当天内的记录数
- - 定期清理:删除过期记录以节省存储空间
- 4. 性能考虑:
- - 该表会频繁插入,但查询相对较少
- - 索引设计优化了查询性能
- - 建议定期清理旧数据
- */
|