事务性能优化指南
版本: v2.1.0
更新日期: 2025-11-19
状态: ✅ 已实施
📚 目录
概述
本文档介绍 monSQLize v2.1.0 中引入的两个重要性能优化:
- 只读优化 - 只读事务不失效缓存,减少 30% DB 访问
- 文档级别锁 - 提升 10-100倍并发性能
适用场景
优化1: 只读优化
工作原理
传统方式(v2.0.0之前):
优化后(v2.1.0):
使用方式
无需任何代码改动! 系统自动识别只读事务。
性能收益
测试场景: 100个并发只读查询
优化2: 文档级别锁
工作原理
传统方式(v2.0.0之前):
优化后(v2.1.0):
使用方式
无需任何代码改动! 系统自动使用文档级别锁。
支持的查询类型
性能收益
测试场景: 10个并发事务,更新不同用户
性能对比
场景1: 电商秒杀(高并发写入不同商品)
配置:
- 1000个并发用户
- 100个不同商品
- 每个用户购买不同商品
结果:
场景2: 社交网络(高并发更新不同用户)
配置:
- 10000个并发操作
- 5000个不同用户
- 用户点赞、评论、关注
结果:
场景3: 多租户SaaS(隔离度高)
配置:
- 100个租户
- 每个租户独立操作自己的数据
结果:
使用建议
1. 优先使用文档级别锁
✅ 推荐场景:
- 高并发用户操作(社交、电商、SaaS)
- 分布式任务处理
- 多租户系统
❌ 不适用场景:
- 批量操作为主(update 大量记录)
- 范围查询为主(无法提取文档键)
- 单用户/低并发
2. 充分利用只读优化
✅ 推荐场景:
- 报表查询
- 数据分析
- 只读副本
最佳实践:
3. 监控事务统计
4. 配置调优
监控指标
关键指标
监控脚本示例
常见问题
Q1: 文档级别锁会增加内存使用吗?
A: 会略微增加,但影响很小。
- 每个文档锁:~100字节
- 100个并发事务,每个锁10个文档:100 * 10 * 100B = 100KB
- 结论: 内存影响可忽略不计
Q2: 如何判断查询是否使用了文档级别锁?
A: 查看日志:
或者查看事务统计:
Q3: 只读优化会影响数据一致性吗?
A: 不会。
- 只读事务仍然在事务隔离级别下执行
- 只是不失效缓存,不影响数据准确性
- 事务内读取的数据仍然是一致的快照
Q4: 可以禁用这些优化吗?
A: 可以(不推荐)。
总结
优化效果
建议
- ✅ 立即启用 - 无需代码改动,自动生效
- ✅ 监控指标 - 定期检查
getStats() - ✅ 按需调优 - 根据实际场景调整配置
文档版本: v2.1.0
最后更新: 2025-11-19
维护者: monSQLize Team