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

大きなテーブルではMySQLInsertのパフォーマンスが低下します

    これがテストシステムなのか本番なのかはわかりませんでした。プロダクションだと思います。

    テーブルのインデックス(またはロット全体)がメモリに収まらないサイズになっている可能性があります。

    これは、InnoDBが挿入中にページを読み込む必要があることを意味します(新しい行のインデックス値の分布によって異なります)。ページの読み取り(ランダム読み取り)は非常に遅いため、可能であれば避ける必要があります。

    パーティショニングは最も明白な解決策のように思えますが、MySQLのパーティショニングはあなたのユースケースに合わないかもしれません。

    考えられるすべてのオプションを確実に検討する必要があります。テーブルをラボのテストサーバーに移動して、その動作を確認してください。

    主キーはおそらく必要ないように見えます(別の一意のインデックスがあります)ので、それを排除することは1つのオプションです。

    また、innodbプラグインと圧縮についても検討してください。これにより、innodb_buffer_poolがさらに進化します。

    ユースケースを分析して、このすべてのデータを実際に保持する必要があるかどうか、およびパーティショニングが賢明なソリューションであるかどうかを判断する必要があります。

    このアプリケーションに変更を加えると、ユーザーに新しいパフォーマンスの問題が発生する可能性があるため、ここでは十分に注意する必要があります。挿入のパフォーマンスを向上させる方法を見つけた場合、検索のパフォーマンスや他の操作のパフォーマンスが低下する可能性があります。このような変更をリリースする前に、製品グレードのハードウェアで徹底的なパフォーマンステストを行う必要があります。



    1. JavaとPostgresの列挙型を連携させて更新するにはどうすればよいですか?

    2. メソッドIlluminate\Support \ Collection::saveはLaravelに存在しません

    3. LaravelEloquentの配列へのクエリの分割

    4. ハングしたクエリを終了します(トランザクションでアイドル状態)