MYSQL和SQLite多用户功能有什么区别?

时间:2014-07-07 17:17:50

标签: mysql sql database sqlite

我是服务器端编程的新手,我试图更好地理解关系数据库。每当我读到MYSQL与SQLite时,人们总是谈论SQLite无法拥有多个用户。但是,当我使用Django Framework编程时,我能够在sqlitedb上创建多个用户。有人可以解释多用户的意思吗?谢谢!

5 个答案:

答案 0 :(得分:1)

当人们在这种情况下谈论多个用户时,他们谈论的是同时连接到数据库。在这种情况下,用户是Web服务器中正在访问数据库的线程。

不同的数据库有不同的解决方案来处理同时使用数据库的多个连接。通常读取不是问题,因为多个读取操作可以重叠而不会相互干扰,但是一次只能有一个连接可以在特定单元中写入数据。

数据库的并发性之间的差异基本上是当有人写作时他们锁定的大单位。 MySQL有一个先进的系统,可以根据需要锁定记录,块或表,而SQLite有一个更简单的系统,它只锁定整个数据库。

当您在Web服务器中有多个线程时,可以看到这种差异的影响,其中一些线程想要读取数据而其他线程想要写入数据。 MySQL可以从一个表读取并同时写入另一个表而没有问题。每当有人想要写东西时,SQLite必须暂停所有传入的读取请求,等待所有当前读取完成,执行写入,然后再次打开读取操作。

答案 1 :(得分:0)

正如您可以阅读here,sqlite支持多用户,但锁定整个数据库。 Sqlite用于开发ussualy,购买Mysql是一个更好的sql用于生产,因为它有更好的支持并发访问和写入,但sqlite不。

希望帮助

答案 2 :(得分:0)

详细解释了SQLite并发性here

简而言之,SQLite没有MySQL所做的细粒度并发机制。当有人试图写入MySQL数据库时,MySQL数据库将只锁定它需要锁定的内容,通常是单个记录,有时是表。

当用户写入SQLite数据库时,整个数据库文件暂时被锁定。如您所想,这限制了SQLite处理许多并发用户的能力。

答案 3 :(得分:0)

多用户意味着许多任务(可能在许多单独的计算机上)可以同时与数据库建立开放连接。

多用户数据库提供锁之类的东西,以允许这些任务安全地更新数据库。

答案 4 :(得分:0)

看看ScimoreDB。它是一个支持多进程(或用户)读写访问的嵌入式数据库。它也可以作为客户端 - 服务器数据库。