gpt4 book ai didi

javascript - Nodejs 是否将单个函数中的单独数据库操作设为原子操作?

转载 作者:行者123 更新时间:2023-12-03 09:23:46 29 4
gpt4 key购买 nike

我一直在尝试编写一些在 Node js 上运行的数据库查询,我想到了这一点。我能感觉到我误解了某些东西,但无法弄清楚它是什么。

如果 Node 是单线程的,那么这意味着所有函数调用都会依次运行。如果有多个客户端访问同一个 Node 服务器,仍然会出现请求先排队的竞争,但只要每个请求都被一个一个地处理,这是否会使所有数据库操作都在一个队列中执行?单个请求原子?

例如,假设我想要 1) 计算与表中某个值匹配的列数,2) 如果该数字超过 10,则插入一个新行。(可能可以在一个 SQL 中完成此操作)查询,但假设我单独运行它们。这是一个愚蠢的例子,但我希望您明白这一点。)我会使用事务来确保匹配列的数量不会意外更改。现在,我正在考虑编写一个在没有事务的情况下运行两个查询的函数。这能保证在 Node 上正常工作吗?

最佳答案

我想您想要运行第一个调用,一个计数,然后您想要在前一个调用的回调中执行插入。

由于 js 和 Nodejs 的本质,一旦你等待第一次调用的响应,一旦它返回并放入事件循环(所以,计数消失了,你已经有了结果即时),在等待服务时,其他一切都可能发生...甚至可以在其他地方提供另一个插入,为什么不呢(让我说,您正在服务用户请求,因此由于另一个用户的请求而插入,而不是正在执行计数的那个)。

也就是说,第二个用户的插入可以在第一个用户的计数之后发送的插入之前提供,这意味着绑定(bind)到计数的插入正在处理错误的预期数据集大小。

这只是您可能遇到的情况之一,但应该足以解决您的疑虑。

关于javascript - Nodejs 是否将单个函数中的单独数据库操作设为原子操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31756751/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com