この記事は、Automated Workload-Aware Data Loading and Unloading for MySQL HeatWaveの翻訳版です。
MySQL HeatWaveは、MySQLに保存されているデータの分析を考えている方々にとって最高のデータベース・サービスです。単一のMySQLデータベースプラットフォームで分析および混合ワークロードへの対応が可能で、複雑かつ時間の掛かるETL作業なしで、リアルタイムのデータに複雑な分析クエリを高速にします。
MySQL HeatWaveインスタンスはMySQLインスタンスと1ノード以上のHeatWaveノードで構成されるクラスターです。HeatWaveはイン・メモリのハイブリッド・カラムナー型クエリ・アクセラレータです。HeatWaveにおけるクエリ高速化は、クエリが参照するデータはHeatWaveクラスターにロードされている必要があります。特定のスキーマ、テーブル、または列を HeatWave にロードするには二つの方法があります。
いずれの場合でも、HeatWaveのメモリ使用量を最小限するには、OLAPのクエリ用にHeatWaveにロードするテーブルまたは列を特定しておく必要があります。全てのテーブルをHeatWaveにロードしても、ワークロードの更新に応じてテーブルやスキーマが追加されてクエリが変わる可能性があります。そのためクエリおよびワークロードを見直し、HeatWaveへロードが必要なテーブルを再調整する必要があります。
MySQL Autopilotに新しい自動化機能、AutoLoadが追加されました。Auto LoadとAuto Unloadは、MySQLで実行されるワークロードを継続的に監視し、クエリを高速化するためにHeatWaveに渡され実行されるクエリを機械学習モデルによって予測します。クエリのリストに基づいて、新しいAutoLoadはテーブルをHeatWaveクラスターに動的にロードおよびアンロードします。ユーザの介入なしに自動で行われるため、HeatWaveにロードされるデータ量は変化し続けるワークロードに対応します。クエリは自動的にHeatWaveに渡されて実行できるようになり、手動による設定やメンテナンス無しに性能が上がります。これはデータベース管理者にとっては作業負荷の軽減となり、MySQL HeatWaveを使用する開発者とデータ・アナリストにとっては、手動による操作を必要としないデータのロードとオフロードの実現となります。
この新しい機能は、既存の手動でのロード作業(AutopilotにおけるAuto Parallel LoadとAuto Unload, MySQLコマンドにおけるALTER TABLE)とも互換性があります。手動でHeatWaveクラスターにロードされたテーブルは、HeaetWaveで実行されるクエリが使用しないテーブルであってもAutoLoadは自動的にそのテーブルを自動でアンロードすることはありません。
図1: (1) MySQLコマンドのALTER TABLEによる手動操作では、ロード・パラメーターまたはプロパティを自分で設定する必要があります。
(2) MySQL AutoPilotのAuto Load Advisorは最適なパラメータでロードを行うための、正確なコマンドを発行します。
(3) MySQL AutoPilotのAutoLoadはシステムの継続的な監視を行い、HeatWaveにテーブルを自動的にロードおよびアンロードし、高いクエリ性能を発揮します。
下にAutoLoadがアプリケーションの性能を自動的に向上させる例をご紹介します。
AutoLoadは、ワークロードに継続的変化があるアプリケーションのクエリ処理性能を向上させることができます。このようなアプリケーションでは新しいテーブルのセットが既存のテーブルを置換し、データまたはクエリ特性が時間とともに変化することがあります。AutoLoadはこういったワークロードの変更を検出し、新しいテーブルのセットをロードしもう関連のないテーブルをアンロードすることで、システムを更新します。そのため、ワークロードに変化がある際にもアプリケーションの高速化とHeaetWaveクラスターの使用率の向上が実現します。
下のグラフは、時間の経過で変化するワークロードの例です。ある月ではBank_Trasactionテーブルと Click_Dataテーブルのテーブル結合があるOLAPクエリが、ワークロードの大部分を占めます。 このアプリケーションは月に数日間の監査の実行実行が必要なので、Bank_Transactionテーブルと Audit_Dataテーブルのテーブル結合があるクエリがワークロードの大半となることもあります。HeatWaveはこういったワークロードの変化を検出し、また対応するテーブルはロードまたはアンロードされることによってクエリの高速化が実現します。テーブルのロードおよびアンロードの際には、HeatWaveクラスターの空きメモリやユーザの選択などを含む、システム全体が考慮されます。
図 2: クエリが各テーブルにアクセスする頻度
データ・アナリストは、Oracle Analytics CloudなどのBIツールを使用して、様々な目的で報告レポートを作成したり、ビジネス・データを分析したりします。こういったデータ・アナリストはテーブルとデータについては詳しいものの、内部で動いているデータベースについては意識していないことがあります。MySQL HeatWaveで新機能AutoLoadを使えば、データベース管理者がクエリ高速化のためにHeatWaveにテーブルをプレロードするのに、データ・アナリストがどんなクエリを流すか、事前に知っておく必要はありません。AutoLoadが自動的にワークロードの特性を学習し、バックグラウンドでテーブルのロードを開始するので、データ・アナリストはすぐにデータ分析を始められます。
HeatWaveクラスターをプロビジョニングすると、AutoLoadはHeatWaveで実行され高速化される可能性のある全クエリの監視を開始します。まず、対象となるクエリと対応する参照テーブルの識別をはじめます。そしてAutoLoadは次に、高度な機械学習モデルを用いてワークロードを考慮してテーブルの重要度を予測しランク付けします。このランキングに基づいて、AutoLoadはテーブルをHeatWaveクラスターにロードします。HeateWaveに必要なメモリを予測し、現在のHeatWaveクラスターのサイズで扱えるテーブルのみをHeatWaveにロードします。また、システムでリソース使用量が低いときにテーブルがHeatWaveにロードされるため、ロードの実行中にアプリケーションの性能は影響を受けません。
ALTER TABLEやAuto Load Advisorなど手動によるロード操作が開始されると、常に手動操作が優先されます。手動でテーブルをHeatWaveにロードしたときに、AutoLoadが他のテーブルをロードしたことによりテーブル保存のためのメモリが不足した場合、まずAutoLoadはこのイベントを検出します。そして、スペースを確保するために最も重要度の低いテーブルを自動的にアンロードします。そうすることによって、システムではユーザによる手動操作を優先します。
HeatWaveによるクエリ高速化には、HeatWaveクラスターにデータがロードされている必要があります。このたび機能強化されたMySQL Autopilot Auto Load と Auto Unload (AutoLoad)によって、MySQLのワークロードへの継続的な監視が可能になり、必要なテーブルをHeatWaveに自動でロードすることでクエリ高速化が実現されます。この機能強化はシステムの設定やメンテナンスなどの作業負荷を軽減し、ユーザの手動によるデータ管理を抑えられます。
Nitin is one of the founding engineers of MySQL HeatWave, and he is currently leading the HeatWave server development team at Oracle. His expertise lies in the realm of cloud-scale data processing systems and the application of machine learning in databases. He has been granted 9 US patents for the HeatWave project. Prior to joining Oracle, Nitin successfully developed and delivered a high-performance file system and storage engine tailored for advanced enterprise-grade SSD based intelligent storage devices.
MySQL HeatWave Product Manager
MySQL Solution Engineer, 日本オラクル