2

私はオンラインゲームを作っています。現在300人のプレイヤーでゲームをテストしていますが、問題があります。データベースの約300行を毎秒更新する必要がありますが、更新に時間がかかりすぎます。約11143ms(11s)かかります。これは、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

4

2 に答える 2

6

おそらく各行を個別に更新しているので、バッチ更新を使用する必要があります

于 2012-08-06T14:09:48.323 に答える
2

まだPDOを使用していない場合は、PDOに切り替えて、を使用しますtransactions。また、InnoDBとMyISAMを使用するようにテーブルを再構築します。

InnoDBは、頻繁に読み取り/書き込みが行われる大きなテーブルでより適切に機能します。

これは、それが処理するように設計されたものの1つです。SELECT/UPDATE/INSERTスタイルが非常に似ている複数のステートメント。

上記のタイプの複数の連続した呼び出しを処理する場合は、トランザクションを使用することもお勧めします。

このGoogle検索を使用して、PHPPDOおよび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 に答える