MySQL-JDBC ドライバーによって引き起こされるバグの説明
問題の背景
同社は電子商取引システムを開発しており、システム全体がHuawei Cloud上に構築されています。システムを設計する際には、後続のユーザーや注文の数が比較的多いことを考慮して、いくつかの大規模なデータベース コンポーネントを使用する必要があります。リレーショナルデータベースは、その後のデータ量の急速な増加を考慮して、MySQLに直接書き込むのではなく、Huawei Cloudの分散データベースミドルウェアDDMを使用しました。 DDM を使用すると、企業が意識することなく MySQL 読み取りインスタンスの数を直接増やすことができ、読み取りパフォーマンスが直線的に向上します。また、ミドルウェア レベルでサブデータベースとテーブルもサポートし、大規模なリレーショナル データベースの操作を提供します。電子商取引システム用にカスタマイズされているだけです。
DDM自体はクラスターの形でサービスを提供しており、複数の接続IPアドレスが公開されています。負荷分散の層が必要です。ロード バランシングのために LB を追加する従来の方法を使用すると、追加のトランジット層が発生し、パフォーマンスの低下が発生します。したがって、MySQL-JDBC によって提供されるクライアント負荷分散機能が直接使用されます。
論理構造は以下の図に示されています:
▲ビジネスは、MySQL-JDBC のロードバランスを通じて複数の DDM ノードにアクセスできます。 MySQL-JDBC は負荷分散機能を提供します。
問題の説明
MySQL JDBC ドライバーのクライアント負荷分散機能は良好に動作しており、パフォーマンスは驚くべきものです。しかし、少し前に、ビジネス リクエストが理由もなく失敗しました。私は、リアルマネーを伴う電子商取引モジュールを担当しています。この問題には冷や汗がでました...
そこで、すぐにバックグラウンド ログを確認したところ、何も言わずに DDM へのアクセス時に例外があることがわかりました。 、ファーウェイクラウドDDMサービスを提供するという作業命令を直接上げました。
Huawei Cloud のサービスは依然として非常に優れていると言わざるを得ません。30 分以内に専任のスタッフが私に連絡し、問題のトラブルシューティングに協力してくれました。
当社のビジネスのログを取得し、DDM サポート スタッフと分析したところ、エラーが次のように報告されていることがわかりました: 根本原因は MySQL ドライバーのバグであることが判明し、それが StackOverflow ローカル スタックを引き起こしましたオーバーフロー...バグによる殺人事件でした、DDMサービスを誤解していました、本当にごめんなさい
例外がMySQLをトリガーしたことがスタックからわかります-JDBC のバグ。スタックがオーバーフローするまでループ呼び出しが発生します。 Huawei DDM サポートスタッフの提案により、ドライバーコードが逆コンパイルされました。逆コンパイルから、確かにループネストの可能性があることがわかります。
ロードバランス ポーリング接続 -> 新しい接続と古い接続のステータスを同期する -> サーバーに SQL を送信する -> ロードバランス ポーリング接続。
関連するコードは次のとおりです:
これほど明白なバグですが、MySQL がそれを見つけられないとは思えません。現在、ドライバーの 5.1.44 バージョンを使用しています。最新の 5.1.66 コードを確認したところ、この問題は次のように修正されていることがわかりました。 、この問題は回避されます。ネストされたループが発生します。
しかし、5.1.66 では新しいバグが導入されました。postProcess が呼び出されるすべての場所に SQL があるわけではないため、ここのコードは null ポインター例外をスローします。 MySQL JDBCの開発者はテストをしないのですか...
変更計画
loadBalanceAutoCommitStatementThreshold は 5 に変更されますが、問題は、ビジネスに時間のかかる SQL が含まれている場合、DDM の負荷の不均衡を引き起こす可能性があることです。ただし、現在の状況から判断すると、DDM のパフォーマンスはまだ比較的強力です~関連記事:
PHP ドライバー MongoDB 整数問題のバグと戦略
WebLogic での MySql データベース用の JDBC ドライバーの構成
関連動画:以上がMySQL-JDBC ドライバーによって引き起こされるバグの説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









INNODBのフルテキスト検索機能は非常に強力であり、データベースクエリの効率と大量のテキストデータを処理する能力を大幅に改善できます。 1)INNODBは、倒立インデックスを介してフルテキスト検索を実装し、基本的および高度な検索クエリをサポートします。 2)一致を使用してキーワードを使用して、ブールモードとフレーズ検索を検索、サポートします。 3)最適化方法には、単語セグメンテーションテクノロジーの使用、インデックスの定期的な再構築、およびパフォーマンスと精度を改善するためのキャッシュサイズの調整が含まれます。

この記事では、MySQLのAlter Tableステートメントを使用して、列の追加/ドロップ、テーブル/列の名前の変更、列データ型の変更など、テーブルを変更することについて説明します。

完全なテーブルスキャンは、MySQLでインデックスを使用するよりも速い場合があります。特定のケースには以下が含まれます。1)データボリュームは小さい。 2)クエリが大量のデータを返すとき。 3)インデックス列が高度に選択的でない場合。 4)複雑なクエリの場合。クエリプランを分析し、インデックスを最適化し、オーバーインデックスを回避し、テーブルを定期的にメンテナンスすることにより、実際のアプリケーションで最良の選択をすることができます。

はい、MySQLはWindows 7にインストールできます。MicrosoftはWindows 7のサポートを停止しましたが、MySQLは引き続き互換性があります。ただし、インストールプロセス中に次のポイントに注意する必要があります。WindowsのMySQLインストーラーをダウンロードしてください。 MySQL(コミュニティまたはエンタープライズ)の適切なバージョンを選択します。インストールプロセス中に適切なインストールディレクトリと文字セットを選択します。ルートユーザーパスワードを設定し、適切に保ちます。テストのためにデータベースに接続します。 Windows 7の互換性とセキュリティの問題に注意してください。サポートされているオペレーティングシステムにアップグレードすることをお勧めします。

記事では、証明書の生成と検証を含むMySQL用のSSL/TLS暗号化の構成について説明します。主な問題は、セルフ署名証明書のセキュリティへの影響を使用することです。[文字カウント:159]

記事では、MySQLワークベンチやPHPMyAdminなどの人気のあるMySQL GUIツールについて説明し、初心者と上級ユーザーの機能と適合性を比較します。[159文字]

クラスター化されたインデックスと非クラスター化されたインデックスの違いは次のとおりです。1。クラスター化されたインデックスは、インデックス構造にデータを保存します。これは、プライマリキーと範囲でクエリするのに適しています。 2.非クラスター化されたインデックスストアは、インデックスキー値とデータの行へのポインターであり、非プリマリーキー列クエリに適しています。

記事では、MySQLで大規模なデータセットを処理するための戦略について説明します。これには、パーティション化、シャード、インデックス作成、クエリ最適化などがあります。
