問題タブ [connection-pooling]
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.
c# - SQLServer接続の管理
SQL接続のベストプラクティスは何ですか?
現在、私は以下を使用しています:
これはSQL接続を行うための非常に効果的な方法であることを読みました。デフォルトではSQLプーリングがアクティブであるため、using
コードが終了するとSqlConnection
オブジェクトは閉じられて破棄されますが、DBへの実際の接続はSQL接続プールに入れられます。私はこれについて間違っていますか?
java - DUAL から 1 を選択: MySQL
クエリ ログに目を通すと、説明のつかない奇妙なパターンが見つかりました。
実質的にすべてのクエリの後、「DUALから1を選択」しました。
これがどこから来ているのかわかりません。また、クエリを明示的に作成していません。
ログは基本的に次のようになります。
以前にこの問題に遭遇した人はいますか?
MySQL バージョン: 5.0.51
ドライバー: JDBC を使用する Java 6 アプリ。mysql-connector-java-5.1.6-bin.jar
接続プール: commons-dbcp 1.2.2
validationQuery は「DUAL から 1 を選択」(明らかに) に設定されており、検証クエリが null 以外の場合、接続プールのデフォルトで testOnBorrow と testOnReturn が true に設定されているようです。
これが私にもたらすもう1つの質問は、実際に検証クエリが必要かどうか、または検証クエリを無効にするか、少なくとも使用頻度を減らすことでパフォーマンスを向上できるかどうかです。残念ながら、私たちの「データベースマネージャー」を書いた開発者はもう私たちと一緒にいないので、彼にそれを正当化するように頼むことはできません. 任意の入力をいただければ幸いです。しばらくの間、API と Google を掘り下げて、価値のあるものが見つかったら報告します。
編集:さらに情報を追加
EDIT2:後でこれを見つけた人のために、正解で求められた情報を追加しました
oracle - JBoss JDBC 接続を無効にして、接続プールから再供給されないようにすることはできますか?
JDBC 接続が接続先の Oracle セッションを特定の状態 (つまり、DBMS_FLASHBACK 有効モード) にする状況があります。このモードの終了が (少なくとも理論的には) 失敗する可能性があります。これは、セッションが誤ってその状態のままになっていることを意味します。この場合、接続はプールに返され、DBMS_FLASHBACK が有効なモードのままの Oracle セッションを持つ別のスレッドによって取得されます。
私はそれが実際に起こることを証明しました。(JBoss 4.2.1)
理想的なのは、モードの終了が失敗したときに SQLException をキャッチし、接続を「不良」としてマークして、接続がプールに返されると、JBoss が接続を破棄して新しい接続を作成することです。
しかし、接続をすぐに破棄するようにマークする方法が見つかりません。誰も方法を知っていますか?
asp.net - asp.net接続プーリング:接続の自動テストと検証?
一部の接続プールでは、プール マネージャーが接続を検証するために使用できるテスト クエリを指定できます。
asp.netに似たものはありますか? Web アプリケーションとデータベースの間にファイアウォールがあり、アイドル状態の接続を閉じるという問題が発生しています。その結果、ユーザーは「ORA-03135: 接続が失われました」というエラーが発生します。ページのリロードは問題ありませんが、そのエラーを完全に削除したいと思います。
linq - Linqを使用してDB接続エラーを検出しますか?
Linq を使用してアプリケーションの「トランスポート レベル エラー」が発生する前に、接続のエラーを検出することは可能ですか?
SQLServer1 という SQL サーバーがあり、LinQ を使用してそのサーバーに接続して情報を取得するアプリケーションを実行しているとします。
サーバー名を SQLServer2 に変更することにしました。次にアプリケーションを実行すると、次のようなエラーが表示されます。
"サーバーから結果を受信中にトランスポート レベルのエラーが発生しました。 (プロバイダー: TCP プロバイダー、エラー: 0 - 指定されたネットワーク名は利用できません。) "
LinQ は変更があったことを知らないからです!
実行時にこれをキャッチするにはどうすればよいですか? DataContext クラスを拡張して、データを取得する前に何らかの方法で接続を確認することは可能ですか?
ありがとう!
c# - C# 接続プーリングの sp_resetconnections が非常に多いのはなぜですか?
MS SQL Server 2005 データベースに対して多くの呼び出しを行う C# でコーディングされた Web サービスがあります。コードは、C# の接続プーリングと組み合わせた Using ブロックを使用します。
SQL トレース中に、"sp_resetconnection" への非常に多くの呼び出しが確認されました。これらのほとんどは 0.5 秒未満の短いものですが、場合によっては 9 秒もの通話が続くことがあります。
私が読んだことから、sp_resetconnectionは接続プールに関連しており、基本的に開いている接続の状態をリセットします。私の質問:
- 開いている接続の状態をリセットする必要があるのはなぜですか?
- なぜこれほど多くの電話がかかってくるのでしょう!
- sp_reset 接続の呼び出しに時間がかかる原因は何ですか。
これは私にとってかなりの謎であり、すべての助けに感謝します!
asp.net - Visual Studio をインストールすると、.Net のガベージ コレクションが変更されますか?
いくつかのリソース リーク (具体的には Oracle 接続) をデバッグしようとしています。
ローカル マシンで Page_Load() を実行すると、v$session を監視することで、データベースで作成された接続を確認できます。
Page_Load から出るとすぐに、すべての接続が閉じられます。
開発サーバー (W3k、IIS6) で実行されている同じコードはリソースを解放しません - データベースによる接続はまだ存在します。
接続プールを有効にして、または有効にせずにこれを試しましたが、同じです-ローカルでは問題ありませんが、サーバーではリークします。
.net フレームワークが両方の場所で同じであり、コードも同じであることを確認しました。私は何が欠けていますか?
asp.net - OracleClient コマンド - コマンドの USING と破棄に関するベスト プラクティス
OracleClient.OracleCommand の MSDN ドキュメントによると:
OracleCommand は Using ブロックにラップされていません。
質問: そうあるべきですか? OracleCommand は、IDisposable を実装する DbCommand を継承しています。
次のことを行うコードを見ていますが、暗黙のカーソルが閉じられないという問題があります。
GetDataSet は次のようになります。
これはリソースをリークしますか?
oracle - Oracle (10g) での XAConnection のパフォーマンス
このプロジェクトでは、Oracle XA 接続プールを使用します。クエリ (トランザクション) の小さなサブセットのみが分散されます。残りは、非常に単純な単一データベースの変更です。
XAConnections と通常のものを使用する際にパフォーマンスの違いがあるかどうかを知りたいです。
サーバーとして websphere v6.1 を使用します。
XAConn のパフォーマンスがあまり高くない場合は、2 つのデータソースを用意し、それらからの接続を適切に使用することを計画しています。
どんなポインタでも大いに役立ちます。