Upgrade to Pro — share decks privately, control downloads, hide ads and more …

MySQL Version 9.7.0 LTS

MySQL Version 9.7.0 LTS

Avatar for InagakiMySQL

InagakiMySQL

May 27, 2026

More Decks by InagakiMySQL

Other Decks in Technology

Transcript

  1. What is going to change? • 商用版のみに搭載されていた一部の機能がコミュニティ版へ • Some previously

    commercial-only features will be included in the Community Edition • 開発者中心のアプローチ • Prioritization of Developer-forward focus • コミュニティの貢献 • Looking to Empower community contributions • コミュニティと共に、そしてコミュニティのために • Building with and for the community • ユーザーと貢献者との連携 • Deepening collaboration with users and contributors https://blogs.oracle.com/mysql/new-era-of-mysql-community-engagement 2 Copyright © 2026, Oracle and/or its affiliates Heather VanCura Vice President, Community Engagement MySQL 9.7
  2. mysql_native_password 削除 SHA-1アルゴリズムからの脱却 • caching_sha2_password がデフォルトの認証プラグインに変更(SHA-256) • mysql_native_passwordのプラグイン化 • mysql_native_password

    は非推奨 • デフォルトではプラグインとしてロードされないように変更 • mysql_native_password を削除 3 Copyright © 2026, Oracle and/or its affiliates MySQL8.0 MySQL8.4 MySQL9.7
  3. • EXPLAINの出力最適化 • OpenID Connectサポート • OpenTelemetry ログのサポート • GIS機能の拡張

    • GroupReplication機能改善 • WebAuthn認証デバイスオプションの追加 • パラメータデフォルト値の改善 • オプティマイザ改善 • JSONデュアリティビューのサポート • JavaScriptストアドプログラム: WebAssemblyライブラリサポート • 性能とログ管理強化 • SHA256認証方式のデフォルト化、SHA-1 認証方式の非推奨化 MySQL Server 9.1以降の主な変更点 Copyright © 2026, Oracle and/or its affiliates 4 9.1 9.2 9.3 9.4 9.5
  4. テレメトリデータのオープン・スタンダード OpenTelemetry • Cloud Native Compute Foundation (CNCF) のプロジェクト •

    オラクルはCNCF Platinumメンバー テレメトリデータの収集と管理 • API, ライブラリ、エージェント、計装 MySQLとOpenTelemetry • メトリクス、トレース、ログを取得する OpenTelemetryライブラリを同梱 OpenTelemetry Copyright © 2026, Oracle and/or its affiliates Correlated Telemetry Data (Traces, Metrics, Logs) Across Services/Stacks Feed into O&M Backends Logs Correlate Traces Metrics Correlate OCI Observability and Management 5
  5. ・OpenTelemetry (OTel) プロジェクトは、オープンソースの可観測性フレームワークであり、 共通の「可観測性」標準を提供します。 利用者は可観測性データ (トレース、メトリック、ログ) をエクスポートするために アプリケーションをインストルメント化できるため、デバッグとテストの粒度が向上します。 OpenTelemetry TRACE

    https://dev.mysql.com/doc/refman/8.1/en/telemetry.html サーバーコンポーネントのインストール クライアントプラグインのインストール ・コマンドライン --telemetry_client ・[mysql] telemetry-client = ON | OFF mysql> install component ‘file://component_telemetry’; Copyright © 2026, Oracle and/or its affiliates 6
  6. 統計情報 • レプリケーション関連の可観測性を 強化するための統計情報の収集 • 複数のコンポーネント • component_replication_applier_metric s: アプライヤー・スレッドの稼働統計

    • component_group_replication_flow_c ontrol_stats: グループ・レプリケーションの フロー制御関連の稼働統計 グループ・レプリケーション • リソース・マネージャー・コンポーネント • セカンダリーの遅延やメモリ利用量を監視 • 遅延が大きい場合やリソース使用過多の 場合はグループから削除 • 状況改善後に自動復旧 • プライマリ選択コンポーネント • フェイルオーバー時に最新のトランザクションを 考慮したプライマリ選定 MySQL 9.7.0 LTS: レプリケーション関連の機能強化 Copyright © 2026, Oracle and/or its affiliates 7
  7. Copyright © 2026, Oracle and/or its affiliates OpenSSL 3.5の同梱 •

    汎用Linuxバイナリ(Linux - Generic)に同梱されるOpenSSLがバージョン・アップ • 9.7.0, 8.4.9, 8.0.46すべて • OpenSSL 3.5は耐量子暗号をサポート → MySQLでのサポートは今後 • これまでのOpenSSL 3.0と比較して性能向上 caching_sha2_password でPBKDF2のストレージ形式をサポート • パスワードの格納形式の柔軟性強化 新しい変数 replica_allow_higher_version_source 追加 • 上のバージョンのソースから、下のバージョンのレプリカへのレプリケーションを実施許可をフラグ制御 新機能 – 運用管理のアップデート 8
  8. MySQL AI インテリジェンスを組み込み 11 Copyright © 2026, Oracle and/or its

    affiliates イン・データベース LLM ファイルシステム 上のファイル 生成AI MySQL Studio 類似検索 AutoML 生成AI : イン・データベースLLMを利用した推論、ベクトル・ストアを使ったRAG AutoML: 機械学習の訓練、推論、説明をシンプルに ベクトルの生成: ファイルサーバー上のドキュメントからベクトル埋め込みを生成 ベクトルの処理: 多言語のドキュメントに対する類似検索 NL2SQL: データに対する自然言語のインターフェース MySQL Studio: 自然言語でのチャット機能、SQLワークシート、 機械学習の開発環境を備えたGUIクライアントt LLMはCPU上で稼働するためGPU不要 オンプレミスでの開発や運用が可能 より高い精度性能やOCI AIサービスの利用はMySQL HeatWave で
  9. MySQLのベクトルデータ型 (VECTOR) 12 Copyright © 2026, Oracle and/or its affiliates

    類似検索のための関数サポート • L1/MANHATAN • L2/EUCLIDIAN • L1^2/MANHATAN_SQUARED • L2^2/EUCLIDIAN_SQUARED • COSINE • DOT • HAMMING mysql> CREATE TABLE wikipedia ( title VARCHAR(1024), page_data TEXT, page_url TEXT, page_embedding VECTOR(1024)); mysql> SELECT page_url, DISTANCE(page_embedding, @query_embedding, “COSINE") as distance FROM wikipedia ORDER by distance DESC LIMIT 10; ベクトル データ型の 定義 MySQL クエリ構文
  10. 一般的な生成AI APIをサポート Copyright © 2026, Oracle and/or its affiliates 13

    • ML_GENERATE • ML_RAG • VECTOR_STORE_LOAD • ML_EMBED_ROW • ML_RAG_TABLE • ML_GENERATE_TABLE • ML_EMBED_TABLE mysql> select sys.ML_GENERATE('QueryInNaturalLanguage', [options]); options: { JSON_OBJECT('key','value'[,'key','value'] ...) 'key','value': { ['task', {'generation'|'summarization'}] ['model_id', {‘llama3.2-3B-instruct-v1}] ['context', 'Context'] ['language', 'Language'] ['temperature', Temperature] ['max_tokens', MaxTokens] ['top_k', K] ['top_p', P] ['repeat_penalty', RepeatPenalty] ['frequency_penalty', FrequencyPenalty] ['presence_penalty', PresencePenalty] ['stop_sequences', JSON_ARRAY('StopSequence1'[,'StopSequence2'] ...)] } }
  11. NL2SQL: 自然言語でデータベースへの問い合わせを実行 Copyright © 2026, Oracle and/or its affiliates 14

    Which products have the lowest cost-per- click? LLM スキーマ取得 自動識別 関連データベース・オブジェクト 製品 名前 カテゴリ CPC ($) ラグジュアリーカーA 車両 2.00 デザイナーシャツB ファッション 7.00 スマートフォンC 電子機器 10.00 SELECT product AS Product Name, category AS Category, SUM(click)/SUM(spend) as CPC ($) FROM campaign_data GROUP BY product, category ORDER BY CPC ($) ASC データベース・ スキーマ・メタデータ 拡張プロンプト SQL構文の検証 (自己反射) SQL問合せ 実行
  12. NL2SQLの使用 CALL sys.NL_SQL("What is the total number of bookings priced

    over $200?", @output, NULL); +---------------------------------------------------------------------------+ | Executing generated SQL statement... | +---------------------------------------------------------------------------+ | SELECT COUNT(`booking_id`) FROM `airportdb`.`booking` WHERE `price` > 200 | +---------------------------------------------------------------------------+ +---------------------+ | COUNT(`booking_id`) | +---------------------+ | 32699080 | +---------------------+ 15 Copyright © 2026, Oracle and/or its affiliates ストアド・プロシージャによる実行
  13. AutoML 16 Copyright © 2026, Oracle and/or its affiliates 幅広いユースケースに対応する機械学習(ML)モデルのトレーニング機能

    予測結果には理解・信頼性のための説明を付与 回帰 時系列予測 異常検知 分類 レコメンド(推奨)システム 広告費用のROI予測 需要予測 クレジットカードの 不正使用検知 悪意のある ゲームハッカーの特定 類似したユーザーの特定 債務不履行の 予想 フライト遅延の予測 降雨予報 おすすめの動画 InnoDB ストレージエンジン
  14. 動作環境について MySQL AIの機能は、Enterprise Editionのプラグインとして利用可能 ◼ サポートOS • Oracle Linux 8

    / Red Hat Enterprise Linux 8 (x86_64) ◼ ハードウェアの最小構成 • CPU:32コア (論理CPU, 仮想CPU) • RAM:128GB • ストレージ:512GB ◼ サポートされるLLM • llama3.2-3b-instruct-v1 17 Copyright © 2026, Oracle and/or its affiliates
  15. • InnoDBのテーブルもしくはLakehouseのテーブルを対象にJSON Duality Viewを作成 • SELECT結果はJSONドキュメントの生成だけでなく、変更トラッキングのETAGも計算 • JSONオブジェクトを使用して、JSON Duality Viewに対してDML操作(INSERT、UPDATE、DELETE)の直接実行が可能

    • データベース内で新しい「ロックレス・オプティミスティック・コンカレント制御」を導入し、ステートレス(REST)操作を介して実 行される読取り/書込み操作の競合の回避 *ETAG(オブジェクトの内容から計算されるハッシュ値)が各オブジェクトの一意の署名として機能します。 これによりデータベースは競合検出を自動で処理し、ユーザーはアプリケーション設計の簡素化を実現しています • JSON Duality Viewのメタデータにアクセスするための新しいInformation_SchemaのViewを用意 MySQL JSON Duality Viewの特徴 Copyright © 2026, Oracle and/or its affiliates 20
  16. MySQL JSON Duality View 機能概要 CREATE TABLE customers ( customer_id

    INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(100) ); CREATE TABLE orders ( order_id INT PRIMARY KEY AUTO_INCREMENT, customer_id INT, product VARCHAR(100), amount DECIMAL(10,2), FOREIGN KEY (customer_id) REFERENCES customers(customer_id) ); 21 Copyright © 2026, Oracle and/or its affiliates CREATE OR REPLACE JSON RELATIONAL DUALITY VIEW customers_orders_dv AS SELECT JSON_DUALITY_OBJECT( WITH(INSERT,UPDATE,DELETE) '_id': customer_id, 'customer_name': name, 'orders': ( SELECT JSON_ARRAYAGG( JSON_DUALITY_OBJECT( WITH(INSERT,UPDATE,DELETE) 'order_id': order_id, 'product': product, 'amount': amount ) ) FROM orders WHERE orders.customer_id = customers.customer_id ) ) FROM customers;
  17. MySQL JSON Duality Viewによる INSERT(登録) mysql> INSERT INTO customers_orders_dv VALUES

    ( '{ "customer_name": "Alice", "_id": 1, "orders": [ {"order_id": 1, "product": "Laptop", "amount": 1299.99}, {"order_id": 2, "product": "Mouse", "amount": 19.99} ] }’); Query OK, 3 rows affected (0.018 sec) Rows affected: 3 Warnings: 0. 22 Copyright © 2026, Oracle and/or its affiliates mysql> SELECT * FROM customers; +-------------+-------+ | customer_id | name | +-------------+-------+ | 1 | Alice | +-------------+-------+ mysql> SELECT * FROM orders; +----------+-------------+---------+---------+ | order_id | customer_id | product | amount | +----------+-------------+---------+---------+ | 1 | 1 | Laptop | 1299.99 | | 2 | 1 | Mouse | 19.99 | +----------+-------------+---------+---------+ 作成されたViewに直接JSONデータを追加可能 正規化されたテーブルには、追加したJSONデータ が展開されて格納
  18. MySQL JSON Duality Viewによる SELECT(参照) mysql> SELECT * FROM customer_orders_dv

    +--------------------------------------------------+ | data | +--------------------------------------------------+ |{ | | "_id": 1, | | "orders": [ | | { | | "amount": 1299.99, | | "product": "Laptop", | | "order_id": 1 | | }, | | { | | "amount": 19.99, | | "product": "Mouse", | | "order_id": 2 | | } | 23 Copyright © 2026, Oracle and/or its affiliates JSON Duality Viewに対してSELECTを実行 :JSONドキュメントと計算されたETAGを取得 | ], | | "_metadata": { | | "etag": "e6d40eabf2e070ffd2719c6755d50f1a" | | }, | | "customer_name": "Alice" | |} | +--------------------------------------------------+ 1 row in set (0.001 sec)
  19. MySQL JSON Duality Viewによる UPDATE(更新) mysql> UPDATE customer_orders_dv SET data

    = '{ "_id": 1, "orders": [ { "amount": 1000, "product": "Laptop", "order_id": 1 }, { "amount": 19.99, "product": "Mouse", "order_id": 2 } ], 24 Copyright © 2026, Oracle and/or its affiliates SELECT文からフェッチされたETAGを含むUPDATEを実行して、 ”orders”テーブルの”amount”列の値を1000に変更 "_metadata": { "etag": "e6d40eabf2e070ffd2719c6755d50f1a" }, "customer_name": "Alice" }' WHERE data->'$._id' = 1;
  20. 26 Copyright © 2026, Oracle and/or its affiliates MySQL Enterprise

    Data Masking Name Description Name Description gen_blocklist() 辞書用語置換を行う mask_inner() マスク内部の弦の部分 gen_dictionary() 辞書からランダムな語を返す mask_outer() 弦の左右部分をマスクする gen_range() 範囲内の乱数を生成する mask_pan() 支払カードプライマリアカウント番号マスキン グ gen_rnd_canada_sin() ランダムなカナダ社会保険番号を生成しま す mask_pan_relaxed() 支払カードプライマリアカウント番号マスキン グ(支払カード会社のマスクが解除) gen_rnd_email() ランダムなメールアドレスを生成する mask_ssn() マスク米国社会保障番 gen_rnd_iban() ランダムな国際銀行口座番号を生成する mask_uk_nin() マスク イギリス国民保険番号 gen_rnd_pan() ランダムな支払いカードを生成する mask_uuid() UUID(Universal Unique Identifier)をマ スク gen_rnd_ssn() 主要口座番号 ランダムな米国社会保障 番号を生成する masking_dictionaries_flush() masking_dictionaries再読み込み gen_rnd_uk_nin() ランダムなイギリス国民保険番号を生成 する masking_dictionary_remove() データベーステーブルから辞書を削除する gen_rnd_us_phone() ランダムな米国電話番号を生成する masking_dictionary_term_add() 辞書に新しい用語を追加する gen_rnd_uuid() ランダムな普遍的一意識別子を生成する masking_dictionary_term_remov e() 既存の用語を辞書から削除する mask_canada_sin() マスクカナダ社会保険番号 mask_iban() マスク・インターナショナル銀行口座番号
  21. MySQL Enterprise Data Masking 27 Copyright © 2026, Oracle and/or

    its affiliates Dynamic Data Masking (DDM) 以下の一部の文は、ユーザー/ロール管理およびマス キングポリシー管理に必要な権限を前提とします。 ユーザーアカウントやロールに応じて、 元の値またはマスクされた値を返す機能 元データは変更されず、アプリケーションの修正不要 MySQL Enterprise Editionと MySQL HeatWaveで利用可能 CURRENT_USER_IN('...') ユーザーベースで判定する場合 CURRENT_ROLE_IN('...') ロールベースで判定する場合 https://blogs.oracle.com/mysql-jp/introducing-dynamic-data-masking-in-mysql- protect-sensitive-data-without-app-changes # マスキング関数コンポーネントのインストール $> mysql -u root -p -D mysql < [path/]masking_functions_install.sql # ポリシー・コンポーネントのインストール $> mysql -u root -p -D mysql < [path/]install_component_object_policy.sql
  22. MySQL Enterprise Data Masking Demo Create Table: CREATE TABLE `customers`

    ( `customer_id` bigint NOT NULL AUTO_INCREMENT, `customer_name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL, `email` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `phone_number` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `postal_code` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `address` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`customer_id`), UNIQUE KEY `email` (`email`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci 28 Copyright © 2026, Oracle and/or its affiliates
  23. MySQL Enterprise Data Masking Masking対象外ユーザを作成 29 Copyright © 2026, Oracle

    and/or its affiliates CREATE USER IF NOT EXISTS 'support'@'%' IDENTIFIED BY 'Welcome_123!'; GRANT SELECT ON *.* TO 'support'@'%'; マスキングポリシーの作成 CREATE MASKING POLICY mask_email_policy(mail_col) CASE WHEN CURRENT_USER_IN(‘support') THEN mail_col ELSE mask_outer(mail_col,10,0,'*') END; CREATE MASKING POLICY mask_phone_policy(phone_number) CASE WHEN CURRENT_USER_IN('support') THEN phone_number ELSE mask_inner(phone_number,3,0,'*') END; ポリシーをカラムに適用 ALTER TABLE ecommerce_db.customers ALTER COLUMN email SET MASKING POLICY mask_email_policy; ALTER TABLE ecommerce_db.customers ALTER COLUMN phone_number SET MASKING POLICY mask_phone_policy;
  24. OCIのAlways Free Servicesにて 無料でMySQL HeatWaveを利用可能 30 https://www.oracle.com/jp/heatwave/free/ MySQL HeatWaveも期間の制限なく無料で使用可能 インスタンス数や容量、一部機能の制限あり

    NEW! MySQL HeatWave GenAIも利用可能 ベクトル・ストアやMySQL HeatWaveに 内蔵されたLLMを活用 Copyright © 2026, Oracle and/or its affiliates