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

MySQL Version 9.7.0 LTS

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

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