5

单用户数据库和多用户数据库有什么区别?为什么我需要使用单用户数据库?为什么制作它?

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

4

1 回答 1

6

单用户数据库和多用户数据库有什么区别?为什么我需要使用单用户数据库?为什么制作它?

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

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

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

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

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

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

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

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

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

于 2013-07-09T16:18:16.527 回答