Performance
Performance
Performance optimization and tuning for Bingsan
Performance
Bingsan is optimized for high-throughput metadata operations with minimal memory overhead.
Overview
Bingsan implements several performance optimizations:
- Object Pooling - Reuses memory buffers to reduce GC pressure
- Distributed Locking - PostgreSQL-based locks with configurable timeouts
- Optimized Serialization - Uses goccy/go-json for fast JSON encoding
Performance Targets
| Metric | Target | Typical |
|---|---|---|
| Table metadata serialization | <50ms | ~10us |
| Large schema (100+ cols) | <200ms | ~90us |
| Memory allocation reduction | >=30% | 19-26% |
| GC pause (p99) | <10ms | <5ms |
| Pool hit rate | >=80% | ~100% |
Configuration
Pool and locking settings are configured in config.yaml:
catalog:
lock_timeout: 30s
lock_retry_interval: 100ms
max_lock_retries: 100Or via environment variables:
ICEBERG_CATALOG_LOCK_TIMEOUT=30s
ICEBERG_CATALOG_LOCK_RETRY_INTERVAL=100ms
ICEBERG_CATALOG_MAX_LOCK_RETRIES=100Sections
- Object Pooling - Memory buffer reuse for reduced allocations
- Distributed Locking - PostgreSQL-based locking with retry logic
- Benchmarking - Load testing with Apache Polaris Tools
- Metrics - Prometheus metrics for monitoring
- Tuning - Performance tuning guidelines