如题:https://www.workerman.net/doc/workerman/faq/multi-woker-for-windows.html 如果windows下用bat文件启动了多个worker,他们不同进程都有数据库操作。这时的数据库操作就不能保证顺序了吧?官方有什么备用的方案是我没浏览到的吗?
什么样的业务需要保证每个进程顺序操作数据库?
我没表达清楚,意思是不同进程同时操作数据库,会不会出现这种请款:数据库里原本的数值1,A进程读出来+1后得2准备写进去,但被B进程先写进了100,后A进程再写进2的时候,就吧B进程的100给覆盖了,没加锁的的情况下 会不会出现这种错乱呢?
还有,体验了一下wokerman5.0 beta版的协程http客户端,windows下使用酸爽啊,因为历史原因公司项目没有部署在linux上,windows下只能使用http协程客户端了,期待5.0出正式版阿,大概什么时候能出?
会不会出现这种情况:数据库里原本的数值1,A进程读出来+1后得2准备写进去,但被B进程先写进了100,后A进程再写进2的时候,就吧B进程的100给覆盖了,没加锁的的情况下 会不会出现这种错乱呢?
任何语言任何框架都有可能出现这种问题,需要业务自己想办法规避。 例如用一个SQL完成原子操作,SQL类似 update user set money = money + 1 where id=1; 或者只在数值正确时更新,SQL类似 update user set money = 2 where id=1 and money=1; 还有很多其他方案,具体可以问AI
update user set money = money + 1 where id=1;
update user set money = 2 where id=1 and money=1;
总之你不要指望哪个框架神不知鬼不觉的给你自动解决这种问题,都需要业务介入的
吃鱼还想着舔熊掌?
什么样的业务需要保证每个进程顺序操作数据库?
我没表达清楚,意思是不同进程同时操作数据库,会不会出现这种请款:数据库里原本的数值1,A进程读出来+1后得2准备写进去,但被B进程先写进了100,后A进程再写进2的时候,就吧B进程的100给覆盖了,没加锁的的情况下 会不会出现这种错乱呢?
还有,体验了一下wokerman5.0 beta版的协程http客户端,windows下使用酸爽啊,因为历史原因公司项目没有部署在linux上,windows下只能使用http协程客户端了,期待5.0出正式版阿,大概什么时候能出?
会不会出现这种情况:数据库里原本的数值1,A进程读出来+1后得2准备写进去,但被B进程先写进了100,后A进程再写进2的时候,就吧B进程的100给覆盖了,没加锁的的情况下 会不会出现这种错乱呢?
任何语言任何框架都有可能出现这种问题,需要业务自己想办法规避。
例如用一个SQL完成原子操作,SQL类似
update user set money = money + 1 where id=1;
或者只在数值正确时更新,SQL类似
update user set money = 2 where id=1 and money=1;
还有很多其他方案,具体可以问AI
总之你不要指望哪个框架神不知鬼不觉的给你自动解决这种问题,都需要业务介入的
吃鱼还想着舔熊掌?