prax_query/async_optimize/mod.rs
1//! Async optimizations for high-performance database operations.
2//!
3//! This module provides utilities for:
4//! - **Concurrent execution**: Run independent database operations in parallel
5//! - **Pipelined operations**: Execute multiple queries with minimal round-trips
6//! - **Introspection optimization**: Fetch schema metadata concurrently
7//!
8//! # Performance Gains
9//!
10//! | Optimization | Use Case | Typical Improvement |
11//! |--------------|----------|---------------------|
12//! | Concurrent introspection | `db pull` with many tables | 40-60% faster |
13//! | Parallel trigger creation | Migrations with procedures | 30-50% faster |
14//! | Pipelined bulk ops | Batch inserts/updates | 50-70% faster |
15//!
16//! # Example
17//!
18//! ```rust,ignore
19//! use prax_query::async_optimize::{
20//! concurrent::{ConcurrentExecutor, ConcurrencyConfig},
21//! pipeline::{QueryPipeline, PipelineConfig},
22//! };
23//!
24//! // Concurrent execution with controlled parallelism
25//! let executor = ConcurrentExecutor::new(ConcurrencyConfig::default());
26//! let results = executor.execute_all(tasks).await?;
27//!
28//! // Pipelined database operations
29//! let pipeline = QueryPipeline::new(PipelineConfig::default())
30//! .add_query("SELECT * FROM users WHERE id = $1", vec![1.into()])
31//! .add_query("SELECT * FROM posts WHERE author_id = $1", vec![1.into()]);
32//! let results = pipeline.execute(&client).await?;
33//! ```
34
35pub mod concurrent;
36pub mod introspect;
37pub mod pipeline;
38
39pub use concurrent::{ConcurrencyConfig, ConcurrentExecutor, ExecutionStats, TaskError, TaskResult};
40pub use introspect::{
41 ConcurrentIntrospector, IntrospectionConfig, IntrospectionResult, TableMetadata,
42};
43pub use pipeline::{PipelineConfig, PipelineError, PipelineResult, QueryPipeline};
44