长数据库查询结果同时写入并发

时间:2015-10-13 15:39:27

标签: sql database concurrency database-performance nosql

我很好奇。我有这样的流程:我们有大量的数据集合/表。并且有一些select面向的查询很长,需要3秒。

然而,我们期待高度并发的环境,每秒我们在数据库中获得100条新记录。

因此,假设我们有一个查询,在查询开始之前,我们有1000个项目满足这些查询。查询需要3秒,每秒有50个新项目与添加到数据库的查询匹配。我的问题是 - 这是这个查询返回给我的结果(它仍然是1000或1150或介于两者之间)以及它如何依赖于不同的数据库引擎(SQL,NoSQL)。 0

这不是关于确切数字的问题,而是更多 - 为什么它将是那些数字。

看起来问题有点宽。让我们用MySQL,Postgres,MongoDB和Cassandra限制数据库。

1 个答案:

答案 0 :(得分:1)

一般来说(主要是因为您没有命名特定数据库),数据库的并发级别是可配置的,属于性能调优的范畴。

一些常见的锁粒度是:

  • ROW - 一次只锁定一行数据
  • PAGE - 一次锁定某些行
  • TABLE - 整个表已锁定

因此,如果您使用ROW级别锁定,则可能会获得所有1150个结果,但代价是锁定开销较高。或者,如果您使用TABLE级别锁定,您将非常快速地获得1000个结果,但代价是您的数据流被阻止写入数据库3秒。