Submit Search
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
Download as PPTX, PDF
2 likes
742 views
R
Ryusuke Kajiyama
2017年12月02日(土)に開催された第22回 中国地方DB勉強会 in 出雲の「Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能」で使用したスライドです。
Technology
Read more
1 of 81
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
More Related Content
PDF
これからLDAPを始めるなら 「389-ds」を使ってみよう
Nobuyuki Sasaki
PDF
書くべきは手順書ではなくスクリプトです。定型業務をスクリプトで自動化して楽をしよう
Nobuyuki Sasaki
PDF
CentOS 8で標準搭載! 「389-ds」で構築する 認証サーバーについて
Nobuyuki Sasaki
PDF
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...
Insight Technology, Inc.
PDF
Oracle Data Guard による高可用性
Yahoo!デベロッパーネットワーク
PDF
[db tech showcase Tokyo 2015] C27:楽天MySQL Backup Structure by 楽天株式会社 粟田啓介
Insight Technology, Inc.
PDF
[db tech showcase Tokyo 2017] D15: ビッグデータ x 機械学習の高速分析をVerticaで実現!by ヒューレット・パッ...
Insight Technology, Inc.
PDF
Mobageの技術を体験(MyDNS編)
Daisuke Ikeda
これからLDAPを始めるなら 「389-ds」を使ってみよう
Nobuyuki Sasaki
書くべきは手順書ではなくスクリプトです。定型業務をスクリプトで自動化して楽をしよう
Nobuyuki Sasaki
CentOS 8で標準搭載! 「389-ds」で構築する 認証サーバーについて
Nobuyuki Sasaki
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...
Insight Technology, Inc.
Oracle Data Guard による高可用性
Yahoo!デベロッパーネットワーク
[db tech showcase Tokyo 2015] C27:楽天MySQL Backup Structure by 楽天株式会社 粟田啓介
Insight Technology, Inc.
[db tech showcase Tokyo 2017] D15: ビッグデータ x 機械学習の高速分析をVerticaで実現!by ヒューレット・パッ...
Insight Technology, Inc.
Mobageの技術を体験(MyDNS編)
Daisuke Ikeda
What's hot
(19)
PDF
OpenStack を 拡張する NetApp Unified Driver の使い方 Vol.001
Takeshi Kuramochi
PDF
Data Scientists Love SQL Server
Tomoyuki Oota
PPTX
MySQL Clusterを運用して10ヶ月間
hiroi10
PDF
PowerDNSのご紹介
Akira Matsuda
PDF
[dbts-2014-tokyo] 目指せExadata!! Oracle DB高速化を目指した構成
Yahoo!デベロッパーネットワーク
PDF
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
NTT DATA Technology & Innovation
PDF
MySQL 5.7 InnoDB 日本語全文検索(その2)
yoyamasaki
ODP
PostgreSQL 9.2 新機能 - OSC 2012 Kansai@Kyoto
Shigeru Hanada
PDF
DNSキャッシュサーバ チューニングの勘所
hdais
PDF
Managed Instance チートシート
Masayuki Ozawa
PDF
gumiStudy#1 キーバリューストアのご紹介と利用時の設計モデルについて
gumilab
PDF
PostgreSQLの運用・監視にまつわるエトセトラ
NTT DATA OSS Professional Services
PDF
MySQLバックアップの基本
yoyamasaki
PDF
単なるキャッシュじゃないよ!?infinispanの紹介
AdvancedTechNight
PDF
[A23] Oracle移行を簡単に。レプリケーションテクノロジーを使いこなす by Keishi Miyachi
Insight Technology, Inc.
PPTX
ここからはじめる SQL Server の状態取得
Masayuki Ozawa
PDF
[db tech showcase Tokyo 2015] C15:DevOps MySQL in カカクコム~ OSSによる可用性担保とリアルタイムパフ...
Insight Technology, Inc.
PPTX
MySQL clients
yoku0825
PDF
Sql database その裏側に迫る
Masayuki Ozawa
OpenStack を 拡張する NetApp Unified Driver の使い方 Vol.001
Takeshi Kuramochi
Data Scientists Love SQL Server
Tomoyuki Oota
MySQL Clusterを運用して10ヶ月間
hiroi10
PowerDNSのご紹介
Akira Matsuda
[dbts-2014-tokyo] 目指せExadata!! Oracle DB高速化を目指した構成
Yahoo!デベロッパーネットワーク
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
NTT DATA Technology & Innovation
MySQL 5.7 InnoDB 日本語全文検索(その2)
yoyamasaki
PostgreSQL 9.2 新機能 - OSC 2012 Kansai@Kyoto
Shigeru Hanada
DNSキャッシュサーバ チューニングの勘所
hdais
Managed Instance チートシート
Masayuki Ozawa
gumiStudy#1 キーバリューストアのご紹介と利用時の設計モデルについて
gumilab
PostgreSQLの運用・監視にまつわるエトセトラ
NTT DATA OSS Professional Services
MySQLバックアップの基本
yoyamasaki
単なるキャッシュじゃないよ!?infinispanの紹介
AdvancedTechNight
[A23] Oracle移行を簡単に。レプリケーションテクノロジーを使いこなす by Keishi Miyachi
Insight Technology, Inc.
ここからはじめる SQL Server の状態取得
Masayuki Ozawa
[db tech showcase Tokyo 2015] C15:DevOps MySQL in カカクコム~ OSSによる可用性担保とリアルタイムパフ...
Insight Technology, Inc.
MySQL clients
yoku0825
Sql database その裏側に迫る
Masayuki Ozawa
Ad
Similar to [中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
(20)
PPTX
[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0
Ryusuke Kajiyama
PDF
20190530 osc hokkaido_public
DAISUKE INAGAKI
PDF
20170622_MySQL最新情報 ~MySQL 8.0 開発状況、MySQL InnoDB Cluster、などのご紹介~ by 日本オラクル株式会社...
Insight Technology, Inc.
PDF
MySQL InnoDB Clusterによる高可用性構成(DB Tech Showcase 2017)
Shinya Sugiyama
PDF
Oracle Cloud MySQL Service
Shinya Sugiyama
PDF
20150920 中国地方db勉強会
yoyamasaki
PDF
MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20
Ryusuke Kajiyama
PDF
MySQL 開発最新動向
yoyamasaki
PDF
20150131 ChugokuDB-Shimane-MySQL
Ryusuke Kajiyama
PDF
オラクル・データベース・クラウド~さらなる進化のご紹介(Oracle Cloud Days Tokyo 2015)
オラクルエンジニア通信
PDF
20201023_MySQL開発最新動向
Machiko Ikoma
PDF
第九回中国地方DB勉強会 in 米子 MySQL 5.7+
Ryusuke Kajiyama
PDF
Windows環境でのMySQL
yoyamasaki
PPTX
MySQL Technology Cafe #14 MySQL Shellを使ってもっと楽をしようの会
オラクルエンジニア通信
PDF
MySQL最新情報 ※2016年12月
yoyamasaki
PDF
A13 MySQL & NoSQL~Best of both world~ by Philip Antoniades & Ryusuke Kajiyama
Insight Technology, Inc.
PPTX
Web App for Containers + MySQLでコンテナ対応したRailsアプリを作ろう!
Yoichi Kawasaki
PDF
20210305_MySQLベースのクエリ・アクセラレーターHeatWaveのご紹介
Machiko Ikoma
PDF
自律型データベース Oracle Autonomous Database 最新情報
オラクルエンジニア通信
PPTX
LINEのMySQL運用について 修正版
LINE Corporation
[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0
Ryusuke Kajiyama
20190530 osc hokkaido_public
DAISUKE INAGAKI
20170622_MySQL最新情報 ~MySQL 8.0 開発状況、MySQL InnoDB Cluster、などのご紹介~ by 日本オラクル株式会社...
Insight Technology, Inc.
MySQL InnoDB Clusterによる高可用性構成(DB Tech Showcase 2017)
Shinya Sugiyama
Oracle Cloud MySQL Service
Shinya Sugiyama
20150920 中国地方db勉強会
yoyamasaki
MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20
Ryusuke Kajiyama
MySQL 開発最新動向
yoyamasaki
20150131 ChugokuDB-Shimane-MySQL
Ryusuke Kajiyama
オラクル・データベース・クラウド~さらなる進化のご紹介(Oracle Cloud Days Tokyo 2015)
オラクルエンジニア通信
20201023_MySQL開発最新動向
Machiko Ikoma
第九回中国地方DB勉強会 in 米子 MySQL 5.7+
Ryusuke Kajiyama
Windows環境でのMySQL
yoyamasaki
MySQL Technology Cafe #14 MySQL Shellを使ってもっと楽をしようの会
オラクルエンジニア通信
MySQL最新情報 ※2016年12月
yoyamasaki
A13 MySQL & NoSQL~Best of both world~ by Philip Antoniades & Ryusuke Kajiyama
Insight Technology, Inc.
Web App for Containers + MySQLでコンテナ対応したRailsアプリを作ろう!
Yoichi Kawasaki
20210305_MySQLベースのクエリ・アクセラレーターHeatWaveのご紹介
Machiko Ikoma
自律型データベース Oracle Autonomous Database 最新情報
オラクルエンジニア通信
LINEのMySQL運用について 修正版
LINE Corporation
Ad
More from Ryusuke Kajiyama
(20)
PDF
[OSC 2020 Online/Nagoya] MySQLドキュメントストア
Ryusuke Kajiyama
PDF
[OSC 2020 Osaka] MySQL"超"入門
Ryusuke Kajiyama
PPTX
[db tech showcase 2017 Tokyo] D31 - MySQL 8.0の日本語キャラクタ・セットと文字照合
Ryusuke Kajiyama
PPTX
[db tech showcase 2017 Tokyo] A23 - MySQLのセキュリティ関連機能の現状
Ryusuke Kajiyama
PDF
2017年5月26日 オープンソースデータベース比較セミナー「NoSQLとしても使えるMySQLとMySQL Cluster」
Ryusuke Kajiyama
PPT
第20回 中国地方DB勉強会 in 岡山 MySQLレプリケーション
Ryusuke Kajiyama
PDF
[Java Küche RDB 最前線 2015] MySQL 5.7技術アップデート
Ryusuke Kajiyama
PDF
[db tech showcase 2015 Sapporo HOKKAIDO] MySQL as document database!?
Ryusuke Kajiyama
PDF
[db tech showcase 2015 Sapporo HOKKAIDO] MySQL 5.7
Ryusuke Kajiyama
PDF
TWJUG August, What's new in MySQL 5.7 RC
Ryusuke Kajiyama
PDF
TWJUG August, MySQL JDBC Driver "Connector/J"
Ryusuke Kajiyama
PDF
MySQLのNoSQL機能 - MySQL JSON & HTTP Plugin for MySQL
Ryusuke Kajiyama
PDF
MySQL Cluster as Transactional NoSQL (KVS)
Ryusuke Kajiyama
PPTX
[Preview] MySQL session at Open Source Conference 2014 .Enterprise Osaka
Ryusuke Kajiyama
PPTX
20140722 Taiwan MySQL User Group Meeting Tech Updates
Ryusuke Kajiyama
PPT
MySQL Performance Tuning at COSCUP 2014
Ryusuke Kajiyama
PPT
State of the Dolphin, at db tech showcase Osaka 2014
Ryusuke Kajiyama
PPTX
20140518 JJUG MySQL Clsuter as NoSQL
Ryusuke Kajiyama
PDF
2012.10.20 OSC 2012 Hiroshima
Ryusuke Kajiyama
PDF
MySQL de NoSQL Fukuoka
Ryusuke Kajiyama
[OSC 2020 Online/Nagoya] MySQLドキュメントストア
Ryusuke Kajiyama
[OSC 2020 Osaka] MySQL"超"入門
Ryusuke Kajiyama
[db tech showcase 2017 Tokyo] D31 - MySQL 8.0の日本語キャラクタ・セットと文字照合
Ryusuke Kajiyama
[db tech showcase 2017 Tokyo] A23 - MySQLのセキュリティ関連機能の現状
Ryusuke Kajiyama
2017年5月26日 オープンソースデータベース比較セミナー「NoSQLとしても使えるMySQLとMySQL Cluster」
Ryusuke Kajiyama
第20回 中国地方DB勉強会 in 岡山 MySQLレプリケーション
Ryusuke Kajiyama
[Java Küche RDB 最前線 2015] MySQL 5.7技術アップデート
Ryusuke Kajiyama
[db tech showcase 2015 Sapporo HOKKAIDO] MySQL as document database!?
Ryusuke Kajiyama
[db tech showcase 2015 Sapporo HOKKAIDO] MySQL 5.7
Ryusuke Kajiyama
TWJUG August, What's new in MySQL 5.7 RC
Ryusuke Kajiyama
TWJUG August, MySQL JDBC Driver "Connector/J"
Ryusuke Kajiyama
MySQLのNoSQL機能 - MySQL JSON & HTTP Plugin for MySQL
Ryusuke Kajiyama
MySQL Cluster as Transactional NoSQL (KVS)
Ryusuke Kajiyama
[Preview] MySQL session at Open Source Conference 2014 .Enterprise Osaka
Ryusuke Kajiyama
20140722 Taiwan MySQL User Group Meeting Tech Updates
Ryusuke Kajiyama
MySQL Performance Tuning at COSCUP 2014
Ryusuke Kajiyama
State of the Dolphin, at db tech showcase Osaka 2014
Ryusuke Kajiyama
20140518 JJUG MySQL Clsuter as NoSQL
Ryusuke Kajiyama
2012.10.20 OSC 2012 Hiroshima
Ryusuke Kajiyama
MySQL de NoSQL Fukuoka
Ryusuke Kajiyama
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
1.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | State of the Dolphin Ryusuke Kajiyama / 梶山隆輔 MySQL Global Business Unit MySQL Sales Consulting Senior Manager, Asia Pacific & Japan Highlights of MySQL 8.0 technology updates
2.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | Safe Harbor Statement The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle.
3.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | The world's most popular open source database 世界で最も普及しているオープンソース データベース
4.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | MySQLの特徴 ストレージエンジン レプリケーション & クラスタリング デュアルライセンス Confidential – Oracle Internal 5 SQL & NoSQL 軽量 & 高速 Web & モバイル &クラウド
5.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | 70% By 2018, more than 70% of new in-house applications will be developed on an Open Source RDBMS Source: Gartner, State of Relational Open Source RDBMSs 2015
6.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | 9 4.0 全文検索/GIS (MyISAM) 複数テーブルUPDATE/DELETE 組み込みライブラリ型サーバ OracleMySQL Sun 3.23 MyISAM InnoDB レプリケーション 5.1 プラグガブル・ ストレージエンジン・ アーキテクチャ パーティショニング タスクスケジューラ 5.6 memcached API UNDO表領域 Global Transaction ID マルチスレッドスレーブ オンラインALTER TABLE トランスポータブル表領 域 5.5 InnoDBがデフォルトに 準同期型レプリケーショ ン PERFORMANCE_SCHEMA 1.0-3.22以前 ストレージエンジン (ISAM, HEAP) マルチスレッド Windows対応/64bit対応 日本語文字コード (SJIS/UJIS) 5.0 ストアドプロシージャ ストアドファンクション カーソル/トリガ/ビュー XAトランザクション INFORMATION_SCHEMA 4.1 Unicode対応 サブクエリ CSV, ARCHIVE ndbcluster 1995 2000 2005 2010 2015 5.7 新コストモデル オプティマイザ ロスレス レプリケーション マルチソース レプリケーション グループ レプリケーション 全文検索CJK対応 GIS Boost.Geometry対応 セキュリティ強化 JSONサポート 透過的データ暗号化 SYSスキーマ 8.0 データディクショナリ UNDO表領域 ロール 共通テーブル式(CTE) Window関数 ヒストグラム 2020
7.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. |Copyright © 2017, Oracle and/or its affiliates. All rights reserved. お客様のイノベーションのために 10 - 3倍のパフォーマンス向上 - レプリケーション改良 - JSONサポート - セキュリティ強化 MySQL 5.7 MySQL InnoDB Cluster - MySQL Group Replication - MySQL Router - MySQL Shell MySQL 8.0 (RC) - データディクショナリ - Roles - ユニコード - 共通テーブル式 - Window関数 - セキュリティ強化 - レプリケーション改良
8.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. |Copyright © 2017, Oracle and/or its affiliates. All rights reserved. Oracle MySQL Cloud Service • ナンバーワンのオープンソースデータベースをOracle Cloudにて利用可能 • シンプル、自動化、統合 & エンタープライズレベル • MySQL Enterprise Editionをベースとした 唯一のデータベースクラウドサービス • 迅速な利用開始、強固なセキュリティ、費用対効果の高 いMySQLベースのアプリケーション向け
9.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | MySQL Cloud Service: Only From Oracle MySQLエキスパート によるサポートサービ ス Oracle Cloud環境との 統合 クラウドとオンプレミスの ハイブリッド型構成 MySQL Enterprise Edition on Oracle Cloud エンタープライズレベル の運用監視ソリューショ ン
10.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | • サービス概要 – https://cloud.oracle.com/ja_JP/mysql • 価格情報 – https://cloud.oracle.com/mysql/pricing • マニュアル – 英語: http://docs.oracle.com/cloud/latest/?tab=3 – 日本語: http://docs.oracle.com/cd/E60665_01/?tab=3 • 30日間無償トライアル – https://cloud.oracle.com/ja_JP/tryit MySQL Cloud Service: 参考情報
11.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | Scalable &Stable アクセス集中時の処理改良、 セキュリティと耐障害性強化 Data Driven アプリケーションデータ分析に よる運用中サービス改良支援 Developer First ハイブリッド型のデータモデルと アクセスAPIによる開発柔軟性 Mobile Friendly 位置情報ベースのサービス 向けの機能強化と絵文字を 含めたユニコード対応 MySQL 8.0 : Webアプリケーション開発効率向上を実現 Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 25 24x7at Scale
12.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | 26 Building a Sample Application Ticket Booking System
13.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | 27 Case Study: Our Booking System
14.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | MySQL 8.0 : モバイルアプリとの親和性 Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 28 GIS(空間図形情報)サポートの強化 • 位置情報ベースのサービスとの連携の改良 • MySQL 5.7 にて Boost.Geometry ライブライリーを統合 • MySQL 8.0 にて球面座標と測地座標系(SRS)サポート ユニコードをデフォルトキャラクタセットに • 絵文字をサポートする utf8mb4 がデフォルトのキャラクタセットに • ユニコード文字列の処理性能が16倍以上向上するケースも • Unicode 9.0 をサポート • UCA(Unicode照合アルゴリズム)ベースの新しい各言語用の照合 � � � �
15.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | 29 SELECT events.id, events.name, DATE(events.event_date) as date, ROUND(st_distance_sphere(venues.location, POINT(132.7645, 35.368377)), 2) AS distance_in_meters FROM events INNER JOIN venues ON events.venue_id=venues.id WHERE event_date > NOW() ORDER BY distance_in_meters; +----+---------------------+------------+---------------------+ | id | name | date | distance_in_meters | +----+---------------------+------------+---------------------+ | 1 | DB Study Chugoku | 2017-12-02 | 0.00 | | 2 | OSC2017 Enterprise | 2017-12-09 | 628852.43 | | 3 | OSC2018 Osaka | 2018-01-26 | 261242.60 | +----+---------------------+------------+---------------------+ 3 rows in set (0.00 sec)
16.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | st_distance()を利用した距離の測定 mysql> SELECT ST_Distance_Sphere(ST_GeomFromText('POINT(139.718754 35.671148)'), ST_GeomFromText('POINT(135.492778 34.695758)')) as 'From TOKYO Office To Osaka Office'; +-----------------------------------+ | From TOKYO Office To Osaka Office | +-----------------------------------+ | 399041.1417772843 | +-----------------------------------+ mysql> SELECT ST_Distance(ST_GeomFromText('POINT(35.671148 139.718754)', 4326), ST_GeomFromText('POINT(34.695758 135.492778)', 4326)) as 'From TOKYO Office To Osaka Office'; +-----------------------------------+ | From TOKYO Office To Osaka Office | +-----------------------------------+ | 399801.5254154028 | +-----------------------------------+ 参考: https://dev.mysql.com/doc/refman/8.0/en/spatial-analysis-functions.html 参照: Google Map
17.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | utf8mb4 as default character set • 最新のUnicode 9.0をサポート • 国ごとの照合順序を実装(日本語を含む) 例) utf8mb4_ja_0900_as_cs, utf8mb4_ja_0900_as_cs_ks – ai as : アクセントセンシティブ(アクセント,濁音,破裂音の区別) – ci cs : ケースセンシティブ(大文字,小文字の区別) – ks : カナセンシティブ(’あ’,’ア’,’ァ’を区別) 31 mysql> select *,@@version from information_schema.COLLATIONS where CHARACTER_SET_NAME = 'utf8mb4' and IS_DEFAULT = 'YES'; +--------------------+--------------------+----+------------+-------------+---------+------------------------------+ | COLLATION_NAME | CHARACTER_SET_NAME | ID | IS_DEFAULT | IS_COMPILED | SORTLEN | @@version | +--------------------+--------------------+----+------------+-------------+---------+------------------------------+ | utf8mb4_general_ci | utf8mb4 | 45 | Yes | Yes | 1 | 5.7.18-enterprise-commercial | +--------------------+--------------------+----+------------+-------------+---------+------------------------------+ mysql> select *,@@version from information_schema.COLLATIONS where CHARACTER_SET_NAME = 'utf8mb4' and IS_DEFAULT = 'YES'; +--------------------+--------------------+-----+------------+-------------+---------+---------------+-----------+ | COLLATION_NAME | CHARACTER_SET_NAME | ID | IS_DEFAULT | IS_COMPILED | SORTLEN | PAD_ATTRIBUTE | @@version | +--------------------+--------------------+-----+------------+-------------+---------+---------------+-----------+ | utf8mb4_0900_ai_ci | utf8mb4 | 255 | Yes | Yes | 0 | NO PAD | 8.0.2-dmr | +--------------------+--------------------+-----+------------+-------------+---------+---------------+-----------+ MySQL 4.1 Default: Latin1 Option: utf8[mb3] MySQL 5.5 Add: utf8mb4 MySQL 5.7 + optimizations MySQL 8.0 Default: utf8mb4 WL#10818: Add utf8mb4 accent sensitive and case insensitive collation https://dev.mysql.com/worklog/task/?id=10818 WL#7554: Switch to new default character set and change mtr test cases https://dev.mysql.com/worklog/task/?id=7554 UNICODE詳細: http://www.unicode.org/
18.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | 32 MySQL 8.0 vs MySQL 5.7 utf8mb4 0 45000 90000 135000 180000 8 16 64 128 512 1024 SELECT DISTINCT_RANGES 0 10000 20000 30000 40000 8 16 64 128 512 1024 OLTP RO 0 7500 15000 22500 30000 8 16 64 128 512 1024 OLTP RW +300-350% in OLTP RO +176-233% in OLTP RW +1500-1800% in SELECT DISTINCT_RANGES
19.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | MySQL 8.0 : アプリケーション開発者に柔軟性を Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | ハイブリッドAPISQL 関数データ型 MySQL X DevAPIJSON 関数JSON データ型 33 SQL と CRUD な NoSQL のハイ ブリッドAPIによる開発柔軟性 JSON データの参照更新のため の各種 SQL 関数を実装。 MySQL 8.0 では JSON データ を SQL で分析するための変換 関数も追加 リレーショナルなテーブルと非 構造データとシームレスに統 合。さらに MySQL 8.0 では更 新性能の最適化 { } ();
20.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | 34 Javascript Everywhere + Backend: Frontend:
21.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | 35 Flexible Schema
22.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | mysql> SELECT id, doc FROM seats WHERE id = 28100G *************************** 1. row *************************** id: 28100 doc: {"row": 10, "seat": 13, "section": 215, "properties": {"amenities": [{"type": "washroom", "distance_in_meters": 38.564358156700024}, {"type": "bar", "distance_in_meters": 152.33173722618423}, {"type": "snacks", "distance_in_meters": 35.965617807550004}, {"type": "souvenirs", "distance_in_meters": 215.66576701185272}], "accessible": false, "emergency_exits": [{"exit 1": 100.66892563427699}, {"exit 2": 374.19603448751946}, {"exit 3": 563.9332987311606}, {"exit 4": 886.7355222969646}, {"exit 5": 1900.9778593955355}], "entrance_number": 2}} 1 row in set (0.00 sec) 36
23.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | JSON Functions 37 MySQL 5.7 and 8.0 JSON_ARRAY_APPEND() JSON_ARRAY_INSERT() JSON_ARRAY() JSON_CONTAINS_PATH() JSON_CONTAINS() JSON_DEPTH() JSON_EXTRACT() JSON_INSERT() JSON_KEYS() JSON_LENGTH() JSON_MERGE[_PRESERVE]() JSON_OBJECT() JSON_QUOTE() JSON_REMOVE() JSON_REPLACE() JSON_SEARCH() JSON_SET() JSON_TYPE() JSON_UNQUOTE() JSON_VALID() JSON_PRETTY() JSON_STORAGE_SIZE() JSON_STORAGE_FREE() JSON_ARRAYAGG() JSON_OBJECTAGG() JSON_MERGE_PATCH() JSON_TABLE() *labs
24.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | 【例】 JSON_TABLE() SELECT * FROM seats, JSON_TABLE(doc, "$.properties.amenities[*]" COLUMNS ( id for ordinality, amenity_type VARCHAR(100) PATH "$.type", distance float PATH '$.distance_in_meters') ) AS amenities WHERE seats.id = 28100 AND amenities.amenity_type IN ('snacks', 'bar') ORDER BY amenities.distance; +------+------------------+------------+ | id | amenity_type | distance | +------+------------------+------------+ | 2 | bar | 100.538 | | 3 | snacks | 136.647 | +------+------------------+------------+ 2 rows in set (0.00 sec) 39 Labs
25.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | コネクター, ドライバー, プロトコル拡張機能 MySQL Plugins X Protocol Plugin Memcached Plugin Core MySQL Connectors and Drivers X ProtocolStd Protocol Memcached driver X Protocol 33060 Std Protocol 3306 SQL API CRUD and SQL APIs Memcache Protocol X and Std Protocols MySQL Shell 40 +-------------+----------------+--------------------+ | PLUGIN_NAME | PLUGIN_VERSION | PLUGIN_DESCRIPTION | +-------------+----------------+--------------------+ | mysqlx | 1.0 | X Plugin for MySQL | +-------------+----------------+--------------------+
26.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | X DevAPI • X Pluginを有効にする事で、X Protocol経由で通信可能 • ドキュメントとテーブルのコレクションに対してのCRUD処理 • NoSQLライクな構文でドキュメントに対しCRUD処理可能 • Fluent API prod = sess.getSchema("prod") res = prod.users. find("$.name = 'Milk'"). fields(["name", "properties"]) X Plugin (MySQL) ⇔ X Protocol ⇔ X DevAPI (Driver) 41 MySQL Connector/node.js (1.0.x) MySQL Connector/J (6.0.x) MySQL Connector/Net (7.0.x) MySQL Connector/python(2.2.x) MySQL Shell (1.0.x) 参照: http://dev.mysql.com/downloads/connector/
27.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | MySQL Connectors include X Dev API • Use SQL, CRUD APIs スキーマレスドキュメントおよびリレーショナルテーブルに対応 - Classic APIsに加えて、これらの全てが追加されます 42 Operation Document Relational Create Collection.add() Table.insert() Read Collection.find() Table.select() Update Collection.modify() Table.update() Delete Collection.remove() Table.delete() 参照) http://dev.mysql.com/doc/x-devapi-userguide/en/crud-operations-overview.html
28.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | ドキュメントの検索 products.find("color = 'yellow'").sort(["name"]).execute();
29.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | MySQL 8.0 : データ分析処理の効率向上 Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Window 関数共通テーブル式 (CTEs) 44 • サブクエリの導出表 (derived table) の代替 • WITH 句と呼ばれることも • 分析処理 SQL 文の可読性や処理性能の向上、階 層構造データ利用にも • ランキング作成などの分析処理用途で ユーザーからの追加要望の多かった機能 • 検索対象のレコードと周辺データとの関連を 集計や分析 WITH tickets_filtered AS ( SELECT tickets.*, seats.doc FROM tickets INNER JOIN seats ON tickets.seat_id = seats.id WHERE tickets.event_id = 3 ) SELECT * FROM tickets_filtered WHERE doc->"$.section" = 201G SELECT name, dept_id, salary, RANK() OVER w AS `rank` FROM employee WINDOW w AS (PARTITION BY dept_id ORDER BY salary DESC);
30.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | WITH tickets_filtered AS ( SELECT tickets.*, seats.doc FROM tickets INNER JOIN seats ON tickets.seat_id=seats.id WHERE tickets.event_id = 3 ) SELECT * FROM tickets_filtered WHERE doc->"$.section" = 201G *************************** 1. row *************************** id: 14447 event_id: 3 seat_id: 16430 order_id: NULL doc: {"row": 2, "seat": 1, "section": 201, "properties": {"amenities": [{"type": "washroom", "distance_in_meters": 171.80304788220957}, {"type": "bar", "distance_in_meters": 58.53288591702737}, {"type": "snacks", "distance_in_meters": .. 45
31.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | DBT-3 Query 15 0 2 4 6 8 10 12 14 16 18 View CTE QueryExecutionTime (seconds) 46 クエリーパフォーマンス ビューの場合, 2回マテリアライズされ, CTEは1回のみマテリアライズされるため, クエリの実行時間は半分に短縮されます。 ex: revenue0 on P.17 サブクエリの場合、同じ処理が複数回発生: SELECT ...FROM (SELECT a, b, SUM(c) s FROM t1 GROUP BY a, b) AS d1 JOIN (SELECT a, b, SUM(c) s FROM t1 GROUP BY a, b) AS d2 ON d1.b = d2.a; 共通テーブル式の場合: WITH d AS (SELECT a, b, SUM(c) s FROM t1 GROUP BY a, b) SELECT ... FROM d AS d1 JOIN d AS d2 ON d1.b = d2.a;
32.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | Window関数とは? • Window関数は、現在の行に関連する行セットについて、 集計関数と同様に計算を行える • 集計関数のように行を単一の出力にグループ化するのではなく、 複数行を出力する • Window関数は現在の行の近くの行(関連する行)にアクセスできる 47 集計関数 Window関数
33.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | Window関数の例 • RANK関数 – ランキングを求めることが出来る • LAG関数 – 1行前の値を参照できる • SUM関数 – ウィンドウごとの合計値を求めることが出来る 48
34.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | Window関数: RANK 49 SELECT name, dept_id AS dept, salary, RANK() OVER w AS `rank` FROM employee WINDOW w AS (PARTITION BY dept_id ORDER BY salary DESC); name dept_id salary rank Newt NULL 75000 1 Ed 10 100000 1 Newt 10 80000 2 Fred 10 70000 3 Michael 10 70000 3 Jon 10 60000 5 Dag 10 NULL 6 Pete 20 65000 1 Lebedev 20 65000 1 Jeff 30 300000 1 Will 30 70000 2
35.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | SELECT seats.doc->"$.row" as row_no, seats.doc->"$.seat" as seat_no, LAG(seats.doc->"$.seat", 1) OVER w AS prev_seat, LEAD(seats.doc->"$.seat", 1) OVER w AS next_seat FROM tickets JOIN seats ON tickets.seat_id=seats.id WHERE seats.doc->"$.section" = 201 WINDOW w AS (PARTITION BY seats.doc->"$.row" ORDER BY seats.doc->"$.seat") ORDER BY row_no, seat_no; +----------+-----------+--------------+-------------+ | row_no | seat_no | prev_seat | next_seat | +----------+-----------+--------------+-------------+ | 1 | 1 | NULL | 2 | | 1 | 2 | 1 | 3 | | 1 | 3 | 2 | 4 | +----------+-----------+--------------+-------------+ 50
36.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | パフォーマンス スキーマ デフォルトで取得する性能統計情報 の項目を拡張。パフォーマンス スキーマへの参照性能向上 不可視 インデックス オプティマイザーからインデックスを 隠蔽。インデックスを残した仮削除や 段階的なインデックス追加を実現 アクセス集中時の 対応改善 SELECT FOR UPDATE 文の NOWAIT や SKIP LOCKED オプションによるロック解放待ち削減 MySQL 8.0 : アプリケーションの性能拡張性向上 Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 51 ヒント句の 拡張 SQL文本体のテーブル指定順はその ままにJOIN順序やインデックスマージ 対象の指定が可能に 降順 インデックス 昇順と降順の複合インデックス利用 時にも後方索引スキャンをしないた めより高速に ヒント句による セッション変数変更 新しいヒント句の SET_VAR により 一つのSQL文内でセッション変数を 一時的に変更
37.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | 52 New! Better Handling of Hot Row Contention SELECT * FROM tickets WHERE id IN (1,2,3,4) AND order_id IS NULL FOR UPDATE NOWAIT; SELECT * FROM tickets WHERE id IN (1,2,3,4) AND order_id IS NULL FOR UPDATE SKIP LOCKED; Error immediately if a row is already locked Non deterministically skip over locked rows
38.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | 不可視インデックス (Invisible Indexes) • オプティマイザーから見えない索引 – 索引の無効化とは異なる – データ更新時にInvisible Indexesも更新される • 2つのユースケース: – 仮削除(ゴミ箱) – 段階的な展開にてインデックスの有効性の確認 53 WL#8697: Support for INVISIBLE indexes https://dev.mysql.com/worklog/task/?id=8697
39.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | Performance Schema Indexes • パフォーマンススキーマのテーブルへのより効率的なアクセスが可能 • 89個のテーブルに対し合計90個のインデックス • オーバーヘッドを削減 – 物理インデックスは内部的には維持されません – 索引の実装により、オプティマイザがより良い実行計画を選択 54 0. 10. 20. 30. 40. Query Time MySQL 8.0 MySQL 5.7 SELECT * FROM sys.session 1000 active sessions Time in Seconds (Lower is better) Over 30x faster! WL#6616: PERFORMANCE_SCHEMA, INDEXES https://dev.mysql.com/worklog/task/?id=6616
40.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | 55 【例】 Performance Schema Indexes mysql> SELECT * FROM variables_by_thread IGNORE INDEX (primary) WHERE thread_id = 34 AND variable_name = 'time_zone'; +-----------+---------------+----------------+ | THREAD_ID | VARIABLE_NAME | VARIABLE_VALUE | +-----------+---------------+----------------+ | 34 | time_zone | SYSTEM | +-----------+---------------+----------------+ 1 row in set (0.00 sec) mysql> show status like 'Handler_read_%'; +-----------------------+-------+ | Variable_name | Value | +-----------------------+-------+ | Handler_read_first | 0 | | Handler_read_key | 0 | | Handler_read_last | 0 | | Handler_read_next | 0 | | Handler_read_prev | 0 | | Handler_read_rnd | 0 | | Handler_read_rnd_next | 136 | +-----------------------+-------+ 7 rows in set (0.01 sec) mysql> SELECT * FROM variables_by_thread WHERE thread_id = 34 AND variable_name = 'time_zone'; +-----------+---------------+----------------+ | THREAD_ID | VARIABLE_NAME | VARIABLE_VALUE | +-----------+---------------+----------------+ | 34 | time_zone | SYSTEM | +-----------+---------------+----------------+ 1 row in set (0.00 sec) mysql> show status like 'Handler_read_%'; +-----------------------+-------+ | Variable_name | Value | +-----------------------+-------+ | Handler_read_first | 0 | | Handler_read_key | 1 | | Handler_read_last | 0 | | Handler_read_next | 0 | | Handler_read_prev | 0 | | Handler_read_rnd | 0 | | Handler_read_rnd_next | 0 | +-----------------------+-------+ 7 rows in set (0.01 sec) Handler_read_rnd_next: The number of requests to read the next row in the data file. This value is high if you are doing a lot of table scans. Without Index “Handler_read_rnd_next” が増加している With Index “Handler_read_rnd_next” は0のまま増加していない
41.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | Performance Schema Instrumenting SQL Errors 56 Aggregation Table Name By Account events_errors_summary_by_account_by_error By Host events_errors_summary_by_host_by_error By Thread events_errors_summary_by_thread_by_error By User events_errors_summary_by_user_by_error Global events_errors_summary_global_by_error
42.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | mysql> select * from performance_schema.events_errors_summary_by_user_by_error where FIRST_SEEN is not NULL; +------+--------------+---------------------------+-----------+------------------+-------------------+---------------------+---------------------+ | USER | ERROR_NUMBER | ERROR_NAME | SQL_STATE | SUM_ERROR_RAISED | SUM_ERROR_HANDLED | FIRST_SEEN | LAST_SEEN | +------+--------------+---------------------------+-----------+------------------+-------------------+---------------------+---------------------+ | NULL | 1045 | ER_ACCESS_DENIED_ERROR | 28000 | 1 | 0 | 2016-10-27 15:57:16 | 2016-10-27 15:57:16 | | root | 1046 | ER_NO_DB_ERROR | 3D000 | 1 | 0 | 2016-10-27 16:00:37 | 2016-10-27 16:00:37 | | root | 1049 | ER_BAD_DB_ERROR | 42000 | 1 | 0 | 2016-10-27 18:21:09 | 2016-10-27 18:21:09 | | root | 1064 | ER_PARSE_ERROR | 42000 | 15 | 0 | 2016-10-27 15:58:01 | 2016-10-27 18:24:06 | | root | 1146 | ER_NO_SUCH_TABLE | 42S02 | 1 | 0 | 2016-10-27 16:08:03 | 2016-10-27 18:14:41 | | root | 1287 | ER_WARN_DEPRECATED_SYNTAX | HY000 | 24 | 0 | 2016-10-27 16:07:10 | 2016-10-27 16:07:10 | | root | 3554 | ER_NO_SYSTEM_TABLE_ACCESS | HY000 | 140 | 0 | 2016-10-27 15:57:30 | 2016-10-27 18:38:09 | +------+--------------+---------------------------+-----------+------------------+-------------------+---------------------+---------------------+ mysql> SELECT * FROM performance_schema.events_errors_summary_global_by_error WHERE sum_error_handled > 0 OR SUM_ERROR_RAISED > 0; +--------------+---------------------------+-----------+------------------+-------------------+---------------------+---------------------+ | ERROR_NUMBER | ERROR_NAME | SQL_STATE | SUM_ERROR_RAISED | SUM_ERROR_HANDLED | FIRST_SEEN | LAST_SEEN | +--------------+---------------------------+-----------+------------------+-------------------+---------------------+---------------------+ | 1049 | ER_BAD_DB_ERROR | 42000 | 3 | 0 | 2017-07-07 14:35:47 | 2017-07-07 14:36:49 | | 1054 | ER_BAD_FIELD_ERROR | 42S22 | 1 | 0 | 2017-07-07 08:20:04 | 2017-07-07 08:20:04 | | 1062 | ER_DUP_ENTRY | 23000 | 1 | 0 | 2017-07-07 13:30:58 | 2017-07-07 13:30:58 | | 1064 | ER_PARSE_ERROR | 42000 | 6 | 0 | 2017-07-07 07:49:59 | 2017-07-07 14:36:08 | | 1146 | ER_NO_SUCH_TABLE | 42S02 | 1 | 0 | 2017-07-07 13:30:38 | 2017-07-07 14:37:33 | | 1287 | ER_WARN_DEPRECATED_SYNTAX | HY000 | 7 | 0 | 2017-07-07 11:41:03 | 2017-07-07 13:39:42 | | 1305 | ER_SP_DOES_NOT_EXIST | 42000 | 4 | 0 | 2017-07-07 12:44:54 | 2017-07-07 13:30:11 | | 1411 | ER_WRONG_VALUE_FOR_TYPE | HY000 | 9 | 0 | 2017-07-07 12:45:00 | 2017-07-07 12:45:16 | | 3568 | ER_UNRESOLVED_TABLE_LOCK | HY000 | 4 | 0 | 2017-07-07 13:44:45 | 2017-07-07 13:46:28 | +--------------+---------------------------+-----------+------------------+-------------------+---------------------+---------------------+ 【例】パフォーマンススキーマSQLエラーの計測 SELECT * FROM test.no_table; ERROR 1146 (42S02): Table 'test.no_table' doesn't exist 57 存在しないテーブルへの参照エラー発生
43.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | パフォーマンススキーマ ヒストグラム mysql> WITH total as -> (SELECT SUM(count_bucket) as t FROM performance_schema.events_statements_histogram_global) -> SELECT sys.decimal_bucket_name(sys.decimal_bucket(MIN(bucket_timer_low))) as bucket, -> sys.visualization(SUM(count_bucket) / (SELECT t FROM total), 50) as visualization, -> SUM(count_bucket) as count -> FROM performance_schema.events_statements_histogram_global -> GROUP BY sys.decimal_bucket(bucket_timer_low); +---------+---------------------------------+--------+ | bucket | visualization | count | +---------+---------------------------------+--------+ | 0us+ | ############################### | 439148 | | 10us+ | ############ | 163434 | | 100us+ | | 1517 | | 1ms+ | ####### | 99453 | | 10ms+ | | 369 | | 100ms+ | | 29 | | 1s+ | | 2 | | 10s+ | | 1 | +---------+---------------------------------+--------+ 8 rows in set (0.04 sec) 58 例: mysqlslap実行時のクエリー実行時間の分布 WL#5384: PERFORMANCE_SCHEMA Histograms https://dev.mysql.com/worklog/task/?id=5384 events_statements_histogram_globalとCTEを利用 して実行時間の分布をビジュアライズした例
44.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | パフォーマンススキーマの拡張 • どのデータがロックされているか?誰がロックを所有しているか? 誰がデータを待っているか? ロック発生状況の確認 SELECT thread_id, object_name, index_name, lock_type, lock_mode, lock_data FROM performance_schema.data_locks WHERE object_name = 'seats'; +-----------+-------------+------------+---------------+-----------+-------------+ | thread_id | object_name | index_name | lock_type | lock_mode | lock_data | +-----------+-------------+------------+---------------+-----------+-------------+ | 33 | seats | NULL | TABLE | IX | NULL | | 33 | seats | PRIMARY | RECORD | X | 3, 5 | | 33 | seats | PRIMARY | RECORD | X | 3, 6 | | 33 | seats | PRIMARY | RECORD | X | 4, 5 | | 33 | seats | PRIMARY | RECORD | X | 4, 6 | +-----------+-------------+------------+---------------+-----------+-------------+ WL#6657: PERFORMANCE_SCHEMA, DATA LOCKS https://dev.mysql.com/worklog/task/?id=6657 WL#9275: DEPRECATE INFORMATION_SCHEMA.INNODB_LOCKS IN 5.7 https://dev.mysql.com/worklog/task/?id=9275 ロックされているデータを表示
45.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | オプティマイザヒントの拡張 • SET_VARヒント – SQL単位でシステム変数を変更できるヒント – セッション単位で変更可能なシステム変数をSQL単位で変更可能に (max_allowed_packetなど一部のセッション変数は変更不可) 61 SELECT /*+ SET_VAR(sort_buffer_size = 16M) */ name FROM people ORDER BY name; INSERT /*+ SET_VAR(foreign_key_checks=OFF) */ INTO t2 VALUES(2); SELECT /*+ SET_VAR(optimizer_switch='use_invisible_indexes=ON') */ name,region FROM country WHERE region='Eastern Asia'; 使用例
46.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | 降順索引 (Descending Indexes) CREATE TABLE t1 ( a INT,b INT, INDEX a_b (a DESC, b ASC)); • 5.7: 昇順インデックスが作成され,サーバーがそれを逆方向にスキャンします • 8.0: 降順でインデックスが作成され,サーバはそれをフォワードスキャンします • メリット: – 前方索引スキャンは後方索引スキャンより高速 – ASC / DESCソートキーでORDER BYにてfilesortの代わりにインデックスを使用可 For B+tree indexes
47.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | 降順索引 (Descending Indexes) mysql> explain select * from city2 order by city_id asc limit 3; +----+-------------+-------+------------+-------+---------------+-----------------+---------+------+------+----------+-------+ | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+-------+------------+-------+---------------+-----------------+---------+------+------+----------+-------+ | 1 | SIMPLE | city2 | NULL | index | NULL | idx_asc_city_id | 2 | NULL | 3 | 100.00 | NULL | +----+-------------+-------+------------+-------+---------------+-----------------+---------+------+------+----------+-------+ mysql> explain select * from city2 order by city_id desc limit 3; +----+-------------+-------+------------+-------+---------------+-----------------+---------+------+------+----------+---------------------+ | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+-------+------------+-------+---------------+-----------------+---------+------+------+----------+---------------------+ | 1 | SIMPLE | city2 | NULL | index | NULL | idx_asc_city_id | 2 | NULL | 3 | 100.00 | Backward index scan | +----+-------------+-------+------------+-------+---------------+-----------------+---------+------+------+----------+---------------------+ MySQL 5.5 ~ 5.7: can create ASC index Only. mysql> explain select * from city2 order by city_id asc limit 3; +----+-------------+-------+------------+-------+---------------+-----------------+---------+------+------+----------+-------+ | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+-------+------------+-------+---------------+-----------------+---------+------+------+----------+-------+ | 1 | SIMPLE | city2 | NULL | index | NULL | idx_asc_city_id | 2 | NULL | 3 | 100.00 | NULL | +----+-------------+-------+------------+-------+---------------+-----------------+---------+------+------+----------+-------+ mysql> explain select * from city2 order by city_id desc limit 3; +----+-------------+-------+------------+-------+---------------+------------------+---------+------+------+----------+-------+ | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+-------+------------+-------+---------------+------------------+---------+------+------+----------+-------+ | 1 | SIMPLE | city2 | NULL | index | NULL | idx_desc_city_id | 2 | NULL | 3 | 100.00 | NULL | +----+-------------+-------+------------+-------+---------------+------------------+---------+------+------+----------+-------+ MySQL8.0 ~: can create both ASC and DESC index
48.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | リソース グループ スレッドとCPUのマッピングを行うこ とにより処理効率と性能向上を図る クラウドフレンドリー な設定永続化 SET PERSIST コマンドにより、SQL インターフェースからの設定変更を 永続化。どこから変更された設定値 かを確認するテーブルも追加 InnoDB専用 サーバー構成 仮想マシンやクラウド環境の構成に あわせてInnoDBの最適なパラメタ を自動的に設定 MySQL 8.0 : MySQLサーバーの性能拡張性向上 Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 64 トランザクション スケジューリング “Contention-Aware Transaction Scheduling”がInnoDBのデフォルト のスケジューリングアルゴリズムと なり性能が劇的に向上 コスト見積もりの 最適化 最新のストレージ技術への対応や データのキャッシュ状況に応じた オプティマイザーでの実行計画 カラム ヒストグラム インデックスが設定されていない 列の統計情報をオプティマイザーに 提供し実行計画をさらに改善
49.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | InnoDB専用サーバーの自動構成 • システムメモリー量を確認し、ログファイルサイズ、バッファプールサイズ、 フラッシュメソッドを自動的に調整 • 使用方法 65 SET PERSIST_ONLY innodb_dedicated_server = TRUE 参照: http://mysqlserverteam.com/plan-to-improve-the-out-of-the-box-experience-in-mysql-8-0/ WL#9193: Autoscale InnoDB resources based on system resources by default https://dev.mysql.com/worklog/task/?id=9193
50.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | InnoDB専用サーバーの自動構成 • MySQL 8.0.3での設定内容 66 [innodb_buffer_pool_size] server_memory < 1G ? 128M (現在のデフォルトと同じ) server_memory <= 4G ? server_memory * 0.5 server_memory > 4G ? server_memory * 0.75 [innodb_log_file_size] server_memory < 1G ? 48M (現在のデフォルトと同じ) server_memory <= 4G ? 128M server_memory <= 8G ? 512M server_memory <= 16G ? 1024M server_memory > 16G ? 2048M [innodb_flush_method] O_DIRECT_NO_FSYNC
51.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | 設定変更の永続化 • 以下の構文でシステム変数の変更を永続化可能 – SET PERSIST max_connections = 500; – SET PERSIST_ONLY innodb_log_file_size = 128*1024*1024; • システム変数変更のためにファイルシステムへのアクセス不要 • いつ、誰に設定されたかを確認出来る情報も追加 67 mysql> SET PERSIST log_timestamps='SYSTEM'; Query OK, 0 rows affected (0.00 sec) mysql> select * from performance_schema.variables_info where variable_source='PERSISTED'; +----------------+-----------------+--------------------------------+-----------+-----------+---------------------+----------+-----------+ | VARIABLE_NAME | VARIABLE_SOURCE | VARIABLE_PATH | MIN_VALUE | MAX_VALUE | SET_TIME | SET_USER | SET_HOST | +----------------+-----------------+--------------------------------+-----------+-----------+---------------------+----------+-----------+ | log_timestamps | PERSISTED | /var/lib/mysql/mysqld-auto.cnf | 0 | 0 | 2017-10-14 14:48:28 | root | localhost | +----------------+-----------------+--------------------------------+-----------+-----------+---------------------+----------+-----------+ WL#8688: Support ability to persist SET GLOBAL settings https://dev.mysql.com/worklog/task/?id=8688 #cat /var/lib/mysql/mysqld-auto.cnf { "mysql_server": {"log_timestamps": "SYSTEM" } }
52.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | リソースグループ shell> cat /proc/cpuinfo | grep processor processor : 0 processor : 1 mysql> CREATE RESOURCE GROUP CPU1 TYPE=USER VCPU=1; Query OK, 0 rows affected (0.24 sec) mysql> SELECT * from INFORMATION_SCHEMA.RESOURCE_GROUPS; +---------------------+---------------------+------------------------+----------+-----------------+ | RESOURCE_GROUP_NAME | RESOURCE_GROUP_TYPE | RESOURCE_GROUP_ENABLED | VCPU_IDS | THREAD_PRIORITY | +---------------------+---------------------+------------------------+----------+-----------------+ | USR_default | USER | 1 | 0-1 | 0 | | SYS_default | SYSTEM | 1 | 0-1 | 0 | | CPU0 | USER | 1 | 0 | 0 | | CPU1 | USER | 1 | 1 | 0 | +---------------------+---------------------+------------------------+----------+-----------------+ 4 rows in set (0.00 sec) mysql> SET RESOURCE GROUP CPU0;select "This user connection will use Processor 0 Only"; mysql> SELECT /*+ RESOURCE_GROUP(CPU0) */ "This user connection will use Processor 0 Only"; 68 リソースグループを使用すると、そのリソースの制御 が可能になり、グループ内のスレッドによるリソース 消費を有効または制限できます。 DBAは、さまざまな 作業負荷に応じてこれらの属性を変更できます。 WL#9467: Resource Groups https://dev.mysql.com/worklog/task/?id=9467
53.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | 【例】リソースグループパフォーマンス 69 0 40,000 80,000 120,000 160,000 No Resource Group With Resource Group QueriesperSecond Select Update System Configuration : Oracle Linux 7, Intel(R) Xeon(R) CPU E7-4860 2.27GHz 40 cores-HT (40 Cores Shared) (40 Cores for Select) (10 Cores for Update RG)
54.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | ヒストグラム • データが偏っている場合のクエリーの精度向上 • ヒストグラムはインデックスを作成よりコストが低い • ANALYZE TABLE t UPDATE HISTOGRAM ON c1 WITH 10 BUCKETS; 70 WL#8706: Persistent storage of Histogram data https://dev.mysql.com/worklog/task/?id=8706 WL#8707: Classes/structures for Histograms https://dev.mysql.com/worklog/task/?id=8707 WL#8943: Extend ANALYZE TABLE with histogram support https://dev.mysql.com/worklog/task/?id=8943 mysql> SELECT * FROM events_statements_histogram_by_digest WHERE SCHEMA_NAME ='sakila' -> AND DIGEST = 'a5980f0634db05c87a7aeb17e1344f84' AND COUNT_BUCKET > 0 limit 1G *************************** 1. row *************************** SCHEMA_NAME: sakila DIGEST: a5980f0634db05c87a7aeb17e1344f84 BUCKET_NUMBER: 153 BUCKET_TIMER_LOW: 10964781961 BUCKET_TIMER_HIGH: 11481536214 COUNT_BUCKET: 1 COUNT_BUCKET_AND_LOWER: 1 BUCKET_QUANTILE: 0.500000 Statement Histogram Summary Tables クエリの50%は11.48マイクロ秒未満で実行
55.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | 新しいオプティマイザー・コストモデル •バッファプールのヒット率を意識した改善 71 Model for a table scan: # pages in table * (IO_BLOCK_READ_COST | MEMORY_BLOCK_READ_COST) # records * ROW_EVALUATE_COST = 25.4 100% in memory = 29.9 100% on disk Model for a range scan: # records_in_range * (IO_BLOCK_READ_COST | MEMORY_BLOCK_READ_COST) # records_in_range * ROW_EVALUATE_COST + # records_in_range * ROW_EVALUATE_COST = 22.5 100% in memory = 60 100% on disk WL#7093: Optimizer provides InnoDB with a bigger buffer https://dev.mysql.com/worklog/task/?id=7093 この例では、全データがメモリ上にある場合にはレン ジスキャンの方がコストが低い ※IOブロックリードコストのデフォル値 ・ディスク上:1 ・メモリ上:0.25 データがメモリ上にある/ないによって、 レンジスキャンのパフォーマンスの差が大きい。 INNODB_CACHED_INDEXESからヒット率を判断し、適切 な実行計画を選択 SELECT * FROM Country WHERE population > 20000000;
56.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | 0 300,000 600,000 900,000 1,200,000 1 2 4 8 16 32 64 128 256 512 QueriesperSecond Users MySQL 8.0 Labs MySQL 5.7 MySQL 5.6 Intel(R) Xeon(R) Platinum 8168 CPU 2CPU-sockets, 48cores-HT 2x Intel Optane Oracle Linux 7.3 1,000,000+ QPS Sysbench: IO-bound OLTP RO Point-Selects
57.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | 0 40,000 80,000 120,000 160,000 200,000 1 2 4 8 16 32 64 128 256 512 QueriesperSecond Users MySQL 8.0 Labs MySQL 5.7 MySQL 5.6 Intel(R) Xeon(R) Platinum 8168 CPU 2CPU-sockets, 48cores-HT 2x Intel Optane Oracle Linux 7.3 MySQL8.0では,参照のみで無く更新処 理のパフォーマンス改善に注力 Sysbench: IO-bound OLTP RW Updates-only
58.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | セキュリティ強化 ロール & Dynamic Privileges 機能追加。透過的データ暗号化 を拡張。 データディクショナリ メタデータ管理を InnoDB の テーブルで一元管理。メタ データの一貫性と信頼性向上 MySQL InnoDB Cluster MySQL 標準の高可用性 パッケージ。自動フェールオー バー & リカバリ、矛盾検知 MySQL 8.0 : アプリケーションのセキュリティ&可用性強化 Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 74
59.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | MySQL InnoDB Clusterとは? • 以下のコンポーネントの組み合わせから構成される MySQLの高可用性フレームワーク – MySQL Group Replication : DBの読み取り拡張性、自動フェイルオーバーを提供 – MySQL Router : アプリ接続先の自動フェイルオーバーを提供 – MySQL Shell : グループ・レプリケーション環境の構築、設定、Routerの設定 • 2017年4月12日 GA – 以下の製品を個別にインストールすることで使用可能 • MySQL 5.7.19 (2017-07-17) • MySQL Router 2.1.4 (2017-07-24) • MySQL Shell 1.0.10 (2017-07-28) 75
60.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | 76 スケールアウト High Performance 使いやすさ Built-in HA 全てを同梱したソリューション Everything Integrated MySQL InnoDB cluster
61.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | MySQL Connector Application MySQL Router MySQL Connector Application MySQL Router MySQL Shell MySQL Connector Application MySQL Router MySQL Connector Application MySQL Router MySQL InnoDB cluster MySQL Enterprise Monitor … mysql-js> cluster.status() { "clusterName": “NewAppCluster", "defaultReplicaSet": { "status": "Cluster tolerant to up to ONE failure.", "topology": { “hanode1:3306": { "address": “hanode1:3306", "status": "ONLINE", "role": "HA", "mode": "R/W", MySQL InnoDB Cluster: 全体アーキテクチャー 77
62.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | MySQL InnoDB Cluster: 内部アーキテクチャー 78 M M M MySQL Connector Application MySQL Router MySQL Connector Application MySQL Router MySQL Shell HA Group Replication アプリケーションは MySQL Routerに接続 Group Replicationによ る高可用性グループと メタデータの管理 MySQL Shellで設定 管理が可能 +-------------------------------+ | Database | +-------------------------------+ | information_schema | | mysql | | mysql_innodb_cluster_metadata | | performance_schema | | sys | +-------------------------------+ mysql_innodb_cluster_metadata.* performance_schema.replication_group_members performance_schema.replication_group_member_stats
63.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | MySQL Roter 2.1 • 透過的にクライアント接続をルーティング – ロードバランシング – アプリケーション接続フェイルオーバー • InnoDB Clusterをネイティブサポート – グループレプリケーションの構成を認識可能 – InnoDB Clusterへのルーディングを動的に コントロール可能 – マルチマスターモード及びシングルマスターモードをサポート 79 透過的にアプリケーション接続をルーティング App Servers with MySQL Router MySQL Group Replication MySQL Shell Setup, Manage, Orchestrate
64.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | MySQL Shell 80 すべての運用管理タスクのための、統一された単一クライアント App Servers with MySQL Router MySQL Group Replication MySQL Shell Setup, Manage, Orchestrate • 多言語対応: JavaScript, Python, and SQL • ドキュメントとリレーショナルモデルの両方をサポート • 開発と管理用に完全なAPIを提供 ”MySQL Shell provides the developer and DBA with a single intuitive, flexible, and powerfull interface for all MySQL related tasks!” [root@misc01 admin]# mysqlsh --help | egrep -i "Start in" --sql Start in SQL mode using a node session. --sqlc Start in SQL mode using a classic session. --js Start in JavaScript mode. --py Start in Python mode. [root@misc01 admin]#
65.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | 81 今後の拡張機能 MySQL HA Out-Of-Box HA Read Scale-Out Async Replication + Auto Failover Write Scale-Out ShardingStep1 Step2 Step3 * InnoDB Cluster Now GA!
66.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | S1 S2 S3 S4 S… M M M MySQL Connector Application MySQL Router MySQL Connector Application MySQL Router MySQL Shell HA Group Replication Read-Only Slaves 82 Group Replicationに参照用の スレーブを接続する事が可能。 + 参照先のノードがダウンした 場合、自動的に稼働中の他の グループメンバーを参照 MySQL InnoDB Cluster: Architecture – Step 2
67.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | S1 S2 S3 S4 S… M M M MySQL Connector Application MySQL Router MySQL Connector Application MySQL Router MySQL Shell HA ReplicaSet1 S1 S2 S3 S4 S… M M M MySQL Connector Application MySQL Router HA ReplicaSet2 ReplicaSet3 MySQL Connector Application MySQL Router S1 S2 S3 S4 M M M HA 83 Groupを分ける事による、 書き込みのシャーディング MySQL InnoDB Cluster: Architecture – Step 3
68.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | Transactional Data Dictionary • 信頼性の向上 • InnoDB内部にデータディクショナリーを格納 – No FRM files – No DB.OPT files – No TRG files – No TRN files – No PAR files • MyISAMテーブルは含まれなくなりました 84 WL#6379: Schema definitions for new DD https://dev.mysql.com/worklog/task/?id=6379 WL#6392: Upgrade to Transactional Data Dictionary https://dev.mysql.com/worklog/task/?id=6392 WL#6394: Bootstrap code for new DD https://dev.mysql.com/worklog/task/?id=6394 and more [root@DockerHost oracle]# ls -l /docker/docker802/world total 1084 -rw-r----- 1 27 27 638976 Jul 18 01:25 city.ibd -rw-r----- 1 27 27 196608 Jul 18 01:25 country.ibd -rw-r----- 1 27 27 262144 Jul 18 01:25 countrylanguage.ibd 8.0 SQLSQL 8.0 5.7
69.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | Transactional Data Dictionary • 柔軟な異種OSとの互換性の向上 – ファイルシステムのセマンティクスに依存しない • アトミックDDL – レプリケーションの改善、サーバーのエッジケースの簡素化 • 外部キーのMDL(メタデータロック) • 柔軟なメタデータAPI – 新しい機能の容易な追加 85 Ver Delete Tables Delete Stored Programs Delete Schema ATOMICITY 5.7 - Metadata, TRN/TRG/FRM files - Data, InnoDB tables - Metadata, rows in MyISAM (non-transactional) - Metadata, DB.OPT file Mix of filesystem, non-transactional/transactional storage and multiple commits 8.0 - Metadata, rows in InnoDB - Data, InnoDB tables - Metadata, rows in InnoDB - Metadata, rows in InnoDB Updates to transactional storage, one commit
70.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | Information Schema Performance •100 schemas times 50 tables (5000 tables) 86 0. 1. 2. 3. 4. Count All Schemas Schema aggregate size stats All Dynamic Table Info All Static Table Info Auto Increments Near Limit Count All Columns Count All Indexes MySQL 8.0 MySQL 5.7 Time in Seconds (Lower is better) 独自のテストで7/10の クエリがより高速化! X30 FAST: SELECT TABLE_SCHEMA,TABLE_NAME,TABLE_TYPE,ENGINE,ROW_FORMAT FROM information_schema.tables WHERE TABLE_SCHEMA LIKE ‘db%';
71.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | MySQL 8.0 : セキュリティの強化 Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 87 SQLロールの実装 Easier to manage user and applications rights and SQL standard compliant メタデータ変更がアトミックに New InnoDB based data dictionary enables ACL statements atomic and reliable Dynamic Privileges Provides finer grained administrative level access controls for less use of root user ログファイルの透過的暗号化 AES 256 encryption of REDO, UNDO and Binary Log in addition to tablespace files パスワード管理強化 Establish password-reuse policy with Password History, and faster with caching OpenSSL Integration MySQL Community Edition to use OpenSSL as its standard cryptography library
72.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | ユーザーロール MySQLアクセスコントロールの改善 • 8.0.0 DMRで導入されました (5.7: PROXY USER) • ユーザーとアプリケーションの権限管理を容易に • ユーザー/ロールに対してロールの付与 • デフォルトロールを定義 • ROLES_GRAPHML()関数でロール確認 88 Directly In directly Set Role(s) Default Role(s) Set of ACLS Set of ACLS mysql> select user(),current_role(); +------------------+----------------+ | user() | current_role() | +------------------+----------------+ | user01@localhost | `role80`@`%` | +------------------+----------------+ WL#988: Roles https://dev.mysql.com/worklog/task/?id=988
73.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | Role Examples 89
74.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | アトミック ACLステートメント • 長年にわたるMySQLの課題! – レプリケーション、HA、バックアップ等 • ACLテーブルをInnoDB Data Dictionaryに格納 • テーブル操作だけでなく、メモリキャッシュも更新が必要 • 複数の論理演算を実行するステートメントに適用されます 例: – CREATE USER u1, u2 – GRANT SELECT ON *.* TO u1, u2 • ACLのキャッシュとテーブルを変更時 – カスタムMDLロックを使用してACL関連のアクティビティをブロック 90 WL#9045: Make user management DDLs atomic https://dev.mysql.com/worklog/task/?id=9045 +--------------+------------+--------+ | TABLE_SCHEMA | TABLE_NAME | ENGINE | +--------------+------------+--------+ | mysql | user | InnoDB | +--------------+------------+--------+
75.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | InnoDB Redo/Undo 暗号化 • AES 256 暗号化 • Redo/Undoログがディスクに書き出し時に暗号化される • Redo/Undoログがディスクから読み出し時に複合される • メモリ上ではRedo/Undoログデータは暗号化されていない • InnoDB表領域暗号化と同様の2層暗号化鍵管理 – 鍵のローテーションが高速、高パフォーマンス • 容易に使用可能 – システム変数 innodb_redo_log_encrypt, innodb_undo_log_encrypt で制御 91 WL#9289: InnoDB: Support Transparent Data Encryption for Undo Tablespaces https://dev.mysql.com/worklog/task/?id=9289 WL#9290: InnoDB: Support Transparent Data Encryption for Redo Log https://dev.mysql.com/worklog/task/?id=9290
76.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | パスワード強化 • New! パスワード履歴 - より幅広いセキュリティポリシーに対応 – Require new passwords not reuse old ones - By number of changes and/or time. – Establish password-reuse policy globally as well as on a per-account basis. • New! キャッシュ付きHA2 – Strong and Fast – Strong - SHA-256 password hashing (many rounds, seeds, …) – Fast - Caching • Greatly reduces latency • New! より多くのプロトコルのサポート • New! シームレスなRSAパスワード交換 (OpenSSLのリンク不要) 92
77.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | New! Dynamic Privileges Provides finer grained administrative level access controls • Too often super is required for tasks when less privilege is really needed – Support concept of “least privilege” • Needed to allow adding administrative access controls – Now can come with new components – Examples • Replication • HA • Backup • Give us your ideas 93
78.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | Why Dynamic Global Privileges? • How to add a new global privilege (the 5.7 version) – Add a column in mysql.user – Extend the parser – Amend ACL cache code: reading, caching, writing, upgrade, … – Add checks for the new privilege • Not possible from a plugin ! • Abuse of existing privileges (SUPER) ! • The SUPER-potent SUPER ! 94 Feature Request from DBAs
79.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | How Do Dynamic Privileges Work ? • Provides new component service – Can add, remove and check global privileges • Only GRANTs are persisted – Stored in mysql.global_grants • Uses the familiar – GRANT <dynamic_acl> ON *.* TO … syntax 95
80.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. |
Download