sql >> データベース >  >> RDS >> Mysql

データストリームを処理するためのMySQLインサートの最適化

    データをすぐにデータベースに入れる必要がない場合は、挿入データをどこかにキャッシュしてから、1つの大きな挿入ステートメントを発行できます。例:

    重複更新時にtable_name(x、y、z)値(x1、y1、z1)、(x2、y2、z2)、...(xN、yN、zN)に挿入...;

    明確にするために、保留中の挿入のリストを維持します。この場合、(x、z、y)トリプレットのリスト。次に、リストがあるしきい値(N)を超えたら、挿入ステートメントを生成して発行します。

    正確なタイミングの数値はありませんが、各行を個別に挿入する場合と比較して、パフォーマンスが約10倍向上しました。

    また、Nの値で遊んだことはありませんが、1000がうまく機能することがわかりました。最適な値は、ハードウェアとデータベースの設定によって影響を受けると思います。

    これがお役に立てば幸いです(私もMyIsamを使用しています)。



    1. PostgresSQLを使用したLaravel5

    2. mysqlで複数の行を1つの行と複数の列にマージする

    3. Oracleはサブクエリで無効な識別子エラーを無視します

    4. モーダルで現在の行の値を渡す方法は?