Crate slowlog

Crate slowlog 

Source
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:

OriginalNormalised
SELECT * FROM users WHERE id = 123SELECT * FROM users WHERE id = ?
UPDATE users SET name = 'John' WHERE age > 18UPDATE 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.
QueryStats
Statistics associated with a query execution.

Enums§

QueryError
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 BufRead source.