2

我正在做一个网络游戏。我现在正在用 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 内存

4

2 回答 2

6

您可能正在单独更新每一行,您需要使用批量更新

于 2012-08-06T14:09:48.323 回答
2

如果您还没有使用 PDO,请切换到它,然后使用transactions. 此外,重组您的表以使用 InnoDB 与 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();
于 2012-08-06T14:12:36.520 回答