Amazon RDS インスタンスに 250,000 行の MySQL テーブルがあります。しようとすると
SELECT * FROM tableName
条件なし (テストのためだけに、通常のクエリは必要な列を指定しますが、ほとんどの列が必要です)、クエリの実行には 20 ~ 60 秒かかります。これがレポートのベース クエリになり、レポートは 60 秒以内に実行されるはずなので、うまくいかないと思います (結合を追加した瞬間にタイムアウトになります)。レポートは、小規模なテスト環境では問題なく実行されます。
MySQL がテーブルをロックしようとして、すべての書き込みが完了するのを待っているため、クエリに非常に時間がかかっている可能性がありますか? このテーブルにはかなり多くの書き込みがある可能性があります。本番システムをクエリでロックアップしたくないので、MySQL スレーブでクエリを実行しています。
- リレーショナル DB の行数については経験がありません。〜30列(varchar、date、およびinteger型)の250 000行は多いですか?
- このクエリを高速化するにはどうすればよいですか (ハードウェア、ソフトウェア、クエリの最適化 ...)
- データが矛盾していてもかまわないことを MySQL に伝えることはできますか (これはレポート データベースからのスナップショットです)。
- このクエリが 60 秒未満で実行される可能性はありますか? それとも目標を調整する必要がありますか?