序文最近、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
コンテナにネットワークインターフェースを追加する1 デフォルトのネットワークモードでコンテナを実行す...
目次1. 親コンポーネントが子コンポーネントに値を渡す(props) 2. サブコンポーネントは親コ...
XML/HTML コードコンテンツをクリップボードにコピー<入力 id = "ユーザ...
少し前に、製品バージョンをテスト用にテスターに提出したのですが、テスト結果はまったく予想外のもの...
この記事では、クリック時にサブメニューを表示するためのJavaScriptの具体的なコードを参考まで...
<br />前回の記事では、Webデザインの手順と方法を紹介しました。詳細については、前...
序文ご存知のとおり、「CSS で要素を垂直方向に中央揃えするにはどうすればよいか」という質問は、すで...
この記事では、シンプルなカルーセルを実装するためのJavaScriptの具体的なコードを参考までに紹...
tinyMCE の使用方法の詳細な説明初期化TinyMCE を初期化するときは、ページの HEAD ...
CSS3 の角丸や影の効果を使ったページを作りたいのですが、IE ブラウザでは対応していません。こ...
MySQLの左結合が無効であり、その使用方法今日SQLを書いていたとき、左結合を使用すると左のテーブ...
この記事では、例を使用して、MySQL データベースの最適化のためのテーブルおよびデータベース シャ...
この記事では、例を使用して MySQL インデックスの原理と使用方法を説明します。ご参考までに、詳細...
<br />製品設計プロセス全体において、ビジュアルデザインとインタラクションデザインの...
デフォルトでは、テーブルの境界線は 0 ですが、テーブルの境界線を設定できます。基本的な構文<...