带/不带服务器的数据库系统中的并发性

时间:2011-10-13 13:15:21

标签: mysql database sqlite concurrency nosql

通常会注意到,没有服务器的简单数据库系统(例如GDBM,SQLite等)对于并发连接来说较弱。

  1. 数据库服务器如何处理并发连接以获得更好的并发性?

  2. 我认为在没有服务器的数据库系统中读取并发性更好,因为从平面文件读取数据没有限制。限制应该是可用的内存,我是对的吗?

  3. 问题在于写入并发,因为文件将被锁定。因此,一次只能写一次。我认为这也是Mysql的情况(使用MyISAM引擎,因为InnoDB中的锁定仅限于行)。实际上有并发写吗?

  4. 总的来说,数据库系统与服务器(例如Mysql)的并发性如何优于没有服务器的系统(例如SQLite)?

1 个答案:

答案 0 :(得分:0)

  1. 许多数据库服务器支持事务和行级锁定

  2. 读取并发而不写入很容易获得。在进行更新时,允许读者更难。具有行级锁定的数据库将允许在更新期间无法读取其他行,平面文件和SQLite表。

  3. 在许多实际系统中,您将混合使用读写操作。并行写在实践中?想想stackoverflow或任何繁忙的论坛,会有大量的并发写作。

  4. SQLite仅支持表级锁定,因此在存在许多并发用户的更新时会非常慢。另一方面,嵌入式数据库几乎没有设置,它们对单个用户或同时具有有限数量的并发用户的Web服务器都很有用。

    我从Trac邮件列表中听到,在转换到MySQL或Postgres变得必不可少之后,SQLite后端才会适用于少数开发人员。