通常会注意到,没有服务器的简单数据库系统(例如GDBM,SQLite等)对于并发连接来说较弱。
数据库服务器如何处理并发连接以获得更好的并发性?
我认为在没有服务器的数据库系统中读取并发性更好,因为从平面文件读取数据没有限制。限制应该是可用的内存,我是对的吗?
问题在于写入并发,因为文件将被锁定。因此,一次只能写一次。我认为这也是Mysql的情况(使用MyISAM引擎,因为InnoDB中的锁定仅限于行)。实际上有并发写吗?
总的来说,数据库系统与服务器(例如Mysql)的并发性如何优于没有服务器的系统(例如SQLite)?
答案 0 :(得分:0)
许多数据库服务器支持事务和行级锁定
读取并发而不写入很容易获得。在进行更新时,允许读者更难。具有行级锁定的数据库将允许在更新期间无法读取其他行,平面文件和SQLite表。
在许多实际系统中,您将混合使用读写操作。并行写在实践中?想想stackoverflow或任何繁忙的论坛,会有大量的并发写作。
SQLite仅支持表级锁定,因此在存在许多并发用户的更新时会非常慢。另一方面,嵌入式数据库几乎没有设置,它们对单个用户或同时具有有限数量的并发用户的Web服务器都很有用。
我从Trac邮件列表中听到,在转换到MySQL或Postgres变得必不可少之后,SQLite后端才会适用于少数开发人员。