SQLite 内存数据库的优点[关闭]

2024-02-04

我今天从一本关于 SQLite 的书中读到了关键字“:memory:”,但它只说了它是什么,如何使用,而且解释太短了。所以我在这里搜索了更多信息,但无法获得 SQLite 的具体信息。

  1. ':memory:' 模式有什么优点? (我什么时候需要这个?)

  2. 内存数据库的性能更快?

  3. 我还需要在内存数据库上使用事务吗?


A SQLite内存数据库 https://www.sqlite.org/inmemorydb.html其主要优点是性能:它将整个数据库保留在内存中,而不是读取和写入磁盘。内存比磁盘快得多。您将看到旋转磁盘或 IO 负载较重的服务器的性能提升最大,而 SSD 的性能提升较小。

然而,这并不是解决写得不好的查询和表的灵丹妙药。在使用内存数据库来提高性能之前,请务必优化表设计、查询和索引。

主要缺点是一旦进程关闭,数据库就会消失。并且数据库不能大于可用内存。

由于不需要写入磁盘,提交可能会更快,因此自动提交模式可能会更快,但事务仍应用于数据完整性目的。

请注意,不会变得太大的临时 SQLite 数据库可能会存储在内存中。

由于它的缺点,并且由于内存比存储少得多,因此在提交到内存数据库之前尝试使用临时数据库。这是通过使用完成的''为数据库文件名。这将写入临时文件,但将工作缓冲在内存缓存中。这是两全其美的,您无需使用太多内存即可提高性能。

尽管为每个临时数据库分配了一个磁盘文件,但实际上临时数据库通常驻留在内存中分页缓存中,因此由“:memory:”创建的纯内存数据库和临时数据库之间几乎没有什么区别由空文件名创建。唯一的区别是“:memory:”数据库必须始终保留在内存中,而如果数据库变大或 SQLite 面临内存压力,则临时数据库的部分内容可能会刷新到磁盘。

对您的应用程序进行分析和基准测试,以确保其能够提高性能,考虑是否最好优化查询并添加索引,并确保数据消失也没关系。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQLite 内存数据库的优点[关闭] 的相关文章

  • 如何防止字符串被截留

    我的理解 可能是错误的 是 在 C 中 当你创建一个字符串时 它会被实习到 实习生池 中 这保留了对字符串的引用 以便多个相同的字符串可以共享操作内存 但是 我正在处理很多很可能是唯一的字符串 一旦完成每个字符串 我需要将它们从操作内存中完
  • 为什么结构中“[0]byte”的位置很重要?

    0 byte在golang中不应该占用任何内存空间 但这两个结构体的大小不同 type bar2 struct A int 0 byte type bar3 struct 0 byte A int 那么为什么这个位置 0 byte这里重要吗
  • 指定的 sqlite3 gem 未加载

    虽然我对 Ruby on Rails 比较陌生 但我开发应用程序已经有一段时间了 我似乎遇到的问题是 当我创建一个新的 Rails 应用程序 本地 使用 c9 时 当我启动 apache 服务器时 我似乎收到此错误 Specified sq
  • 游标在“查询、删除表、创建表、查询相同表名”后返回相同的列

    例如我有一个名为myTable在我的数据库文件中 Android ps它不支持列重命名 删除等 这张表有idx name columns 我想删除并重新创建该表 但使用新列 我是这样做的 db transaction var cursor
  • 具有多个 sqlite 文件的核心数据

    如何将 Core Data 与多个 SQLite 文件一起使用 每个文件都包含相同的结构 但数据是从不同的位置检索的 我希望能够在运行时根据应用程序设置在这些 sqlite 文件之间切换 当然 只需指向持久存储协调器 NSPersisten
  • 加快写入文件的速度

    我已经分析了一些我用 cProfile 继承的遗留代码 我已经做了很多有帮助的更改 例如使用 simplejson 的 C 扩展 基本上 该脚本将数据从一个系统导出到 ASCII 固定宽度文件 每一行都是一条记录 并且有许多值 每行有 71
  • 性能计数器的性能影响是什么

    当考虑使用性能计数器作为我公司的基于 NET 的站点时 我想知道使用它们的开销有多大 我是否想让我的网站不断更新其计数器 或者我最好只在测量时更新 设置性能计数器的开销通常不够高 无需担心 设置共享内存区域和一些 NET 对象 以及 CLR
  • 如何为 CUDA 内核选择网格和块尺寸?

    这是一个关于如何确定CUDA网格 块和线程大小的问题 这是对已发布问题的附加问题here https stackoverflow com a 5643838 1292251 通过此链接 talonmies 的答案包含一个代码片段 见下文 我
  • 子查询与连接

    我重构了从另一家公司继承的应用程序的一个缓慢部分 以使用内部联接而不是子查询 例如 WHERE id IN SELECT id FROM 重构后的查询运行速度提高了约 100 倍 50 秒到 0 3 我预计会有改进 但谁能解释为什么它如此剧
  • 如何列出表中的所有列?

    对于各种流行的数据库系统 如何列出表中的所有列 对于 MySQL 请使用 DESCRIBE name of table 只要您使用 SQL Plus 或 Oracle 的 SQL Developer 这也适用于 Oracle
  • Array.indexOf 如何比 Array.some 更高效

    这个问题的灵感来自于这个问题的竞争答案 具有多个参数的indexOf https stackoverflow com questions 39000151 indexof with multiple arguments 用户想知道一种有效的
  • Emacs 行编号性能

    我试过了linum and nlinum 两者对于超过 100k 行的文件的性能都很糟糕 for x in 1 100000 do echo x done gt 100k txt emacs q 100k txt M x load libr
  • 是否有其他方法可以释放 C 中动态分配的内存 - 不使用 free() 函数?

    我正在为测试而学习 我想知道这些是否等同于 free ptr malloc NULL calloc ptr realloc NULL ptr calloc ptr 0 realloc ptr 0 据我了解 这些都不起作用 因为 free 函
  • 使用DBFlow,如何加密已经存在的数据库?

    我正在使用 DBFlow 来处理项目中的数据库 并且我想对现有数据库进行加密 我知道我可能必须删除现有的未加密数据库并创建另一个加密数据库 我也知道我可以将 SQLCipher 与 DBFlow 一起使用 如上所述文档 https gith
  • R:使用带有 .Call 和 C/C++ 包装器的 Fortran 子例程而不是 .Fortran 的优点?

    我有一个 R 包 它使用大量 Fortran 子例程来进行递归线性代数计算的嵌套循环 很大程度上依赖于 BLAS 和 LAPACK 例程 作为 Fortran 的接口 我使用 Fortran功能 我刚刚读过乔纳森卡拉汉的博客文章 http
  • 有效地生成所有排列

    我需要尽快生成所有排列 https en wikipedia org wiki Permutation整数的0 1 2 n 1并得到结果作为NumPy https numpy org 形状数组 factorial n n 或者迭代此类数组的
  • 64 位大型 malloc

    malloc 失败的原因是什么 尤其是在 64 位中 我的具体问题是尝试在 64 位系统上分配一大块 10GB RAM 该机器有 12GB RAM 和 32GB 交换空间 是的 malloc 是极端的 但是为什么它会成为一个问题呢 这是在带
  • SQL Server 不使用索引将日期时间与非空进行比较

    我有一个与其他任何表都不相关的简单表 它有一个非 PK 列 它是一个日期 我已经为该列创建了一个非聚集索引 如果我提出这个查询 select from table where datecolumn is not null 但如果我删除 no
  • UseCompressedOops JVM 标志有什么作用以及何时应该使用它?

    HotSpot JVM 标志是什么 XX UseCompressedOops我应该做什么以及什么时候使用它 在 64 位 Java 实例上使用它 与不使用它 时 我会看到什么样的性能和内存使用差异 去年大多数 HotSpot JVM 都默认
  • C 中带有指针的结构的内存开销[重复]

    这个问题在这里已经有答案了 我意识到当我的结构包含指针时 它们会产生内存开销 这里有一个例子 typedef struct int num1 int num2 myStruct1 typedef struct int p int num2

随机推荐

  • 在 Unix 上打开优化时,strcpy()/strncpy() 在具有额外空间的结构成员上崩溃?

    在写项目的时候 我遇到了一个奇怪的问题 这是我为重现问题而编写的最少代码 我故意存储一个实际的字符串来代替其他东西 并分配了足够的空间 include
  • SwiftUI:如何增加可以触发按钮的区域?

    如何在不更改 UI 的情况下增加按钮可以触发的区域 这是我的代码 struct ContentView View var body some View NavigationView Text Text navigationBarTitle
  • 如何移动 Atomikos 的 tm.out 和 *.epoch 文件的位置?

    我正在运行一个使用 Atomikos 的 J2SE 应用程序 它将大量日志文件转储到当前目录 我想将这些文件的位置移动到 tmp 但我找不到可以在 Spring XML 配置文件中设置的配置属性 Atomikos 文档引用了一个属性 com
  • 从 R 中的 Excel 文件中提取超链接

    如何在 Excel 中获取包含超链接文本的单元格并提取超链接部分 我发现了一种超级复杂的方法来提取超链接 library XML rename file to zip my zip file lt sub xlsx zip my excel
  • Django Rest框架中的HTTP 403

    所以我有一个基于函数的视图 与 Django Rest 框架一起使用 如下所示 from rest framework permissions import IsAuthenticated from rest framework decor
  • Vim、NERDtree 在会话恢复中未恢复

    当我有一个 NERDtree 面板并保存一个 Vim 会话 mksession 文件名 然后打开该会话 vim S 文件名 时 该面板会打开并标记为 NERDtree 但不会填充 如果我从命令行尝试 NERDtree 窗口确实会填充 但现在
  • 如何在 group_concat() 中使用 sum()?

    问题已修改 真的想要一个 group concat 的总和 表 商店 shop id name state 0 shop 0 5 1 shop 1 5 2 shop 2 5 3 shop 3 2 表 项目 shop item quantit
  • 在 C# 中打印 excel(使用 Spreadsheetgear 生成)

    在 C 中 我正在生成特定格式的 Excel 我必须在 click print 上打印相同的 Excel 格式 P s Microsoft Office 不可用 请使用 SpreadSheetGear 来实现此目的 如果您有 UI 并且正在
  • MySQL 表的交错行

    我有一个包含数据和类的表 例如 DATA Class 1 A 2 A 5 B 10 A 2 A 45 B 90 B 我想将这两个类交错以获得如下内容 DATA Class 1 A 5 B 2 A 45 B 2 A
  • Symfony2 Forms - 如何在表单构建器中使用参数化构造函数

    我正在学习使用 Symfony2 在我读过的文档中 与 Symfony 表单一起使用的所有实体都有空的构造函数 或者根本没有 例子 http symfony com doc current book index html http symf
  • 扩展方法什么时候会中断?

    我们目前正在讨论 NET 中的扩展方法是否不好 或者在什么情况下扩展方法可能会引入难以发现的错误或以任何其他方式出现意外行为 我们想出了 为不受您控制的类型编写扩展方法 例如 使用 GetTotalSize 扩展 DirectoryInfo
  • Comparer 类的用途是什么?

    其目的是什么Comparer
  • Dart 包 - 如何隐藏公共类中的内部方法?

    我正在开发一个关于 Flutter 的包 我在类中有一些方法仅对包本身有用 对导入我的包的程序员没有用 是否可以在公共类中隐藏这些方法以进一步实现 我正在尝试使用 internal注释 但我仍然可以看到标记为包外部内部的方法 Example
  • Java 中的枚举是否允许有 setter?

    我有一个enum它有一个参数 字段 是String 我可以在这个领域拥有二传手吗 public enum Blah Monday a Tuesday b private final String letter Blah String let
  • 对 csv 文件进行排序

    我有一个 csv 文件 需要对其进行排序 该文件如下所示 ID Name Surname Age Salary 1 John Asben 33 1000 2 Adam Smith 22 1200 3 Amanda J 22 2000 4 G
  • 扩展程序和小书签的内容安全策略

    Github有以下内容内容安全政策 https w3c github io webappsec specs content security policy 内容安全策略 默认 src 脚本 src asset cdn github com
  • 无法在 Yosemite DP 7 上安装 Cocoapods

    我在安装在单独分区上的 Yosemite DP 7 上安装 Cocoapods 时遇到问题 我已经尝试按照上找到的说明进行操作Cocoapods 与 Xcode 6 和 10 10 Yosemite https stackoverflow
  • 使用 JavaScript 获取 div id

    这是一些 HTML div class results div something div div something else div div blah blah blah div div etc div div 现在如果我可以使用 jQ
  • 从多个 hdf5 组创建数据集

    从多个 hdf5 组创建数据集 团体代码 np array hdf get all my groups 然后我添加了用于从组创建数据集的代码 with h5py File train h5 w as hdf hdf create datas
  • SQLite 内存数据库的优点[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我今天从一本关于 SQLite 的书中读到了关键字 memory 但它只说了它是什么 如何使用 而且解释太短了 所以我在这里搜索了更多