| Crates.io | dm-database-parser-sqllog |
| lib.rs | dm-database-parser-sqllog |
| version | 0.6.0 |
| created_at | 2025-11-07 16:01:24.659974+00 |
| updated_at | 2025-12-02 10:01:52.817513+00 |
| description | 一个高性能的达梦数据库 sqllog 日志解析库,提供零分配或低分配的记录切分与解析功能 |
| homepage | https://github.com/guangl/dm-parser-sqllog |
| repository | https://github.com/guangl/dm-database-parser-sqllog |
| max_upload_size | |
| id | 1921774 |
| size | 80,077 |
一个高性能的达梦数据库 sqllog 日志解析库,提供零分配或低分配的记录切分与解析功能。
Cow 类型避免额外内存分配&str),避免不必要的字符串复制在你的 Cargo.toml 中添加依赖:
[dependencies]
dm-database-parser-sqllog = "0.6"
use dm_database_parser_sqllog::LogParser;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let parser = LogParser::from_path("large_log.sqllog")?;
for result in parser.iter() {
match result {
Ok(sqllog) => {
// 处理每条日志
println!("SQL: {}", sqllog.body());
}
Err(e) => eprintln!("解析错误: {}", e),
}
}
Ok(())
}
更多用法请参考 examples/ 目录,所有示例均为库用法,无可执行入口。
# 构建库
cargo build
# 运行测试
cargo test
# 生成文档
cargo doc --open
本仓库使用 cargo-llvm-cov 统计并卡住覆盖率下限为 90%。本地运行:
# 安装 cargo-llvm-cov(一次性)
cargo install cargo-llvm-cov
# 运行并在达不到 90% 时失败
cargo llvm-cov --workspace --all-features --fail-under-lines 90
我们将 Criterion 基准的当前结果作为“性能基线”。任何改动不得慢于该基线(容忍度默认 0%)。
首次或更新基线(会运行基准并写入 benchmarks/baseline.json):
pwsh ./scripts/export_criterion_baseline.ps1
对比当前实现与基线(慢于基线将退出码 1):
pwsh ./scripts/check_criterion_against_baseline.ps1 -Baseline 'benchmarks/baseline.json' -TolerancePercent 0
CI 中已在 Windows 上执行上述校验以避免环境差异导致波动。
完整的 API 文档请查看 docs.rs。
LogParser] - 从文件流式读取 SQL 日志,返回一个迭代器(内存映射 + 零拷贝)Sqllog] - SQL 日志结构体(包含时间戳、元数据、SQL 正文等)ParseError] - 解析错误类型(包含详细错误信息)Sqllog,无需手动调用解析方法body() 和 indicators_raw() 方法采用惰性求值,仅在调用时进行分割和 UTF-8 转换本项目包含了全面的测试套件:
tests/ 目录下的集成测试覆盖了常见场景集成测试 (tests/ 目录):
integration_test.rs - 核心功能集成测试Benchmark 测试 (benches/ 目录):
parser_benchmark.rs - 解析器性能测试MIT License - 详见 LICENSE 文件