第二章 核心架构技术
2.1 连接管理器(ConnectionManager)
SXDB的连接管理器是整个服务的核心,负责数据库实例的生命周期管理、连接池维护和并发访问控制。每个数据库对应一个独立的DbConnection对象,内部采用shared_mutex实现读写分离。
读操作获取共享锁,多个读请求可以并行执行;写操作获取独占锁,确保写入的原子性。这种设计在读多写少的典型场景下能充分利用多核CPU资源。
组件
职责
关键机制
ConnectionManager
数据库实例注册、连接分配
全局互斥锁 + 文件监控线程
DbConnection
单库连接对象,SQL执行
shared_mutex读写分离
ThreadPool
请求分发、并发执行
条件变量 + 任务队列
AuthManager
用户认证、权限校验
JWT Token + 数据库级权限
LogManager
操作审计日志
线程安全环形缓冲区
Metrics
性能指标采集
原子计数器 + 直方图
2.2 并发模型
SXDB采用多层次并发架构,从TCP连接接入到SQL执行均具备并行处理能力。
接入层:独立的accept线程持续监听新连接,接受后按连接分配给工作线程
处理层:ThreadPool线程池(默认8线程)并行处理客户端请求
数据层:每个数据库独立的shared_mutex,读读并行、读写互斥、写写互斥
✔ 线程数可通过config.ini的threads参数配置,建议设置为CPU核心数的1-2倍。
2.3 二进制通信协议
与基于文本的HTTP协议相比,SXDB的自定义二进制协议具有更低的协议开销。每个消息仅包含4字节的固定长度头加上JSON消息体,无需HTTP头部的冗余信息。
特性
二进制协议
HTTP/REST
头部开销
4字节固定
~200-500字节HTTP头
连接方式
长连接,零建连开销
短连接或连接池
序列化
JSON消息体
JSON + HTTP元数据
适用场景
高频数据操作
跨墙、调试、兼容性
平均延迟
<1ms(同主机)
~5-20ms(HTTP开销)
2.4 SQLite存储引擎优化
SXDB在SQLite基础上进行了多项深度优化,显著提升了并发性能和查询速度。
优化项
配置值
作用说明
journal_mode
WAL
写前日志,允许读写并行执行
synchronous
NORMAL
平衡安全性和性能,减少磁盘刷新
cache_size
-2000
2MB页缓存,减少磁盘I/O
temp_store
MEMORY
临时表和索引存储在内存中
mmap_size
268MB
内存映射文件I/O,避免系统调用开销
busy_timeout
5000ms
写入等待超时,避免死锁
ℹ WAL模式是并发性能的关键。在传统日志模式下,读和写互斥;而WAL模式允许读操作在写操作进行时并行执行,极大提升读取吐量。