单用户数据库与多用户数据库

时间:2013-07-09 09:24:59

标签: wcf sqlite local-database database-engine

单用户数据库和多用户数据库有什么区别?为什么我需要使用单个用户数据库?为什么这么做?

如果我有多个线程使用相同的登录凭据同时访问同一个数据库,我是否需要一个多用户数据库?

1 个答案:

答案 0 :(得分:6)

  

单用户数据库和多用户之间有什么区别   数据库?为什么我需要使用单个用户数据库?为什么会这样   制成?

单用户模式仅允许在给定时刻与数据库建立一个连接。

由于您已将此问题标记为SQLite,因此我的答案将基于该特定引擎。

SQLite的并发保护模型基于对磁盘上数据库文件的直接文件读取和写入,因此显然两个不同的程序无法在同一时间写入磁盘上的同一文件。 SQLite将强制第二个查询在对数据库文件进行更改时等待。

当执行INSERTS和UPDATES时,SQLite使用操作系统文件锁来防止文件/数据库损坏。但它确实允许同时使用多个只读句柄(就像您可以在桌面上以只读方式多次打开文件一样,但无法保存更改)。

在其他数据库(如SQL Server)中,单用户模式通常仅在数据库需要维护时使用 - 例如还原备份文件,更改数据库结构或更改全局数据库设置。

单用户模式很有用,因为在进行这些更改时,您无法连接客户端并尝试读取/写入数据。

但在正常情况下,出于性能原因,您不希望以单用户模式运行SQL Server。但是,除非您拥有大量的Web服务,否则SQLite可能能够处理性能要求,尽管在磁盘上一次更改一次。

  

如果我有多个线程使用相同的登录凭据同时访问同一个数据库,我是否需要一个多用户数据库?

不,它仍然可以使用。并且SQLite数据库根本不需要身份验证,除了文件/目录权限之外没有其他凭据。