序文最近、JD.comのダブル11ショッピングフェスティバルの準備をしていました。MySQLのタイムアウト設定を構成する際に、設定できる場所がたくさんあることに気付きました。これほど多くのタイムアウト設定はどのような効果をもたらすのでしょうか。また、設定によってどのような影響がもたらされるのでしょうか。本日の記事で分析してみましょう。 1. JDBCタイムアウト設定connectTimeout: MySQL データベースとのソケット接続を確立するまでの待機のタイムアウトを示します。デフォルト値は 0 で、タイムアウトが設定されていないことを意味します。単位はミリ秒です。30000 が推奨されます。 socketTimeout: クライアントと MySQL データベースがソケットを確立した後、ソケットの読み取りと書き込みの待機タイムアウトを示します。Linux システムのデフォルトの socketTimeout は 30 分で、変更せずにそのままにしておくことができます。 2. 接続プールのタイムアウト設定maxWait: データベース接続プールに利用可能な接続がない場合の待機時間を示します。デフォルト値は 0 で、これは無限の待機を意味します。単位はミリ秒です。60000 が推奨されます。 3. MyBatisクエリのタイムアウトdefaultStatementTimeout: MyBatis 構成ファイル内のデフォルトのクエリ タイムアウトを秒単位で示します。設定されていない場合は、待機時間はありません。 一部の SQL ステートメントを defaultStatementTimeout より長く実行する必要がある場合は、Mapper ファイルで別の SQL ステートメントのタイムアウトを設定できます。 4. トランザクションタイムアウトトランザクション タイムアウトは、トランザクション実行のタイムアウトを制御するために使用されます。実行時間は、トランザクション内のすべてのコード実行の合計 (秒単位) です。 要約する上位レベルのタイムアウトは下位レベルのタイムアウトに依存します。下位レベルのタイムアウトが正しい場合にのみ、上位レベルのタイムアウトが正常であることが保証されます。たとえば、ソケット タイムアウトが失敗すると、高レベルのステートメント タイムアウトとトランザクション タイムアウトの両方が無効になります。 1. トランザクションタイムアウト Spring が提供するトランザクション タイムアウト設定は非常にシンプルです。各トランザクションの開始時間と消費時間を記録します。特定のイベントが発生すると、消費時間がチェックされます。タイムアウト値を超えると、例外がスローされます。 トランザクションに 5 つのステートメントが含まれ、各ステートメントの実行時間が 200 ミリ秒、その他のビジネス ロジックの実行時間が 100 ミリ秒であると仮定すると、トランザクション タイムアウトは少なくとも 1,100 ミリ秒 (200 * 5 + 100) に設定する必要があります。 2. ステートメントタイムアウト ステートメント タイムアウトは、ステートメントの実行時間を制限するために使用されます。タイムアウト値は、JDBC java.sql.Statement.setQueryTimeout(int timeout) API を呼び出すことによって設定されます。ただし、現在では開発者がコード内で直接設定することはほとんどなく、フレームワークを通じて設定することがほとんどです。 iBatis では、sql-map-config.xml の defaultStatementTimeout 属性を通じてステートメント タイムアウトのデフォルト値を設定できます。同時に、sqlmap の select、insert、update タグのタイムアウト属性を設定して、異なる SQL ステートメントのタイムアウトを個別に構成することもできます。 3. ソケットタイムアウト データベースが突然停止したり、ネットワーク エラー (デバイス障害などによる) が発生した場合、JDBC ソケット タイムアウトは非常に重要です。 TCP/IP の構造上、ソケットにはネットワーク エラーを検出する方法がないため、アプリケーションはデータベース接続が切断されたことを積極的に検出できません。ソケット タイムアウトが設定されていない場合、アプリケーションはデータベースが結果を返すまで無期限に待機します。この接続はデッド接続と呼ばれます。 接続が切断されるのを防ぐには、ソケットにタイムアウト設定が必要です。ソケット タイムアウトは、JDBC を通じて設定できます。ソケット タイムアウトにより、ネットワーク エラーが発生したときにアプリケーションが無限に待機することがなくなり、サービス障害の時間が短縮されます。 ソケット タイムアウトを使用してステートメントの実行時間を制限することは推奨されません。したがって、ソケット タイムアウト値はステートメント タイムアウト値よりも高くする必要があります。そうしないと、ソケット タイムアウト値が先に有効になり、ステートメント タイムアウト値が意味をなさず、効果もなくなります。 これで、MySQL データベースのタイムアウト設定と構成に関するこの記事は終了です。MySQL データベースのタイムアウト設定と構成に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: CentOS6 アップグレード glibc 操作手順
>>: 自動検索提案機能のスタイルファイルを入力します: suggestion.css
MySQL 5.7.17、現在最新バージョンのようです、ダウンロードアドレスここで、プラットフォーム...
IIS7 では、「URL REWRITE2」疑似静的モジュールがインストールされているかどうかを確...
1. 簡単な紹介Vue.js を使用すると、一般的なテキストの書式設定に使用できる独自のフィルターを...
p>「サービス」で手動で起動すると、 コンソールから起動します: 次に、...\MySQL S...
Linux では、シンボリック リンクを作成または削除する必要がある場合があります。もしそうなら、何...
1. MySQL Yumリポジトリを追加するMySQL公式サイト>ダウンロード>MySQ...
1. インデックスの役割一般的に言えば、インデックスは本の目次に相当します。条件に基づいてクエリを実...
Zabbix は Linux システムのサービス ユニットを監視するためのルールを自動的に検出します...
この間、私は docker を勉強していたのですが、nginx をデプロイするときに行き詰まりました...
目次オブザーバーパターンVue パス値最初のステップは、main.jsにバスを登録することです。 2...
目次1 新しいオペレータの紹介2 新しいものは何をしましたか? 3 新しい演算子の実装をシミュレート...
目次1. 古いバージョンを削除する2. サーバーのカーネルタイプを確認し、適切なバージョンをダウンロ...
CSS の開発履歴についてはここでは紹介しません。ブログを書いている理由の 1 つは、フロントエンド...
MySQLとMariaDBの関係MariaDB データベース管理システムは MySQL のブランチで...
MySQL のフィルタリングのタイミングは、集計関数で使用される where 条件と having ...