問題タブ [connector-j]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - MySQL JDBC ドライバーのクライアント側エミュレーション準備済みステートメント
MySQL JDBC ドライバーでクライアント側のエミュレーションによって準備されたステートメントがどのように機能するかを理解しようとしています。
パート 1 オンラインで、プリペアド ステートメントの場合、リレーショナル データベースが JDBC/SQL クエリを処理するときに必要な 4 つの手順があり、それらは次のようになっていると読みました。
- 受信 SQL クエリを解析する
- SQL クエリをコンパイルする
- データ取得経路の計画/最適化
- 最適化されたクエリを実行/データを取得して返す
ステップの事前実行によって SQL ステートメントがコンパイルされるため、事前最適化が提供されます。サーバー側のプリコンパイル済みステートメントの場合、SQL ステートメントをプリコンパイルするために、データベースに対して追加のラウンドトリップが行われます。
質問 データベースへのラウンドトリップを行わない場合、クライアント側エミュレーションの準備済みステートメントはどのようにステップ 3 を実行しますか? または、クライアント側エミュレーションの準備済みステートメントは別の方法で動作しますか?
パート 2 また、2 つの実験を行いました。
- 実験 1 - クエリごとに 1 つのクライアント側の準備済みステートメントを使用する
- 実験 2 - 同じクエリに対してクライアント側で準備されたステートメントを複数回「再利用」する
どちらの実験でも、応答時間などのパフォーマンスの向上が見られます。実験 1 では約 18% の改善が見られ、実験 2 では約 30% の改善が見られます。
質問
- クライアント側の準備済みステートメントに事前最適化がまだ存在すると仮定するのは正しいですか?
- はいの場合、サーバー側 (パート 1 で説明した 4 つのステップ) のプリペアド ステートメントと同様の方法で事前最適化しますか?
- 「いいえ」の場合、まだ改善されているのはなぜですか?
ご協力いただきありがとうございます!
java - mysql列が見つからないループ
こんにちは、compMac オブジェクトの LinkedList を作成するメソッドがあります。CompMac オブジェクトには、mysql テーブル行の要素が含まれています。各行にはニックネームと場所が含まれているため、ループを使用して各行の「compMac」を作成し、それらをリンクリストに追加します。理由はわかりませんが、最初の「compMac」が作成され、リンクリストに追加されていますが、その後
これが私の方法です:
しかし、私はニックネームの列を持っています。私が言ったように、最初のcompMacが作成され、リンクリストをポップすると、最初の行の情報が得られます。
私のコードの何が問題なのか考えている人に感謝します。
編集: ここでクラス コード: パッケージ サーバー; java.sql.* をインポートします。java.util.LinkedList をインポートします。
}
mysql - ノードフェイルオーバーテストでc3p0を使用する方法
3 つのノードで MySQL NDB Cluster をセットアップしました。セットアップの詳細は次のとおりです。
Node1 - MultithreadedDataNode1、SQLNode1
Node2 - MultithreadedDataNode2、SQLNode2
Node3 - 管理ノード
セットアップが機能することを確認するために、いくつかのフェールオーバー シナリオをテストしています。クライアント側では、c3p0 接続プールとともに MySQLConnector v5.1.30 を使用しています。クライアントはマルチマスター パラメータで構成されます。そのため、ノードまたはアプリケーションのいずれかがダウンした場合、JDBC クエリは別のノードで実行され、応答を継続する必要があります。
しかし、SQLNode(Port: 3306) がダウンした際に異常な動作が観測されています。接続は別のノードにフェイルオーバーされません。
構成は次のとおりです。
クライアントを起動すると、これら 2 つのノードが稼働しています。その後、最初のノード (192.168.102.22) から mysqld プロセスを強制終了すると、次の stackTrace が得られます。
何か不足している場合は修正してください..
ありがとう、
Parimal
mysql - クライアント側でサーバーのフェイルオーバーをテストするときに loadBalanceBlacklistTimeout を適切に使用する方法
MySQL Connector/J 5.1.30 を使用して、トランザクションの進行中にマスターが突然ダウンしたときに迅速なフェイルオーバーを実現しています。
blacklistTimout を 10 秒に指定しようとしました。
プロパティは現在のシナリオで使用されていますか (ドライバー、接続 URL を確認してください)、またはjdbc:mysql://の代わりに別の URL プレフィックスを指定する必要がありますか?
必須パラメータが不足している場合は修正してください。
乾杯、
パリマル
java - mysql connectorJ 文字セットの結果は utf8mb4 をサポートしていません
私は、mysqlへの接続プールを持つTomcatサーバーを持っています。
接続設定では、 *このページで、character_set_results を除くすべての文字セット エンコーディングが utf8mb4 に設定されていることがわかります。
私の接続文字列は -
mysql サーバーで、utf8mb4 を示す character_set_results を確認できます。
しかし、jspページではとにかく表示されません。
mysql のバージョンは 5.6.16 で、コネクタのバージョンは 5.1.22 です。
よろしく
eclipse - com.mysql.jdbc.Driver が見つかりません
サーブレットの作成にEclipseを使用しています。(connector/j)をダウンロードしmysql-connector-java-5.0.8-bin.jar
、プロジェクトのビルド パスに jar ファイルを追加しました。クラスを使用できます
mysql-connector-java-5.0.8-bin.jar
(IDE はヒントとそのすべてを提供し、コンパイル時にこれらのクラスを使用しても問題はありません)。しかし、サーブレットを実行すると、次のエラーが発生します。
使用していたクラスが突然com.mysql.jdbc.Driver
見つからないようです。
Java SE プロジェクトに jar ファイルを使用すると、完全に機能しますが、javaEE では機能しません。どうすればこれを修正できますか?
java - MySQL「ステートメントが閉じられた後は操作が許可されていません」
MySQL Connector/J を使用して、準備されたステートメントが MySQL データベースにヒットするという奇妙な状況に陥っています。特定の環境では、既存の (> 5 分) 準備済みステートメントが長くなるという問題が定期的に発生します。executeBatch を呼び出すと、次のような例外が頻繁に発生します。
「ステートメントが閉じられた後、操作は許可されていません」
ただし、私が見ることができるステートメントを閉じる可能性のあるコードはありません。コードは次のようになります。
ConnectionHelper.close は基本的に、ステートメントと接続に対して close を呼び出すだけです。ConnectionHelper.getConnection はちょっとした穴です。java.sql.DriverManager と proxool を使用してプールから接続を大まかに取得し、それを Spring DataSourceUtils でラップします。
通常、最後の pstmt.executeBatch() で失敗しますが、他の場所で失敗することもあります。確認したところ、wait_timeout と interactive_timeout はデフォルト (間違いなく 5 分以上) に設定されています。さらに、ほとんどの場合、接続とステートメントはループ内で使用されますが、数秒後にステートメントがループの外で失敗します。DB サーバーとアプリ サーバーは同じサブネット上で実行されているため、ネットワークの問題はほとんどないようです。
この問題をデバッグする方法に関するヒントを探しています。現時点では、MySQL Connector/J コードを掘り下げて、何らかの方法で追加のデバッグ ステートメントを取得できるかどうかを確認しようとしています。残念ながら、現時点では一部の環境でしか再現できないため、デバッガーを接続することはできません。
mysql - HikariCP と Slick を使用した MySQL 接続の管理
このソフトウェア スタックで Scala アプリケーションを実行しています。
Scala アプリをシャットダウンした後も、MySQL への接続が開いたままになる理由がわかりません。唯一の正しい側面は、Threads_connected が 16 から 1 に低下することです (これは、'show status' コマンドを実行しているコンソールです。
奇妙なことに、アプリを実行するたびに、DB へのオープン接続が、接続プールに設定されたオープン接続の最大数 (HikariCP maximumPoolSize) だけ増加していることを常に確認しているため、接続が接続に返されることはないと述べることができます。再利用のためのプール。
Slickのドキュメントによると
スコープに入るときにプールから接続を取得し、スコープの外で解放します
このソフトウェア スタックでの接続プールの使用に関して何か間違ったことをしたのでしょうか?
java - connector-jでmysqlサーバーから返されるデータサイズを知る方法
javaのconnector-jでmysqlを使用してクエリを実行しています。圧縮あり/なしで使用した場合に返されるデータのサイズを知りたいです。
サーバーからクライアントに渡されるデータの総量を取得する最良の方法は何ですか?
私が使用しているコードは、次のように機能しPreparedStatement
ますResultSet
。
Javaでデータ量を取得できますか?
それを取得する外部の方法はありますか?