首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与SQLite相比,领域为何如此之快?

与SQLite相比,领域为何如此之快?
EN

Stack Overflow用户
提问于 2016-03-16 16:49:20
回答 1查看 5.2K关注 0票数 17

我已经在王国网站上看到了基准测试,为什么领域与SQLite相比如此之快,后者有着悠久的开发历史,于2000年发布?

我想知道一个有知识的人是否可以分享一些领域在数据库层的幕后使用的通用技术?截至2016年3月,只有绑定是开源的,db层仍处于关闭状态。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-23 16:40:46

领域博客就这一主题进行了很好的技术讲座,但没有一个存储库深入讨论其性能背后的原因。这篇文章旨在以一种轻松易懂的方式浓缩视频和文章。

TL;DR

领域是为移动设备而设计的,它使用的是移动平台,因此在移动平台上进行权衡,而SQLite是一个通用的解决方案,被移植到移动平台上。

较长的答案

当然,领域进行了许多小的优化(整数打包,将公共字符串转换为枚举),但在这篇文章中,我将重点讨论能带来最大性能好处的差异。

  1. 传统的SQLite + ORM抽象是泄漏的,因为ORM只是将对象及其方法转换为语句。因此,这是以牺牲性能为代价的开发人员生产力的权衡。另一方面,领域是一个对象数据库,这意味着您的对象直接反映数据库。这种对数据库的直接访问,导致了下一个主题:零拷贝.
  2. 零拷贝:从数据库读取数据的传统方法导致不必要的复制(原始数据->反序列化表示->语言级对象)。领域通过映射内存中的整个数据、使用B+树和每当查询数据时避免了这一点,领域只需计算偏移量、从内存映射区域读取数据并返回原始值。
  3. Lazy load :由于属性是用列而不是行表示的,因此它可以在必要时延迟加载属性,而且由于列结构,读取速度要快得多,而插入则要慢得多。但是,在移动应用程序的背景下,这是一个很好的权衡。
  4. MVCC (Multiversion并发控制):也可以使用MVCC模型很好地处理并发,这意味着可以同时执行多个读取事务,在提交写入事务时也可以进行读取。
票数 27
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36041999

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档