RavenDB 3.0 新稳定版

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡/ 赠书活动

目前,正在 星球 内带小伙伴们做第一个项目:全栈前后端分离博客项目,采用技术栈 Spring Boot + Mybatis Plus + Vue 3.x + Vite 4手把手,前端 + 后端全栈开发,从 0 到 1 讲解每个功能点开发步骤,1v1 答疑,陪伴式直到项目上线,目前已更新了 204 小节,累计 32w+ 字,讲解图:1416 张,还在持续爆肝中,后续还会上新更多项目,目标是将 Java 领域典型的项目都整上,如秒杀系统、在线商城、IM 即时通讯、权限管理等等,已有 870+ 小伙伴加入,欢迎点击围观

我们刚刚发布了 RavenDB 3.0 的 build 3785。此构建有相当多的更改(有关完整的详细信息, 请参阅拉取请求 )。

此版本包括大约 3 个月的错误修复、性能改进等。几周以来,我们一直在自己的系统以及多个现场制作网站上对此进行测试,结果令人鼓舞。

主要变化

  • Voron &map/reduce 优化。我们做了主要工作来优化 RavenDB 如何在 Voron 上使用 map/reduce。因此,Voron 上的 map/reduce 性能得到了极大的提高。但是, 这需要在首次启动时执行迁移步骤 。如果您有一个使用 Voron 的大型 RavenDB 数据库,并且您正在大量使用 map/reduce,请考虑到在第一次启动时,RavenDB 将需要执行内部迁移,这可能需要一段时间。
  • 减少查询的 Lucene 和内存分配。我们 大大 减少了为每个查询分配的内存量,并显着提高了查询的性能。

改进

  • 许多小的性能优化、内存分配减少、对象池等。公共代码路径上的内存分配大幅减少。
  • 更好地处理 websockets 中的缓冲区分配,减少内存碎片。
  • 更好地处理索引内的 Take() / Skip()。
  • 一次只允许单个索引使用快速预计算优化(如果同时更改多个中型索引,则减少内存使用)。
  • 更好地处理并发添加多个索引到大型数据库,现在将在同一组索引批次中运行,而不是每个都有自己的。
  • 使用本机调用重新实现内存统计检查以避免昂贵的分配。
  • 索引损坏时提供更详细的信息。
  • 添加用于停止/启动的端点只会减少工作量。
  • 对批量大小的大规模更改不那么激进,更加谨慎会让我们的性能稍微慢一点,但在负载下系统更稳定。
  • 大量优化 Voron 恢复代码以支持大型数据库上的慢速 I/O 系统。
  • 允许将单个数据库标记为开发/暂存/生产。
  • 更好地处理 Lucene 文件使用,在查询索引时使用 mmap 避免 所有 分配。 显着 改进内存使用和查询速度。

Bug修复

  • 如果它已经存在,请不要更新并排索引。
  • 允许在并排索引仍在运行时更新它。
  • 使用“new string[0]”修复 .NET 4.6 上的索引编译错误。
  • 修复了在使用动态查询时强行删除索引定义时的 NRE。
  • 修复了处置期间的错误处理,导致异常逃离线程边界和崩溃。
  • 修复了嵌入式数据库的 FIPS 许可问题。
  • 管理日志未捕获受 IsDebugEnabled 语句保护的日志
  • 修复了导致我们尝试从关闭的句柄中读取的终结器使用错误。
  • 在创建 map-reduce 索引并禁用索引时防止损坏的索引警告。
  • 防止代码尝试使用已处置的内部事务。
  • 已安装的修复程序 - 在选择使用现有网站时检查并撤销 URL 保留选项。
  • 使用到期包关闭数据库时正确处理计时器实例。
  • 防止错误加载 ICSharpCode.NRefactory 终止 RavenDB 客户端启动。