create_usage_statistics_table.sql 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. -- 用量日统计汇总表迁移脚本
  2. -- 创建日期: 2025-08-25
  3. -- 功能: 创建用量统计汇总表,用于存储按日期、令牌、模型分组的统计数据
  4. -- MySQL 语法
  5. CREATE TABLE IF NOT EXISTS usage_statistics (
  6. id INT AUTO_INCREMENT PRIMARY KEY,
  7. date VARCHAR(10) NOT NULL COMMENT '统计日期(YYYY-MM-DD)',
  8. token_id INT NOT NULL COMMENT '令牌ID',
  9. token_name VARCHAR(255) NOT NULL DEFAULT '' COMMENT '令牌名称',
  10. model_name VARCHAR(255) NOT NULL COMMENT '模型名称',
  11. total_requests INT NOT NULL DEFAULT 0 COMMENT '总请求次数',
  12. successful_requests INT NOT NULL DEFAULT 0 COMMENT '成功请求次数',
  13. failed_requests INT NOT NULL DEFAULT 0 COMMENT '失败请求次数',
  14. total_tokens INT NOT NULL DEFAULT 0 COMMENT '总Token消耗',
  15. prompt_tokens INT NOT NULL DEFAULT 0 COMMENT '提示Token数',
  16. completion_tokens INT NOT NULL DEFAULT 0 COMMENT '完成Token数',
  17. total_quota INT NOT NULL DEFAULT 0 COMMENT '总额度消耗',
  18. created_time BIGINT NOT NULL COMMENT '创建时间戳',
  19. updated_time BIGINT NOT NULL COMMENT '更新时间戳',
  20. INDEX idx_date (date),
  21. INDEX idx_token_id (token_id),
  22. INDEX idx_model_name (model_name),
  23. INDEX idx_date_token_model (date, token_id, model_name),
  24. UNIQUE KEY uk_date_token_model (date, token_id, model_name)
  25. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用量统计汇总表';
  26. -- PostgreSQL 语法 (如果使用PostgreSQL)
  27. /*
  28. CREATE TABLE IF NOT EXISTS usage_statistics (
  29. id SERIAL PRIMARY KEY,
  30. date VARCHAR(10) NOT NULL,
  31. token_id INTEGER NOT NULL,
  32. token_name VARCHAR(255) NOT NULL DEFAULT '',
  33. model_name VARCHAR(255) NOT NULL,
  34. total_requests INTEGER NOT NULL DEFAULT 0,
  35. successful_requests INTEGER NOT NULL DEFAULT 0,
  36. failed_requests INTEGER NOT NULL DEFAULT 0,
  37. total_tokens INTEGER NOT NULL DEFAULT 0,
  38. prompt_tokens INTEGER NOT NULL DEFAULT 0,
  39. completion_tokens INTEGER NOT NULL DEFAULT 0,
  40. total_quota INTEGER NOT NULL DEFAULT 0,
  41. created_time BIGINT NOT NULL,
  42. updated_time BIGINT NOT NULL
  43. );
  44. CREATE INDEX IF NOT EXISTS idx_usage_statistics_date ON usage_statistics(date);
  45. CREATE INDEX IF NOT EXISTS idx_usage_statistics_token_id ON usage_statistics(token_id);
  46. CREATE INDEX IF NOT EXISTS idx_usage_statistics_model_name ON usage_statistics(model_name);
  47. CREATE INDEX IF NOT EXISTS idx_usage_statistics_date_token_model ON usage_statistics(date, token_id, model_name);
  48. CREATE UNIQUE INDEX IF NOT EXISTS uk_usage_statistics_date_token_model ON usage_statistics(date, token_id, model_name);
  49. COMMENT ON TABLE usage_statistics IS '用量统计汇总表';
  50. COMMENT ON COLUMN usage_statistics.date IS '统计日期(YYYY-MM-DD)';
  51. COMMENT ON COLUMN usage_statistics.token_id IS '令牌ID';
  52. COMMENT ON COLUMN usage_statistics.token_name IS '令牌名称';
  53. COMMENT ON COLUMN usage_statistics.model_name IS '模型名称';
  54. COMMENT ON COLUMN usage_statistics.total_requests IS '总请求次数';
  55. COMMENT ON COLUMN usage_statistics.successful_requests IS '成功请求次数';
  56. COMMENT ON COLUMN usage_statistics.failed_requests IS '失败请求次数';
  57. COMMENT ON COLUMN usage_statistics.total_tokens IS '总Token消耗';
  58. COMMENT ON COLUMN usage_statistics.prompt_tokens IS '提示Token数';
  59. COMMENT ON COLUMN usage_statistics.completion_tokens IS '完成Token数';
  60. COMMENT ON COLUMN usage_statistics.total_quota IS '总额度消耗';
  61. COMMENT ON COLUMN usage_statistics.created_time IS '创建时间戳';
  62. COMMENT ON COLUMN usage_statistics.updated_time IS '更新时间戳';
  63. */
  64. -- SQLite 语法 (如果使用SQLite)
  65. /*
  66. CREATE TABLE IF NOT EXISTS usage_statistics (
  67. id INTEGER PRIMARY KEY AUTOINCREMENT,
  68. date TEXT NOT NULL,
  69. token_id INTEGER NOT NULL,
  70. token_name TEXT NOT NULL DEFAULT '',
  71. model_name TEXT NOT NULL,
  72. total_requests INTEGER NOT NULL DEFAULT 0,
  73. successful_requests INTEGER NOT NULL DEFAULT 0,
  74. failed_requests INTEGER NOT NULL DEFAULT 0,
  75. total_tokens INTEGER NOT NULL DEFAULT 0,
  76. prompt_tokens INTEGER NOT NULL DEFAULT 0,
  77. completion_tokens INTEGER NOT NULL DEFAULT 0,
  78. total_quota INTEGER NOT NULL DEFAULT 0,
  79. created_time INTEGER NOT NULL,
  80. updated_time INTEGER NOT NULL
  81. );
  82. CREATE INDEX IF NOT EXISTS idx_usage_statistics_date ON usage_statistics(date);
  83. CREATE INDEX IF NOT EXISTS idx_usage_statistics_token_id ON usage_statistics(token_id);
  84. CREATE INDEX IF NOT EXISTS idx_usage_statistics_model_name ON usage_statistics(model_name);
  85. CREATE INDEX IF NOT EXISTS idx_usage_statistics_date_token_model ON usage_statistics(date, token_id, model_name);
  86. CREATE UNIQUE INDEX IF NOT EXISTS uk_usage_statistics_date_token_model ON usage_statistics(date, token_id, model_name);
  87. */