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

Cos*_*sta 5 sqlite wcf database-engine local-database

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

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

Rya*_*eir 6

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

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

由于您已将此问题标记为SQLite,因此我将基于该特定引擎进行回答.

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

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

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

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

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

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

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