テーブルが170万レコードあるMySQLデータベースを使用しています。 JavaのRestletフレームワークを通して、これらのレコードをフェッチしてクライアントに返したいと思っています。私はリモートサーバーであるLinux Centosを使用しています。 WARファイルを作成してサーバーにアップロードしました。私がサービスを実行すると、応答するのに多くの時間がかかります。私は40分待ちましたが、何の出力も得られませんでした。 誰でもこの問題を解決するために私を助けてもらえますか?Javaで1.7百万レコードを取り込む方法は?
答えて
私は非常に多数の行を持っていますが、メモリマップされたファイルを使用しています。例えば私は約1分で11億行を取り出して処理しなければならないデータベースが1つあります。 (その200 GB以上)
これは非常に専門的なアプローチであり、SQLデータベースを調整する方法や、NoSQLデータベースを使用して必要なことをする方法があると思われます。私はあなたが何をしているのかに応じて1分間に170万分を取得することができますが(例えば、この数多くのamoungst数TBを選択するとしばらく時間がかかることがあります)
しかし、オプションを使用すると、カスタムデータストアを作成できます。
ところで、要約のみが作成されます。誰もその行を読んではいけません。ブラウザに表示しないでください。おそらく、レポートや要約を作成するためにできることがあるので、クライアントを送ることが少なくなります。
こんにちはPeter、返事ありがとうございます。はい私は、他のテーブルの結果を使用して、あるテーブルからレコードを選択しています。 – Deepu
この場合、最初にチェックするのはあなたのインデックスがテーブル間のジョインに最適であるかどうかです。 –
これはおそらくうまくいかないでしょう。メモリ内の多くの行のデータを保持すると、メモリ不足の例外が発生します(サーバーのログを見て、正確に何が起こっているのか確認できます)。
このようなことをするには、その計画を放棄して何らかの並べ替えを行う必要があります。そうしないと、メモリに保持せずにレコードをクライアントにストリーミングできるソリューションが必要になります。私は、Restletフレームワークでこれを可能にすることは確信しています。おそらく、サーブレットを使って実装する必要があります。
あなたの返信をありがとう、私はそれを試してみます。 – Deepu
私のアプリでは、この種の仕事は成功しています。あなたのクライアントが大きな反応を受け入れる準備ができているなら、そのアプローチに間違いはありません。要点は、レスポンスをストリーミングする必要があることです。つまり、レスポンス全体を文字列として作成することはできません。 HTTPレスポンスの出力ストリームを取得し、レコードを1つずつ書き込む。 db-endでは、スクロール可能な結果セットを設定する必要があります(JDBCレベル、およびHibernateレベルで簡単に行うことができます)。
こんにちはマルコ、返信いただきありがとうございます。スクロール可能な結果セットを使用しています。これをHTTPの出力ストリームで試してみます。 – Deepu
パフォーマンスをどのように向上させることができますか? –
- 1. 百万レコードを保存するJavaマップ
- 2. フラットファイルから何百万ものレコードを読み取る方法は?
- 3. 何百万ものレコードのデータベースのスケーリング
- 4. RODBCから300万レコードを読み込んでテキストファイルに書き込む方法
- 5. 書き込み方法3秒以内に200万レコードを書き込むか?
- 6. PHPで百万レコードにSMSやプッシュ通知を送るには
- 7. 反応jsとセイルで数百万のレコードを処理する方法js
- 8. マップからClojureレコードを取り込む方法は?
- 9. JavaでScalaストリームをインスタンス化して取り込む方法は?
- 10. Javaでコレクションを取り込む方法は?
- 11. python postgresqlクエリを3百万のレコードに最適化する方法
- 12. mysqlテーブルから何百万ものレコードを削除する方法
- 13. SQL Server 2012で何百万ものレコードを更新する
- 14. SSISで何百万ものレコードをインポートする
- 15. 数百万のレコードをレールで削除する
- 16. jdbcTemplate.query何百万ものレコードで低速実行中
- 17. Javaオーディオビジュアライザー - リアルタイムサウンド出力をスピーカーに取り込む方法は?
- 18. StringTokenizerの結果をJavaのArrayListに取り込む方法は?
- 19. Java:サブクラスに変数を取り込む方法は?
- 20. MySQLクエリの最適化には何百万ものレコードがあります
- 21. spring jdbcテンプレートを使用して何百万ものレコードを持つテーブルからデータを取得する方法
- 22. iOS - 50万ファイル、1百万件のエントリ
- 23. アンドロイドアプリケーションパッケージを取り込む方法は?
- 24. firebaseデータを取り込む方法は?
- 25. テーブルSQLサーバから数百万のレコードを選択
- 26. 1百万のレコードを持つインデックスのdynamodbの照会
- 27. 何百万ものレコードを扱うためのデータ構造
- 28. JDBC Oracleデータベースの数百万のレコードを更新します
- 29. レコードの百万を挿入するための
- 30. Sql何百万ものレコードを検索します。可能?
何かのページ付けを追加し、クライアントがレコードのオフセットを指定し、すべてのフェッチでレコードをn個に制限できるようにアドバイスします。それはあなたの問題を単純化することができます。一気にRESTを使った170万レコードが確実にあまりにも多く聞こえる –
なぜ地球上でその数多くのレコードを取得しようとしたいのですか? –
クライアントに170万のレコード全体を表示する予定ですか?私はあなたのブラウザもそれを処理することができなくなる恐れがあります。 – Kshitij