Expand description
A library for parsing and analysing MySQL slow query logs.
This library processes MySQL slow query log files, extracting query statistics and normalising queries by replacing literal values with placeholders. This makes it easy to identify and group similar queries for performance analysis.
§Features
- Parse MySQL slow query log files
- Anonymise queries by replacing literals with placeholders
- Extract detailed query statistics (query time, lock time, rows examined, etc.)
- Generate SHA1 fingerprints for normalised queries
§Examples
§Processing a slow log file
use slowlog::process_slow_log_file;
process_slow_log_file("path/to/slow.log", |query| {
println!("Original: {}", query.query);
println!("Normalised: {}", query.formatted);
println!("Fingerprint: {}", query.fingerprint);
println!("Query time: {:.2}s", query.stats.query_time);
println!("Rows examined: {}", query.stats.rows_examined);
}).unwrap();§Processing from a reader
use slowlog::process_slow_log_reader;
use std::fs::File;
use std::io::BufReader;
let file = File::open("slow.log").unwrap();
let reader = BufReader::new(file);
process_slow_log_reader(reader, |query| {
println!("{:?}", query);
}).unwrap();§Query Normalisation
Queries are normalised by replacing all literal values with ? placeholders:
| Original | Normalised |
|---|---|
SELECT * FROM users WHERE id = 123 | SELECT * FROM users WHERE id = ? |
UPDATE users SET name = 'John' WHERE age > 18 | UPDATE users SET name = ? WHERE age > ? |
INSERT INTO users (name, age) VALUES ('Alice', 25) | INSERT INTO users (name, age) VALUES (?, ?) |
Structs§
- Query
- A parsed slow log query entry.
- Query
Stats - Statistics associated with a query execution.
Enums§
- Query
Error - Error type for query formatting operations.
Functions§
- process_
slow_ log_ file - Processes a MySQL slow query log file.
- process_
slow_ log_ reader - Processes slow log data from any
BufReadsource.