0

我知道什么是比赛条件,但我仍然不完全理解:

首先,我知道myisam不支持事务,而innodb支持。

我正在建立一个有很多用户的社交网站,我想知道我是否需要考虑竞争条件,因为用户将使用 ON DUPLICATE KEY UPDATE 更新他们的个人资料,但我想知道是否会发生竞争条件以及你如何编写代码来防止这个问题?

有人可以在一个有多个用户的网站上解释竞争条件的概念,例如使用 COMMIT、ROLLBACK 等。

我在哪里使用这些东西?

4

1 回答 1

0

首先,我知道 myisam 不支持事务,而 innodb 支持。

这是一个好的开始。我建议使用 InnoDB。事务使数据库的修改具有原子性和一致性。事务还确保隔离,因此数据库的任何用户都不能干扰另一个用户的修改。

存在多线程时可能会出现竞争条件。是的,一个数据库使用多个线程,但事务确保一个用户的数据库更改在另一个用户的数据库更改之前进行。(是的,这是一个简化的逻辑解释。)

编辑添加:您可以询问您可能在其他 Stack Overflow 问题中可能遇到的特定 SQL 问题,但一般来说,您希望在 INSERT、UPDATE 或 DELETE SQL 语句之后尽快提交。

于 2011-10-07T15:11:58.080 回答