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

書き込みと読み取りが頻繁に行われる大きなテーブルでINSERT操作がすばやく行われるようにmysqlインデックスを最適化するにはどうすればよいですか?

    単一行の操作をデータテーブルに書き込むことはすべきではありません テーブルの大きさに関係なく、5秒かかります。

    クラスター化されたインデックスはタイムスタンプフィールドに基づいていますか?そうでない場合は、そうする必要があるので、テーブルの真ん中のどこかに書き込みをしていません。また、InnoDBテーブルを使用していることを確認してください-MyISAMは書き込み用に最適化されていません。

    two に書き込むことを提案します テーブル:1つの長期テーブル、インデックスがほとんどまたはまったくない1つの短期レポートテーブル。これらは必要に応じてダンプされます。

    もう1つの解決策は、ライブレポートデータにmemcachedまたはインメモリデータベースを使用することです。これにより、本番データベースに影響を与えることはありません。

    もう1つの考え:これらのレポートのいずれかが正確にどの程度「ライブ」である必要がありますか?おそらく、すべてに対して1回ではなく、時間ベースで新しいリストを取得します。 ページビューで十分です。



    1. UPSERTテストコードの構文エラー

    2. MYSQL LEFT JOIN with GROUP BY

    3. Postgresqlの列参照IDがあいまいです

    4. 毎日のステータステーブルを減らして、ステータスの変更のみを含める