当前位置: 首页 > 面试题库 >

MySQL并发,它如何工作,我需要在我的应用程序中处理它

翟英达
2023-03-14
问题内容

我目前正在运行MySQL数据库。我所有的表都使用表引擎InnoDB。

每个登录我的应用程序的人都可以查看记录,我担心两个用户有时可能同时更新或插入记录。MySQL是否可以优雅地处理这种类型的并发问题,或者这是我必须编写到代码中的东西?

如果必须将其编程到我的代码中,您如何处理这样的并发案例?


问题答案:

SQL语句是原子的。也就是说,如果执行以下操作:

UPDATE Cars SET Sold = Sold + 1

Sold在此语句期间,没有人可以更改变量。即使其他人正在同时执行同一条语句,它也总是增加1。

如果您有彼此依赖的语句,则会出现此问题:

a = SELECT Sold FROM Cars;
UPDATE Cars SET Sold = a + 1;

在这些查询之间,另一个用户可以更改表Cars并更新Sold。为防止这种情况,请将其包装在事务中:

BEGIN;
a = SELECT Sold FROM Cars;
UPDATE Cars SET Sold = a + 1;
COMMIT;

InnoDB支持事务,但MyISAM不支持。



 类似资料:
  • 问题内容: 我见过的每一个tkinter教程都声称必须绘制窗口并处理事件,并且它们总是调用此函数,即使在hello world程序中也是如此。但是,当我在交互式外壳程序中尝试这些方法时,可以正确绘制窗口,而不必调用mainloop。 这个在tkinter中嵌入matplotlib图形的示例产生了一个相对复杂的应用程序,它具有用于在tkinter窗口内平移,缩放和调整图大小的按钮,而且,如果您删除对

  • 问题内容: 我有一个使用此函数运行线程的代码示例。我们为什么以及何时需要使用它? 编辑 怎么样来使用类,什么是和? 问题答案: 当您要从非UI线程更新UI时必须使用。例如-如果您想从后台线程更新UI。您也可以将其用于同一件事。 从文档- 在UI线程上运行指定的操作。如果当前线程是UI线程,则立即执行该操作。如果当前线程不是UI线程,则将操作发布到UI线程的事件队列。 句法 - 更新- 如果您要执行

  • 问题内容: 这主要是关于我在这里的问题,但是我不明白为什么需要Swing实用程序以及它的用途。我正在设计一个Swing GUI,我不想错过Swing Utilities可能提供的任何功能。也有人可以解释该方法的作用及其工作原理。 问题答案: 如API中所述,Swing的实用程序方法的集合。在这种情况下,需要确保在事件调度线程或中创建/修改了Swing组件。同样,如API中所述,在应用程序线程需要更

  • 问题内容: 我正在学习MySQL并尝试使用子句。当我如下使用它时: 我收到以下错误: MySQL服务器正在使用–secure-file-priv选项运行,因此它无法执行此语句 我该如何解决这个错误? 我已经检查了关于同一错误消息的另一个问题,但仍然找不到解决方案。 我正在使用MySQL 5.6 问题答案: 它按预期工作。您的MySQL服务器已使用--secure-file- priv 选项启动,该

  • 我正在开发一个使用谷歌地图API的Android应用程序,用户大多在没有互联网连接的情况下使用我的应用程序。现在我正在寻找一种下载地图的方式,当用户想要和使用离线地图时,没有更多的互联网连接。谢谢!

  • 我正在开发一个支持NFC的应用程序。今天,我的清单中有一个意向过滤器,用于处理具有NDEF记录的NFC“颠簸”: 这个很好用。 该应用程序有一个“选择项目”活动和一个“查看”活动。正如目前所写,意图是在我的“选择一个项目”活动的上下文中处理的。但是,当应用程序处于“查看”活动中时,我希望“查看”能够处理任何NFC意图,而不是“选择项目”活动。当“查看”活动不再在堆栈上时,我希望任何NFC“颠簸”再