单用户数据库和多用户数据库有什么区别?为什么我需要使用单用户数据库?为什么制作它?
如果我有多个线程使用相同的登录凭据同时访问同一个数据库,我是否需要一个多用户数据库?
单用户数据库和多用户数据库有什么区别?为什么我需要使用单用户数据库?为什么制作它?
如果我有多个线程使用相同的登录凭据同时访问同一个数据库,我是否需要一个多用户数据库?
单用户数据库和多用户数据库有什么区别?为什么我需要使用单用户数据库?为什么制作它?
单用户模式只允许在给定时刻与数据库建立一个连接。
由于您已将此问题标记为 SQLite,因此我的答案将基于该特定引擎。
SQLite 的并发保护模型基于直接文件读取和写入磁盘上的数据库文件,因此显然两个不同的程序不能同时写入磁盘上的同一个文件。在对数据库文件进行更改时,SQLite 将强制第二个查询等待。
SQLite 在执行 INSERTS 和 UPDATES 时使用操作系统文件锁来防止文件/数据库损坏。但它确实允许同时多个只读句柄(就像您可以在桌面上以只读方式多次打开相同文件,但无法保存更改一样)。
在 SQL Server 等其他数据库中,单用户模式通常仅在数据库需要维护时使用 - 例如恢复备份文件、更改数据库结构或更改全局数据库设置。
单用户模式很有用,因为在进行此类更改时,您无法连接客户端并尝试读取/写入数据。
但在正常情况下,出于性能原因,您不想在单用户模式下运行 SQL Server。然而,除非你有一个大容量的 web 服务,否则 SQLite 可能能够处理性能要求,尽管磁盘上一次一个更改。
如果我有多个线程使用相同的登录凭据同时访问同一个数据库,我是否需要一个多用户数据库?
不,它仍然可以工作。而且 SQLite 数据库根本不需要身份验证,除了文件/目录权限之外没有其他凭据。