0

アプリケーションが外部デバイスから 1 秒あたり約 100 のような DB 挿入の長いリストを収集する状況があります。これらのリクエストを受け取るアプリケーションは、mySQL DB 自体とは別のサーバーで実行されます。

挿入ごとに DB を開いたり閉じたりしたくないので、最初にそれらをある種のキューに集めてから、それらをまとめて挿入することをお勧めします。

DataSet mySQLこれにコンストラクトを使用することを考えていたときに、1 つの問題が発生しました。

する必要がありinsert some data into table A with autoincrement keyます。

And this key I then need to use to insert a subsequent record in table B.

通常のmySQLではLAST_INSERT_ID()、この目的のために使用するだけですが、DataSetを使用して挿入リクエストを収集する場合、その方法がわかりません。

これを解決する正しい方法は何ですか?

psまたは、リクエスト時に挿入するだけで、mySQLがリモートサーバーで実行されているという事実について心配する必要はありません。では、後で一括挿入するために、最初にこれらの要求を収集する必要はありませんか?

4

2 に答える 2

1

ここではパフォーマンスの問題について急いでいるので、代替案を検討することが重要です。永続データの保存を検討しています。したがって、ほとんどのオプションは次のようになります:-

  1. セッション
  2. ファイル
  3. データベース

セッションは、運用タイプのデータには推奨されず、保存できるデータのサイズに関して制限があります。私はこのオプションを除外します。

通常、ファイルはコンピュータ上で最も低速であるため、ファイルのオープン、書き込み、および追加は最も効率的ではない可能性があります。

それはデータベースを残します。個人的には、私が特定した他の 2 つのオプションよりもこのオプションをお勧めします。データベース接続を継続的に開いていることについて懸念をお聞きしています。PDOにはこれに対する答えがあります。

$dbh = new PDO('mysql:host=localhost;dbname=mydatabase', $user, $pass,
               array( PDO::ATTR_PERSISTENT => true
       ));
于 2013-11-10T10:24:32.847 に答える
0

あなたのためにLAST_INSERT_ID()

select max(id) from yourdb.yourtbl;
于 2013-11-10T09:10:42.900 に答える