# Ръководство за Производителност ## Методология на Бенчмарковете Всички бенчмаркове са проведени с: - **Компилатор**: Nim 2.2.0 с `-d:release --opt:speed` - **CPU**: AMD Ryzen 9 5900X (12 ядра / 24 нишки) - **Памет**: 64 GB DDR4-3600 - **Диск**: Samsung 980 Pro NVMe SSD - **ОС**: Ubuntu 24.04 LTS Пускане на пълния бенчмарк сюит: ```bash nim c -d:ssl -d:release -r benchmarks/bench_all.nim ``` ## Storage Engine Бенчмаркове ### LSM-Tree Key-Value | Метрика | Стойност | |---------|----------| | Пропускателна способност при запис | ~580,000 ops/s | | Пропускателна способност при четене | ~720,000 ops/s | | Средна латентност при запис | 1.7 µs | | Средна латентност при четене | 1.4 µs | LSM-Tree използва 64MB MemTable, WAL fsync при всеки запис и size-tiered compaction с 6 нива. ### B-Tree Индекс | Метрика | Стойност | |---------|----------| | Пропускателна способност при вмъкване | ~1,200,000 ops/s | | Пропускателна способност при точково търсене | ~1,500,000 ops/s | | Range scan (1000 ключа) | ~0.3 ms | ## Vector Engine Бенчмаркове ### HNSW Индекс | Метрика | Стойност | |---------|----------| | Вмъкване (dim=128) | ~45,000 вектора/s | | Търсене топ-10 (dim=128, n=10K) | ~2 ms | | Търсене топ-10 (dim=128, n=100K) | ~8 ms | ### SIMD Функции за Разстояние | Операция | dim=128 | dim=768 | dim=1536 | |----------|---------|---------|----------| | Косинусово разстояние | 4.2M/s | 850K/s | 420K/s | | L2 (Евклидово) | 4.5M/s | 920K/s | 450K/s | | Скаларно произведение | 4.8M/s | 980K/s | 480K/s | ## Full-Text Search Бенчмаркове | Метрика | Стойност | |---------|----------| | Индексиране | ~320,000 документа/s | | BM25 търсене | ~28,000 заявки/s | | Fuzzy търсене (distance=2) | ~850 заявки/s | ## Graph Engine Бенчмаркове | Операция | Пропускателна способност | |----------|--------------------------| | Добавяне на възел | ~2.5M ops/s | | Добавяне на ребро | ~1.8M ops/s | | BFS (1K възела, 5K ребра) | ~12K обхождания/s | | Dijkstra най-кратък път | ~120 µs | | PageRank (10 итерации) | ~450 графа/s | ## Протоколни Бенчмаркове | Протокол | Връзки | Заявки/s | Латентност p99 | |----------|--------|----------|----------------| | Бинарен (localhost) | 1 | 45,000 | 0.4 ms | | Бинарен (localhost) | 100 | 380,000 | 1.2 ms | | HTTP/REST | 1 | 12,000 | 2.1 ms | | HTTP/REST | 100 | 95,000 | 5.8 ms | | WebSocket | 1 | 18,000 | 1.8 ms | ## Вертикален Мащабинг | Ядра | LSM Запис | LSM Четене | Векторно Търсене | |------|-----------|------------|-------------------| | 1 | 580K | 720K | 2.0 ms | | 4 | 1.9M | 2.6M | 1.1 ms | | 8 | 3.4M | 4.8M | 0.7 ms | | 16 | 5.8M | 7.2M | 0.5 ms | ## Ръководство за Настройка ### За Write-Heavy Натоварвания ```bash export BARADB_MEMTABLE_SIZE_MB=256 export BARADB_WAL_SYNC_INTERVAL_MS=10 export BARADB_COMPACTION_INTERVAL_MS=30000 ``` ### За Read-Heavy Натоварвания ```bash export BARADB_CACHE_SIZE_MB=1024 export BARADB_BLOOM_BITS_PER_KEY=10 export BARADB_COMPACTION_INTERVAL_MS=120000 ``` ### За Векторно Търсене ```bash export BARADB_VECTOR_EF_CONSTRUCTION=200 export BARADB_VECTOR_EF_SEARCH=128 export BARADB_VECTOR_M=32 ``` ### За Графова Аналитика ```bash export BARADB_GRAPH_PAGE_RANK_ITERATIONS=20 export BARADB_GRAPH_LOUVAIN_RESOLUTION=1.0 ```