この記事は、EverDB R&D チームが執筆した WeChat パブリック アカウント「独創的な操作と素晴らしい効果」から転載したものです。この記事を転載する場合は、Jingxinduyun Weimiaoweixiaoの公式アカウントにご連絡ください。 データベース システム設計において、実行プランは、SQL 実行に必要なすべての演算子とその実行順序を含む、SQL 実行プロセスの正式な記述です。 「EXPLAIN + SQL」コマンドを使用すると、実行プランを詳細に表示し、パフォーマンスのボトルネックを見つけ、SQL を最適化するための方向性と基礎を提供できます。この記事では、EverDB 分散データベースの観点から実行プランについて説明します。 (I)分散アーキテクチャ実行計画集中型データベースと比較して、分散型データベースには多数のシャードノードがあり、各シャードが独自のシャードのデータ計算と保存を担当するため、その実行計画には特別な実装方法が必要です。ミドルウェアアーキテクチャによる分散データベースでは、分散オペレータ(以下、EverDB 実行プランノード)を導入することでデータシャードストレージ機能を実現し、実行プランの分析と最適化を最適化し、データシャード内の独立した計算を送信し、データシャード間の同時実行を調整します。実行結果は、グループ化、並べ替え、その他の操作のためにミドルウェアによってさらに統合されます。これは効率的で便利な実装方法です。 EverDB はこの設計コンセプトに基づいて実行計画を実装します。従来の集中型データベースと比較して、EverDB 実行プランによりデータベースのスケーラビリティが向上し、より大きなデータ スケールとより多くの同時データ アクセスがサポートされます。同じ負荷圧力を処理するという前提の下で、各シャードのストレージとコンピューティング リソース、および並列コンピューティングの利点を最大限に活用して、より優れたパフォーマンスを実現できます。 (II) EverDB実行計画EverDB 分散データベースは、グリッド スケジューリング レイヤー、データ ノード、構成ノード、および管理コンソールで構成されます。分散データベースのスケジューリング ノードとして、グリッド スケジューリング レイヤーは SQL を受け取って解析し、SQL ステートメントを再構築して変換し、シャード テーブルと非シャード テーブルを含む 2 種類の実行プラン分析をサポートします。 図1 EverDB の実行プランには、グリッド スケジューリング レイヤーとバックエンド データ ノードでの SQL 実行プロセスが含まれます。グリッド スケジューリング ノードの実行計画には、主にロジック処理層と接続ドライバー層の 2 つの部分が含まれます。ロジック処理層には、語彙および文法解析モジュール、クライアント通信モジュール、共通テーブル/シャード テーブル構成、SQL 再構築および変換、実行プラン ツリー、およびプラン ツリー ノードが含まれます。共通テーブル/シャードテーブル構成は、SQL にシャーディングが必要かどうかを識別し、シャードテーブルのストレージ アドレス情報を取得し、シャーディング戦略に基づいて実行プランの構築を完了するために使用されます。接続ドライバ層は、内部接続プールと通信プロトコルの処理モジュールです。これは MySQL 通信プロトコルを完全にサポートし、実行プラン内のデータ ノードにリクエストをプッシュダウンする役割を担います。データ ノード実行プランの実装は、MySQL 実行プランを参照できます。 図2 シャード クエリを例にとると、EverDB のグリッド スケジューリング ノードの実行プラン プロセスは次のようになります。
図3 スケジューリング ノードは実行プラン ツリーを生成するときに、シャーディング ルールに従ってステートメントを並列実行用に変換し、再構築された SQL ステートメントを対応する実行プラン リーフ ノードからターゲット インスタンスにプッシュし、データ ノード インスタンスはシャードのクエリ実行プラン分析を完了します。 図 4 は、実行プラン リーフ ノードがクエリ要求をデータ ノードにプッシュする通信プロセスを示しています。 COM_QUERY は、クエリ ステートメントをカプセル化し、実行プランのリーフ ノードによってクエリ計算のために対応するデータ ノードに送信されるプロトコル パケットです。実行プランのリーフ ノードは、MySQL プロトコル プロセスを使用して結果セットを受信し、解析します。図の結果セットによって返されるプロトコル パッケージと順序は次のとおりです。
実行プランのリーフ ノードは、シャードのクエリ結果を受け取った後、各シャードの結果を親の非リーフ ノードに渡して、すべてのシャード結果のさらなる処理 (マージ、並べ替えなど) を行い、完全なクエリ データ結果をクライアントに返します。 図4 (III) 実行計画を表示するにはどうすればいいですか?実行プランを表示するには、クエリの SELECT キーワードの前に DBSCALE EXPLAIN を追加するだけです。具体的な構文は次のとおりです。 DBSCALE EXPLAIN + SELECT クエリ ステートメント。 結果には、実行プランの各ステップの実行情報が含まれ、実行ノード、実行順序、実行 SQL コンテンツが表示されます。 SQL パフォーマンスは実行プランからも確認できます。 SQL ステートメントとテーブル構造のパフォーマンスのボトルネックを分析するために使用されます。 図5 上図 (図 5) に示すように、実行プランによって返される結果は、上部と下部の 2 つの結果セットに分かれています。最初の部分は、中間層グリッドからデータ ノードへのクエリ要求の完全な実行プランを示しています。結果セットの最初の 2 つの列は、中間層グリッドの SQL 実行プランです。つまり、exec_node フィールドには SQL 実行プラン ツリーが表示され、data_source には各シャード実行ノードに関係するシャード データ ソースが表示されます。結果セットの他のフィールドには、それぞれのデータ ノード上の各シャード クエリの実行プランが表示されます。これは、MySQLexplain によって返される結果と同じです。 2 番目の部分は、実行プランによって各実行ノードで実際に実行された再構築された SQL 文を示しているため、クライアントから受信した SQL 文とは異なる場合があります。
select_type: データをクエリするための操作タイプ。次の表に示します。
table: 実行ノードによって処理されるテーブルの名前。 タイプ: データ ノードがテーブル内の必要な行を見つける方法。「アクセス タイプ」とも呼ばれ、次の意味を持ちます。|すべて |インデックス |範囲 |参照 |等価参照 |定数、システム |ヌル |左から右へ、最悪から最高へ。一般的なタイプを次の表に示します。
2 番目の部分には、node_id と sql の 2 つのフィールドが含まれます。 node_id は、最初の部分の exec_node フィールドの括弧内のシリアル番号に関連付けられており、exec_node の各レベルで実行される特定の SQL ステートメントを示します。特定の SQL ステートメントの内容は、「sql」フィールドに表示されます。 一時テーブル dbscale_tmp が "sql" フィールドに表示される場合 (dbscale_tmp は EverDB の予約語です)、現在の SELECT クエリにクロスシャード クエリが含まれており、システム パフォーマンスの低下が大きいことを意味します。 SQL ステートメントとテーブル構造のパフォーマンスのボトルネックをさらに分析し、一時テーブルの使用を可能な限り避ける必要があります。以下は例です。 図6 結論ミドルウェアに基づくシャーディング ソリューションを実装する典型的な分散データベース製品である EverDB の実行プランは、基盤となるシャーディング テーブルでの SQL の実行手順と、プロキシが SQL を分散方式で処理する方法の両方を含むという点で、従来の集中型データベースとは異なり、分散データベースの処理パフォーマンスが向上します。これは、ミドルウェアに基づいて実行プランを実装する EverDB 独自の方法です。 EverDB 実行プランには、基盤となるデータ ノードや中間層、あるいは SQL 最適化アルゴリズムの観点から、最適化および改善が必要な領域がまだ数多くあります。 EverDBは今後も機能向上を続け、より優れた国産分散データベース製品を目指してまいります。 |
<<: MongoDBの株価は320億ドルを超え、最も価値のあるオープンソースソフトウェア企業となった。
>>: 大手医療機関の CISO がクラウド変革を通じてサイバーセキュリティを強化した方法
月収10万元の起業の夢を実現するミニプログラム起業支援プランインサイトSEOは、現在非常に人気の高い...
Hostcat は virmach.com の所有者に virmach VPS の特別割引コードをい...
コンタボはどうですか? contabo UKはどうですか?コンタボの英国データセンターのクラウドサー...
2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています最近、ウェ...
ウェブサイトを構築したことがある友人は、ウェブサイトの外部リンクを構築するのは長くて骨の折れる作業で...
昨年11月に卒業後、ウェブサイト構築会社にインターンとして入社しました。当初はウェブサイトの最適化に...
eleven2 は、2003 年から運営されている有名な仮想ホスティング会社です。24 時間体制のサ...
検索エンジン最適化業界の専門家である Benniao 氏は、成功したいのであれば、まず検索エンジンに...
インターネットの普及に伴い、大手企業ではインターネットマーケティングの重要性がますます重視されるよう...
いわゆる SEO の専門家の中には、ただの誇大宣伝で、いわゆる SEO の達人の中には、ただの自称だ...
あらゆるインターネットアプリケーションの中でも、ビリビリはコンテンツを通じてZ世代の心をしっかりと掴...
Linode.com は、今年で 13 周年を迎えたと発表しました。これまでとは異なり、同社はお金を...
Shardhost は、2011 年 6 月に英国で登録された小規模な VPS プロバイダーです (...
導入有名な雑誌「エコノミスト」はかつて「コンテナがなければ、グローバリゼーションはあり得ない」と評し...
SEO に触れたことのある人なら誰でも、外部リンクの形式は 1. アンカー テキスト形式、2. ハイ...