我知道竞争条件是什么,但我仍然不完全明白:
首先,我知道 myisam 不支持交易, innodb 支持交易。
我正在构建一个有很多用户的社交网站,我想知道我是否需要考虑竞争条件,因为用户将使用ON DUPLICATE KEY UPDATE更新他们的个人资料,但我想知道是否会出现竞争条件你如何编写代码来防止这个问题?
有人可以在有多个用户的网站上解释竞争条件的概念,例如:使用COMMIT,ROLLBACK等。
我在哪里使用这些东西?
答案 0 :(得分:0)
首先,我知道myisam不支持交易而innodb不支持。
这是一个好的开始。我建议使用InnoDB。事务是对数据库atomic进行修改并保持一致的原因。事务还确保隔离,以便数据库的任何用户都不会干扰另一个用户的修改。
当存在多线程时,可能会发生Race conditions。是的,数据库使用多个线程,但事务确保在另一个用户的数据库更改之前进行一个用户的数据库更改。 (是的,这是一个简化的逻辑解释。)
编辑添加:您可以在其他Stack Overflow问题中询问您可能遇到的特定SQL问题,但一般情况下,您希望在INSERT,UPDATE或DELETE SQL语句之后尽快进行COMMIT。