banner
ホームページ / ブログ / 機械学習を使用してデータベースのワークロードを特徴付ける
ブログ

機械学習を使用してデータベースのワークロードを特徴付ける

Jun 27, 2023Jun 27, 2023

データベースは何十年にもわたって私たちのデータ管理に役立ってきました。 私たちが日常的に扱っている多くのテクノロジーと同様に、私たちはそれらを当然のことと考え始め、それらの使用法、特にそのコストを検討する機会を逃すかもしれません。

たとえば、Intel は、膨大な量の製造データの多くを超並列処理 (MPP) リレーショナル データベース管理システム (RDBMS) に保存しています。 データ管理コストを抑えるために、インテル IT 部門は、現在の MPP RDBMS を代替ソリューションと比較して評価することにしました。 それを行う前に、データベースのワークロードをより深く理解し、それらのワークロードを適切に表すベンチマークを定義する必要がありました。 私たちは、何千人もの製造エンジニアがデータをクエリしていることを知っており、どれだけのデータがシステムに取り込まれているかを知っていました。 ただし、さらに詳しい情報が必要でした。

「データベースのワークロード全体を構成するジョブの種類は何ですか?」

「クエリはどのようなものですか?」

「クエリの種類ごとに同時ユーザーは何人いますか?」

必要な情報の種類をわかりやすく説明するために、例を示します。

あなたが地元で美容室を開くことに決めたと想像してください。 あなたは、今日のサービス需要を満たすだけでなく、ビジネスの成長にも対応できる施設を構築したいと考えています。 ピーク時に店内に何人の人がいるかを見積もって、設置するステーションの数を把握する必要があります。 どのようなサービスを提供するかを決める必要があります。 何人にサービスを提供できるかは、次の 3 つの要素によって決まります。1) 美容師の作業スピード。 2) 何人の美容師が働いていますか。 3) 顧客が望むサービス (トリミングだけ、またはマニキュア、ヘアカラー、マッサージなど)。 この場合の「作業負荷」は、顧客が何を望んでいるのか、そして顧客が何人いるのかによって決まります。 しかし、それも時間の経過とともに変化します。 おそらく、多くの顧客がトリミングだけを希望する時間帯があるかもしれません。 他の時期(たとえば、バレンタインデーの前)には、トリミングとヘアカラーの両方が需要がありますが、他の時期には、マッサージがほぼ唯一の需要である可能性があります(たとえば、バレンタインデーに受け取ったばかりのマッサージギフトカードをすべて使用している人々など) 。 カレンダーのイベントとは無関係に、一見ランダムに見えることもあります。 ピーク時に顧客が増えても、十分な数のステーションや資格のある美容師がいない場合、人々は待たなければならず、混雑しすぎていると判断して立ち去る人もいるかもしれません。

それでは、データベースに戻りましょう。 MPP RDBMS の場合、「サービス」とは、データベースとエンジニア (消費) およびデータを送信するシステム (取り込み) の間のさまざまな種類の対話です。 取り込みは、標準の抽出、変換、読み込み (ETL)、クリティカル パス ETL、バルク ロード、および DB 内での挿入/更新/削除リクエスト (大規模および小規模の両方) で構成されます。 消費はレポートとクエリで構成され、一部はバッチ ジョブとして実行され、一部はアドホックに実行されます。

ワークロードの特性評価の初めに、実行されているデータベース「サービス」の種類を特定したいと考えました。 美容室の例におけるトリム サービスとフル サービスのように、SQL リクエストは非常に単純な場合もあれば、非常に複雑な場合もあり、あるいはその中間の場合もあることを私たちは知っていました。 私たちが知らなかったのは、重要なものを見逃すことなく、これらの多種多様なリクエストをより管理しやすいものに一般化する方法でした。 私たちは自分たちの直感を信じるのではなく、それについて系統的に取り組みたいと考えました。 私たちは SQL リクエストを完全に理解するために新しいアプローチを採用しました。K 平均法クラスタリングや分類回帰ツリー (CART) などの機械学習 (ML) 技術を適用することにしました。

美容室の例では、K 平均法クラスタリングと CART を使用して顧客を分析し、「ヘア サービスのみ」、「ヘアとネイル サービス」、「ネイル サービスのみ」などの類似点を持つグループを特定します。

私たちのデータベースでは、K 平均法クラスタリングと CART の取り組みにより、ETL リクエストが 7 つのクラスター (CPU 時間、最高スレッド I/O、および実行時間によって予測) で構成され、SQL リクエストが (CPU 時間に基づいて) 6 つのクラスターにグループ化できることが明らかになりました。 )。