首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >db日志与fs日志

db日志与fs日志
EN

Database Administration用户
提问于 2017-02-22 03:57:29
回答 1查看 985关注 0票数 2

SQLite为journal_mode提供了一个实用程序,我认为它可以在其他sql数据库程序(MySQL、PostgreSQL、MS-SQL等)中使用。因此,这个问题也适用于所有像SQLite一样提供日志记录模式的数据库程序。

大多数现代文件系统(BtrFS、Ext4、NTFS等)都使用日志记录。由于数据库通常存储在日志文件系统上,所以数据库程序是否也要进行日志记录?

当启用SQLite journal_mode时,与禁用journal_mode相比,大量的更新和/或插入需要非常长的时间才能完成。

EN

回答 1

Database Administration用户

回答已采纳

发布于 2017-02-22 12:32:26

SQLite的实用程序是特定于SQLite的;您不会在其他引擎中找到它们(或者实际上是PRAGMA语句)。

至于数据库“日志记录”,这只是SQLite对其事务日志的名称(参见SQLite引用中的journal_mode条目)。事务日志与文件系统日志完全不同,通常不需要禁用。如果没有事务日志,您将无法回滚事务并(如链接的文档注释所示):“如果在设置OFF日志模式时,应用程序在事务中间崩溃,那么数据库文件很可能会损坏。”

文件系统日志有助于确保崩溃后文件系统的一致性;但从应用程序(例如SQLite)的角度看,这并没有说明文件系统中的文件内部结构是否一致。

换句话说:不,它不是多余的,而且大多数其他数据库都没有提供任何禁用事务日志的选项。我建议,如果您的插入和更新进展缓慢,可能还有其他原因(每个事务进行了多少更改,等等)。

日志记录对于使数据库能够提供它们承诺的ACID (原子的、一致的、隔离的、持久的)保证至关重要。SQL-ite支持模式:DELETETRUNCATEPERSISTMEMORYWALOFF

  • DELETETRUNCATEPERSIST在每次事务提交后指定不同的处理日志文件的方法。
  • WAL -预写日志允许就地更新数据库文件。.
  • MEMORYOFF -允许崩溃时出现不一致状态,尽管OFF“允许数据库文件使用普通SQL损坏”。

为了提高性能,写前日志记录(WAL)有时会有所帮助,或者使用为多个并发写入器设计的数据库。

票数 4
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/165123

复制
相关文章

相似问题

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