我正在做一个在线游戏。我现在正在与 300 名玩家一起测试游戏,但我遇到了问题。我必须每秒更新数据库中大约 300 行,但更新时间太长。大约需要 11143 毫秒(11 秒),这对于必须在不到 1 秒的时间内完成的任务来说几乎是差不多的。我正在从 JAVA 对数据库进行这些更新。我已经尝试过使用 PHP,但它是一样的。更新 SQL 查询非常简单...
String query5 = "UPDATE naselje SET zelezo = " + zelezo + ", zlato = " + zlato + ", les = " + les + ", hrana = " + hrana + " WHERE ID =" + ID;
因此,任何人都知道如何以更快的性能每秒更新数据库或任何其他解决方案如何更新游戏资源(黄金,木材,食物,...)?
我的配置:
英特尔酷睿i5 M520 2.40GHz
6 GB 内存
您可能单独更新每一行,需要使用批量更新
如果您尚未使用 PDO,请切换到 PDO,并使用 transactions
。此外,重组您的表以使用 InnoDB vs MyISAM。
InnoDB更适合频繁读取/写入的较大表。
这是它旨在处理的事情之一。多个SELECT/UPDATE/INSERT
语句,风格非常相似。
在处理上述类型的多个连续调用时使用事务也是一种很好的编码做法。
使用此Google搜索来了解有关PHP PDO和MySQL事务的更多信息。
例:
与交易
$pdo = new PDO(...);
$pdo->beginTransaction();
for ( $i = 0; $i < 1001; $i++) {
$pdo->query("UPDATE table SET column='$var' WHERE ID = $i");
}
$pdo->commit();