{"id":37998737,"url":"https://github.com/turtacn/sqltracebench","last_synced_at":"2026-01-16T19:01:05.965Z","repository":{"id":310181923,"uuid":"1038959874","full_name":"turtacn/SQLTraceBench","owner":"turtacn","description":"SQLTraceBench：A trace-driven benchmark system designed to take an existing SQL trace and database schema, generate an equivalent workload for various target databases, and execute a comprehensive performance comparison. ","archived":false,"fork":false,"pushed_at":"2025-12-19T06:46:38.000Z","size":7091,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-12-22T02:05:24.624Z","etag":null,"topics":["db-bench","sql","sql-tracer","sr-benchmark","trace-driven"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/turtacn.png","metadata":{"files":{"readme":"README-zh.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-16T07:04:34.000Z","updated_at":"2025-12-19T06:46:42.000Z","dependencies_parsed_at":"2025-08-16T10:37:56.019Z","dependency_job_id":null,"html_url":"https://github.com/turtacn/SQLTraceBench","commit_stats":null,"previous_names":["turtacn/sqltracebench"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/turtacn/SQLTraceBench","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/turtacn%2FSQLTraceBench","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/turtacn%2FSQLTraceBench/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/turtacn%2FSQLTraceBench/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/turtacn%2FSQLTraceBench/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/turtacn","download_url":"https://codeload.github.com/turtacn/SQLTraceBench/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/turtacn%2FSQLTraceBench/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28481365,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T11:59:17.896Z","status":"ssl_error","status_checked_at":"2026-01-16T11:55:55.838Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["db-bench","sql","sql-tracer","sr-benchmark","trace-driven"],"created_at":"2026-01-16T19:01:04.212Z","updated_at":"2026-01-16T19:01:05.862Z","avatar_url":"https://github.com/turtacn.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"logo.png\" alt=\"SQLTraceBench Logo\" width=\"200\" height=\"200\"\u003e\n  \n  # SQLTraceBench\n  \n  \u003c!--[![构建状态](https://github.com/turtacn/SQLTraceBench/workflows/CI/badge.svg)](https://github.com/turtacn/SQLTraceBench/actions)--\u003e\n  [![Go Report Card](https://goreportcard.com/badge/github.com/turtacn/SQLTraceBench)](https://goreportcard.com/report/github.com/turtacn/SQLTraceBench)\n  [![许可证](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n  [![GoDoc](https://godoc.org/github.com/turtacn/SQLTraceBench?status.svg)](https://godoc.org/github.com/turtacn/SQLTraceBench)\n  [![发布版本](https://img.shields.io/github/release/turtacn/SQLTraceBench.svg)](https://github.com/turtacn/SQLTraceBench/releases)\n  \n  **强大的跨数据库性能测试与分析系统，基于真实SQL轨迹驱动**\n  \n  [English](README.md) | [中文](README-zh.md)\n\u003c/div\u003e\n\n## 🎯 项目使命\n\nSQLTraceBench 是一个创新的开源项目，能够将真实的SQL轨迹和数据库模式转换为全面的跨数据库基准测试负载。我们的使命是通过智能的轨迹分析、模式转换和负载生成，实现不同数据库系统之间的无缝性能对比和验证。\n\n![Demo](demo.gif)\n\n## 🔥 为什么选择 SQLTraceBench？\n\n### 我们解决的问题\n\n- **跨数据库迁移挑战**：组织在数据库系统间迁移时（StarRocks ↔ ClickHouse，MySQL → TiDB等）难以验证性能表现\n- **缺乏真实世界基准测试**：传统的基准测试如TPC-H无法反映您实际的工作负载模式\n- **性能测试中的手工工作**：在数据库间转换模式和适配查询既费时又容易出错\n- **负载测试不一致**：难以生成反映生产流量的现实的参数化工作负载\n\n### 我们的解决方案\n\nSQLTraceBench 通过以下方式解决这些痛点：\n\n✅ **自动化跨数据库模式转换** - 在StarRocks、ClickHouse、Doris、MySQL、PostgreSQL等之间转换模式  \n✅ **智能SQL轨迹分析** - 解析真实SQL轨迹并提取有意义的模式  \n✅ **基于模板的负载生成** - 将查询转换为具有真实数据分布的参数化模板  \n✅ **可控负载模拟** - 调节QPS、并发数、热点比例和选择性参数  \n✅ **全面验证框架** - 通过详细偏差分析对比生成的基准测试与原始轨迹\n\n## 🚀 核心功能\n\n### 基础能力\n- **多数据库支持**：StarRocks、ClickHouse、Doris、MySQL、PostgreSQL、TiDB、OceanBase、MongoDB\n- **轨迹驱动分析**：将真实SQL轨迹转换为可重现的基准测试工作负载\n- **模式转换**：跨不同系统自动转换数据库模式\n- **参数化引擎**：从真实轨迹中提取参数分布以生成真实数据\n- **负载控制**：精细调节QPS、并发数和热点分布\n- **验证与报告**：原始工作负载与合成工作负载间的全面对比\n\n### 高级功能\n- **插件架构**：可扩展框架，支持添加新的数据库支持\n- **数据合成**：基于实际数据特征生成真实数据集\n- **性能指标**：跟踪QPS分布、延迟百分位、行数统计和热点覆盖率\n- **偏差分析**：识别并最小化真实与合成工作负载间的差异\n- **集成就绪**：内置支持现有基准测试工具和框架\n\n## 🏗️ 架构概览\n\nSQLTraceBench 采用模块化、基于插件的架构设计，注重可扩展性和可维护性。详细技术架构请参考我们的[架构文档](docs/architecture.md)。\n\n```mermaid\ngraph LR\n    A[SQL轨迹 + 模式] --\u003e B[解析引擎]\n    B --\u003e C[模板生成器]\n    C --\u003e D[参数建模器]\n    D --\u003e E[模式转换器]\n    E --\u003e F[负载生成器]\n    F --\u003e G[基准执行器]\n    G --\u003e H[验证报告器]\n````\n\n## 📦 安装\n\n### 使用 Go Install\n\n```bash\ngo install github.com/turtacn/SQLTraceBench/cmd/sql_trace_bench@latest\n```\n\n### 使用预构建二进制文件\n\n```bash\n# 从发布页面下载\ncurl -LO https://github.com/turtacn/SQLTraceBench/releases/latest/download/sql_trace_bench_linux_amd64.tar.gz\ntar -xzf sql_trace_bench_linux_amd64.tar.gz\nsudo mv sql_trace_bench /usr/local/bin/\n```\n\n### 从源码构建\n\n```bash\ngit clone https://github.com/turtacn/SQLTraceBench.git\ncd SQLTraceBench\nmake build\n```\n\n## 🎮 快速开始\n\n要获取关于如何使用 SQLTraceBench 的完整分步指南，请参阅我们全新的 **[快速入门指南](docs/quickstart.md)**。\n\n### 输入/输出示例\n\n**输入模式（TPC-C示例）：**\n\n```sql\n-- examples/tpcc_schema.sql\nCREATE TABLE warehouse (\n  w_id INT PRIMARY KEY,\n  w_name VARCHAR(10),\n  w_street_1 VARCHAR(20),\n  w_city VARCHAR(20),\n  w_state CHAR(2),\n  w_zip CHAR(9),\n  w_tax DECIMAL(4,2),\n  w_ytd DECIMAL(12,2)\n) ENGINE=OLAP\nDISTRIBUTED BY HASH(w_id);\n```\n\n**输入轨迹：**\n\n```jsonl\n{\"timestamp\": \"2025-08-15T10:00:01Z\", \"query\": \"SELECT w_name, w_tax FROM warehouse WHERE w_id = 1\", \"execution_time_ms\": 2.5, \"rows_returned\": 1}\n{\"timestamp\": \"2025-08-15T10:00:02Z\", \"query\": \"SELECT COUNT(*) FROM warehouse WHERE w_state = 'NY'\", \"execution_time_ms\": 15.0, \"rows_returned\": 1}\n```\n\n**生成输出：**\n\n```sql\n-- 输出：ClickHouse模式\nCREATE TABLE warehouse (\n  w_id Int32,\n  w_name String,\n  w_street_1 String,\n  w_city String,\n  w_state FixedString(2),\n  w_zip FixedString(9),\n  w_tax Decimal(4,2),\n  w_ytd Decimal(12,2)\n) ENGINE = MergeTree()\nORDER BY w_id;\n```\n\n## 🎬 演示\n\n![SQLTraceBench 演示](demo/sql_trace_bench_demo.gif)\n\n*运行 `make demo` 生成此演示或查看 [demo/README.md](demo/README.md) 创建您自己的演示。*\n\n## 📋 支持的数据库\n\n| 数据库          | 模式转换 | 查询转换 | 状态  |\n| ------------ | ---- | ---- | --- |\n| StarRocks    | ✅    | ✅    | 稳定  |\n| ClickHouse   | ✅    | ✅    | 稳定  |\n| Apache Doris | ✅    | ✅    | 测试版 |\n| MySQL        | ✅    | ✅    | 测试版 |\n| PostgreSQL   | ✅    | ✅    | 规划中 |\n| TiDB         | ✅    | ✅    | 规划中 |\n| OceanBase    | 🔄   | 🔄   | 开发中 |\n| MongoDB      | 🔄   | 🔄   | 规划中 |\n\n## 🤝 参与贡献\n\n我们欢迎社区贡献！SQLTraceBench 由开发者为开发者构建。\n\n### 如何贡献\n\n1. **Fork** 仓库\n2. **创建** 您的功能分支 (`git checkout -b feature/amazing-feature`)\n3. **提交** 您的更改 (`git commit -m 'Add some amazing feature'`)\n4. **推送** 到分支 (`git push origin feature/amazing-feature`)\n5. **打开** Pull Request\n\n### 开发环境设置\n\n```bash\n# 克隆并设置开发环境\ngit clone https://github.com/turtacn/SQLTraceBench.git\ncd SQLTraceBench\nmake setup-dev\n\n# 运行测试\nmake test\n\n# 运行代码检查\nmake lint\n```\n\n### 我们需要帮助的领域\n\n* 🔧 **数据库插件**：添加新数据库系统的支持\n* 📊 **查询分析器**：改进SQL解析和模板提取\n* 🎯 **负载生成器**：增强工作负载生成策略\n* 📚 **文档**：帮助我们改进文档和示例\n* 🧪 **测试**：添加测试用例并改进测试覆盖率\n\n## 📄 许可证\n\n本项目采用 Apache License 2.0 许可证 - 详见 [LICENSE](LICENSE) 文件。\n\n## 🙏 致谢\n\nSQLTraceBench 构建并集成了几个优秀的开源项目：\n\n* [StarRocks SQLTransformer](https://github.com/StarRocks/SQLTransformer) 提供SQL转换能力\n* [ClickHouse TPC-DS](https://github.com/Altinity/tpc-ds) 提供基准测试方法论\n* [ANTLR](https://www.antlr.org/) 提供SQL解析基础设施\n\n## 📞 社区与支持\n\n* 💬 **讨论**：[GitHub Discussions](https://github.com/turtacn/SQLTraceBench/discussions)\n* 🐛 **问题**：[GitHub Issues](https://github.com/turtacn/SQLTraceBench/issues)\n* 📧 **邮箱**：[sqltracebench@turtacn.com](mailto:sqltracebench@turtacn.com)\n* 🌟 如果SQLTraceBench对您有帮助，请在GitHub上**给我们点个星**！\n\n---\n\n\u003cdiv align=\"center\"\u003e\n  由SQLTraceBench社区用❤️制作\n\u003c/div\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fturtacn%2Fsqltracebench","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fturtacn%2Fsqltracebench","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fturtacn%2Fsqltracebench/lists"}