私は現在約1000万レコードを保持するMysqlテーブルを持っています。レコードは、継続的に別のバッチアプリケーションによって挿入され、成長を続ける。 フロントエンドでは、このテーブルのデータをさまざまな基準に基づいて検索できます。私は動的なクエリを作成し、テーブルからデータを取得するクエリDSLとJPAリポジトリを使用しています。しかし、ページネーションによるクエリのパフォーマンスは非常に遅いです。インデックス作成、InnoDB関連の調整、HikariCPとehcaheソリューションによるセッション管理を試みましたが、まだデータを取得するのに約100秒かかります。 エンティティは、他のエンティティとは関係のない単純なPOJOです。JPA - Hibernate:連続的に成長するテーブルのクエリを選択
このシナリオを実装する最善の方法/技術/フレームワークは何ですか?
私はSosnaと同意します。私はまた大きなテーブルをSchardingすることをお勧めします。これは、テーブルをN個のテーブルに分割し、同じホストまたは別のホスト上の各テーブル(schard)をホストすることです。これを手作業で行うことができます(古い学校)か、おそらく役立つ製品があります。クエリパラメータでテーブルをschardすることができれば、クエリ時間中に*どの*テーブルがクエリを実行するかを決めることができます。それ以外の場合は、すべてのテーブル(シャード)に対して同時にクエリを実行する必要があります。 – sagneta