-1

私たちは、当社のスタッフが一度承認したデータベーステーブルに1000以上のレコードを書き込む必要がある製品を用意しています。この数のレコードを一度に書き込む伝統的な方法は、テーブルに直接ループまたはMySQL一括挿入することです。1000+レコードをデータベーステーブルに書き込む最も効率的な方法

これに加えて、私はCRONジョブによってチェックされているテーブルをいくつか持ち、一度に2000レコードで別のテーブルを更新します。

私は、MySQLの一括挿入(パフォーマンスにどのような影響があります)を進めるべきか、またはカフカのようなイベント処理ツールを使用する必要があるかどうかを知りたいですか?

フィードバックをお寄せください。

ありがとうございます。

+1

何千ものレコードがそれほど長い時間を費すべきではありません。パフォーマンスの影響を測定しましたか? – ceejayoz

+0

私は十分なリソースがないため、パフォーマンスの比較をテストしていません。ここで問題となるのは、すべてのデータを1つのテーブルに書き込んだ後に、時間の経過と共に読み取りに時間がかかることです。このテーブルはデータを読み取るために使用されるので、MySQLに固執すべきか、nosqlのために行くべきなのかなと思います。どう思いますか? –

+1

私はあなたが不必要な最適化に飛びついていると思います。適切なインデックスが作成され、適切なハードウェアであれば、MySQLは数十億行を処理できます。どのくらいの時間がかかるかを確認するために、一括または二重挿入を実行するリソースを持っていないという考えに少しは困惑しています.NoSQLを採用したり、Kafkaを追加するよりもリソースが少なくて済みます。 – ceejayoz

答えて

1

私は「一回で承認された...」

...おそらく最速で速く LOAD DATAよりも、これをスピードアップすることができますトリックを感知する - これは、データがどこかの周りに座っていることを意味しています特定のテーブルに追加するために「ボタンを押す」としたいのですか?その場合、...

これらを別のテーブルに事前ロードします。次に、このクエリを実行する準備が整いました。

INSERT INTO real_table 
    SELECT * FROM pending_table; 

しかし...列が正しく整列されていますか? dupキーがありますか?もしそうなら、あなたは何かを更新する必要がありますか? IODKUを参照してください。その他

午前中にプロセスをテストすることをお勧めします。それが失敗した場合、恥ずかしいかもしれません。

+0

正しい。データはテーブル上に配置されます。週一人の従業員がこれらのデータを承認します。その後、この新しいテーブルにプッシュする必要があります。新しいテーブルは、最初のテーブルの正確なレプリカではありません。これは、列数は少なくなりますが、列名が異なる監査表のようになります。 –

関連する問題