我不确定我是否100%了解数据库的功能。如果我有一些误解,请指出。
假设我有一个函数想要在数据库中创建100个新条目,并且有100,000个条目。
当这100个条目被创建并且在创建最后一个条目之后进行提交时,似乎要快得多。
现在,如果这100个条目是由不同的用户创建的,那么只有在创建了100个条目后才能提交一个简单的方法吗?
编辑: 我应该写一些缓冲区吗?
答案 0 :(得分:2)
你可能能够一起破解这样的东西,但你真的不应该,因为它破坏了你的数据完整性,这是使用事务的全部要点
在您提出的解决方案中,批处理中的任何插入问题都会导致来自完全不同用户的所有其他(可能完全有效)插入失败。此外,用户将无法看到他们刚刚尝试插入的数据,因为系统正在等待插入,直到批处理已满。
答案 1 :(得分:2)
数据库针对基于集合的操作进行了优化,因此,一次在一个集合中插入100条记录的速度会更快。但是,当您谈到用户每次输入一个记录时,您不希望在我能想到的任何情况下将它们组合在一起。为什么?
首先,如果有一个不良记录,其他人将失败。这将使99个胡思乱想的用户中的100个(实际上是100个,但是由于他在开始时输入了错误的数据,因此没有理由感到胡思乱想)。 其次,用户在输入后不会立即看到记录。同样,在输入这些记录之前,他们将无法对这些记录做进一步的操作,例如将数据输入到相关表中。像这样的延迟会让用户胡思乱想。如果用户通过电话从客户输入数据,他们在等待时会特别胡思乱想(我在一个呼叫中心工作的商业产品非常慢,相信我知道用户过去有多难过!) 第三,用户将继续使用其他东西,并且不会意识到他们的数据因不良信息而被拒绝,而不是一件好事。 你有多长时间等待获得你设定的记录数量? 5秒,十分钟? 如果由于某种原因在这段时间内网络连接丢失,用户将丢失他们输入的数据,会发生什么。
答案 2 :(得分:1)
我认为你确实有一种误解。听起来你正在将数据库视为仅用于某种“长期”记忆的东西。这是一个糟糕的概念;数据库是应用程序具有的唯一内存。即使这不是真的,也最好假装它是。
为了更深入,您的应用程序具有:
所以你看到除了数据库之外你没有多少地方放置数据。