MySQLはJDBCでパフォーマンスの問題を選択します

RTF

mysql-connector v5.1.30を使用してローカルJavaアプリケーションを実行しているときに、MySQL(v5.5)でパフォーマンスの問題が発生します

AとBという2つのテーブルがあります。次のように実行します。

PreparedStatement stmtA = conn.prepareStatement("select x, y, z, u, v, w from A");
PreparedStatement stmtB = conn.prepareStatement("select val from B where something = ?");
ResultSet result = stmtA.executeQuery();
while ( resultA.next() ){
    // do something with result row
    if (some condition) { // true approx. 80% of the time
        ResultSet resultB = stmtB.executeQuery(some_value_from_resultA);
        // do something with result row  
        resultB.close();
    }
}
stmtA.close();

問題は、これが毎回完了するのに最大12分かかることです。関連する情報をいくつか示します。

  • このmysqldプロセスでは、12分間で95〜99%のCPUを使用しています。
  • Javaプロセスは12分間に1〜4%のCPUを使用しています
  • 両方のプロセスのメモリ使用量はごくわずかです
  • 表Aには、65,000レコード、18列(IDを除くすべてのVARCHAR)があり、MYISAMを使用しています。
  • 表Bには、51,000レコード、4列(3INTおよび1VARCHAR)があり、MYISAMを使用しています。
  • クエリしているテーブルB列にインデックス/キーがありません
  • Corei5と4GBのRAMを搭載したUbuntu12.04を実行しています

mysqlプロセスのCPU使用率がおかしいという事実は別として、問題があると思う理由は、アプリケーションに、別のデータベーステーブルに対してほぼ同じメソッドを実行する追加機能があるためです。このテーブルの列数はテーブルA(これもMYISAMを使用)と同じですが、大きな違いの1つは、ここにテーブルBがないことです。したがって、上記と同じように機能しますが、最初のテーブルの行を反復するときに2番目のテーブルをクエリする必要はありません。

この他のテーブルには4,500行があり、反復には1秒もかかりません。

したがって、テーブルBのネストされたクエリが問題を引き起こしているように見えますが、よくわかりません。MySQLの経験は限られています。さらに情報が必要な場合は、お問い合わせください。

彼らはいた

テーブルBで実行したクエリの結果をプリロードまたはキャッシュすることをお勧めします。テーブルBには多くのレコードがないため、マップにロードする余裕があります。

2つのオプションがあります:

  1. Bテーブル全体をプリロードし、何か(キー)とval(値)のマップを作成します。次に、0.8 * 65000クエリを実行する代わりに、そのマップにアクセスします。これsomethingは、多くの一意の値があり、Bクエリがそれらの多くを検索する場合に最も効果的です
  2. Bの各クエリの結果をマップに保存し、これらのクエリを実行する前にそのマップを確認してください。同じデータを2回ロードしても意味がありません。somethingBクエリで値の小さなサブセットのみを使用する場合は、メモリの点でより効率的です

テーブルBにインデックスを追加することも役立ちます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

IE8は人口パフォーマンスの問題を選択します-解決策が必要です

分類Dev

副選択でn個の最新の行を選択する際のパフォーマンスの問題

分類Dev

SQLパフォーマンスの問題:明確な200人の顧客が見つかるまでN行を選択します

分類Dev

グループごとの最大行を選択します-パンダのパフォーマンスの問題

分類Dev

選択可能なRecyclerViewのパフォーマンスの問題

分類Dev

再選択します。反応する。再選択して最大のパフォーマンスを得る最良の使用方法はどれですか?

分類Dev

WPFは、大量のデータに関するパフォーマンスの問題を制御します

分類Dev

パフォーマンスの良い一意の列で多くの行を選択します

分類Dev

XSLTは異なるノードからの要素値を比較します-パフォーマンスの問題

分類Dev

ボクシングはパフォーマンスの問題を引き起こしますか?

分類Dev

sp_getapplockはSQLServerのパフォーマンスの問題を引き起こしますか?

分類Dev

jQueryで動的CSSを追加する際にパフォーマンスの問題はありますか?

分類Dev

Angular:ngccを実行すると、VSCodeでパフォーマンスの問題が発生します

分類Dev

関数を宣言すると、Clojure でパフォーマンスの問題が発生しますか?

分類Dev

mysql8.0でのselectパフォーマンスの問題

分類Dev

OpenJDKは断続的なパフォーマンスとUIの問題を示しています

分類Dev

単純な更新/選択でのMysqlテーブルのパフォーマンスの問題(大きなテーブル、多くの接続)

分類Dev

マウスでパスワードフィールドを選択することはできません!PHPサイトの問題

分類Dev

パフォーマンスの問題のクエリを特定する方法 - MYSQL

分類Dev

Angular 5ビルドはMB単位でmain.bundleを生成し、本番環境でパフォーマンスの問題を引き起こします

分類Dev

QTextEditまたはQTextBrowserのパフォーマンスの問題

分類Dev

varcharキーで複数のテーブルを結合する-MYSQL:パフォーマンスの問題

分類Dev

パフォーマンスの問題は別として、Groovy / JRubyなどよりもJavaが選ばれているのはなぜですか?

分類Dev

Cassandraのすべてのパフォーマンスを選択

分類Dev

Firefoxのパフォーマンスの問題に対応しますか?

分類Dev

Springの@Autowiredは大きなパフォーマンスの問題ですか?

分類Dev

SQL Serverのパフォーマンス:1対1の結合、または選択内での選択?

分類Dev

Mysqlは、複数の列または1つの列を選択してから、phpで結果を表示します。パフォーマンスに優れたオプション

分類Dev

最もパフォーマンスの高いレンダラー、CanvasまたはWebGLを選択する方法

Related 関連記事

  1. 1

    IE8は人口パフォーマンスの問題を選択します-解決策が必要です

  2. 2

    副選択でn個の最新の行を選択する際のパフォーマンスの問題

  3. 3

    SQLパフォーマンスの問題:明確な200人の顧客が見つかるまでN行を選択します

  4. 4

    グループごとの最大行を選択します-パンダのパフォーマンスの問題

  5. 5

    選択可能なRecyclerViewのパフォーマンスの問題

  6. 6

    再選択します。反応する。再選択して最大のパフォーマンスを得る最良の使用方法はどれですか?

  7. 7

    WPFは、大量のデータに関するパフォーマンスの問題を制御します

  8. 8

    パフォーマンスの良い一意の列で多くの行を選択します

  9. 9

    XSLTは異なるノードからの要素値を比較します-パフォーマンスの問題

  10. 10

    ボクシングはパフォーマンスの問題を引き起こしますか?

  11. 11

    sp_getapplockはSQLServerのパフォーマンスの問題を引き起こしますか?

  12. 12

    jQueryで動的CSSを追加する際にパフォーマンスの問題はありますか?

  13. 13

    Angular:ngccを実行すると、VSCodeでパフォーマンスの問題が発生します

  14. 14

    関数を宣言すると、Clojure でパフォーマンスの問題が発生しますか?

  15. 15

    mysql8.0でのselectパフォーマンスの問題

  16. 16

    OpenJDKは断続的なパフォーマンスとUIの問題を示しています

  17. 17

    単純な更新/選択でのMysqlテーブルのパフォーマンスの問題(大きなテーブル、多くの接続)

  18. 18

    マウスでパスワードフィールドを選択することはできません!PHPサイトの問題

  19. 19

    パフォーマンスの問題のクエリを特定する方法 - MYSQL

  20. 20

    Angular 5ビルドはMB単位でmain.bundleを生成し、本番環境でパフォーマンスの問題を引き起こします

  21. 21

    QTextEditまたはQTextBrowserのパフォーマンスの問題

  22. 22

    varcharキーで複数のテーブルを結合する-MYSQL:パフォーマンスの問題

  23. 23

    パフォーマンスの問題は別として、Groovy / JRubyなどよりもJavaが選ばれているのはなぜですか?

  24. 24

    Cassandraのすべてのパフォーマンスを選択

  25. 25

    Firefoxのパフォーマンスの問題に対応しますか?

  26. 26

    Springの@Autowiredは大きなパフォーマンスの問題ですか?

  27. 27

    SQL Serverのパフォーマンス:1対1の結合、または選択内での選択?

  28. 28

    Mysqlは、複数の列または1つの列を選択してから、phpで結果を表示します。パフォーマンスに優れたオプション

  29. 29

    最もパフォーマンスの高いレンダラー、CanvasまたはWebGLを選択する方法

ホットタグ

アーカイブ