我正在制作一款在线游戏。我现在用300名玩家测试游戏,我遇到了问题。我必须每秒在数据库中更新大约300行,但更新时间太长。它需要大约11143毫秒(11秒),这几乎是必须在不到1秒内完成的任务。我正在从JAVA对数据库进行更新。我已经尝试过PHP,但它是一样的。更新SQL查询非常简单......
String query5 = "UPDATE naselje SET zelezo = " + zelezo + ", zlato = " + zlato + ", les = " + les + ", hrana = " + hrana + " WHERE ID =" + ID;
所以任何人都知道如何以更快的性能或任何其他解决方案每秒更新数据库如何更新游戏资源(黄金,木材,食品......)?
我的配置:
Intel Core i5 M520 2.40GHz
6 GB RAM
答案 0 :(得分:6)
您可能需要单独更新每一行,您需要使用batch update
答案 1 :(得分:2)
如果您尚未使用PDO,请切换到PDO,然后使用transactions
。此外,重组您的表以使用InnoDB与MyISAM。
InnoDB可以更好地处理经常读/写的较大表。
这是它旨在处理的事情之一。多个SELECT/UPDATE/INSERT
语句,风格非常相似。
在处理上述类型的多个连续调用时,使用事务也是一种很好的编码习惯。
使用此Google Search了解更多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();