SELECT是同步还是异步?

时间:2014-03-19 12:01:22

标签: php mysql select concurrency

我开发了一个多人游戏,我希望通过数据库中的研究将两个彼此不认识的玩家联系起来。所以我想这样做:

  • 想要与随机对手一起玩的玩家点击我的应用程序上的按钮。
  • 当按下按钮时,我在我的随机播放器'中控制数据库。表如果有人可以玩
  • 如果表格中没有存储播放器,我会将昵称放入数据库中等待有人想要播放
  • 相反,如果有人存储在数据库中,我会使用第一个昵称(按时间戳排序)并使用它。

我的问题是:我怎么能确定在同一时刻搜索随机玩家的两个玩家需要两个不同的玩家并且不一样,因为SELECT返回相同的玩家? 换句话说是SELECT同步还是异步?

1 个答案:

答案 0 :(得分:1)

我希望你做的是3层设计,而不是2层。例如。程序连接到中间连接到数据库的服务器(3层),还是程序直接连接到数据库(2层)?

如果是2层,您可能需要将某个选项包装在抓取播放器并更新表格的某种交易中,以便第二个请求不会抓住同一个播放器。另外,您可能需要考虑切换到3层设计,以便更好地管理用户可以和不能对您的数据库执行的操作。

如果是3层,您可以通过使用您用于在中间构建服务器的语言提供的某种锁定系统来避免这一切。大多数现代编程语言现在提供了一些语法,允许您指定一次只有一个线程应该运行给定的代码片段,从而允许您管理这些类型的并发问题。

还可以在MySQL concurrency

上考虑这个问题