38
2016/10/01 OSC2016 - Nagaoka 日本MySQLユーザ会(MyNA) 坂井 恵(@sakaik

いまいまMySQL@OSC2016長岡

  • Upload
    sakaik

  • View
    127

  • Download
    1

Embed Size (px)

Citation preview

Page 1: いまいまMySQL@OSC2016長岡

2016/10/01OSC2016-Nagaoka

日本MySQLユーザ会(MyNA)坂井 恵 (@sakaik )

Page 2: いまいまMySQL@OSC2016長岡

こっちです

Page 3: いまいまMySQL@OSC2016長岡

baserCMSとは

• PHPで書かれた国産CMS

• 「コーポレートサイトにちょうどいい」

• データベースとしてMySQLを使用可能(PostgreSQLも選択可)

Page 4: いまいまMySQL@OSC2016長岡

本当に、こっちです

Page 5: いまいまMySQL@OSC2016長岡

AGENDA

Page 6: いまいまMySQL@OSC2016長岡

Who am I?

• 坂井 恵 (さかい けい)

@sakaik

• 日本MySQLユーザ会(MyNA)副代表

• MySQLは趣味です

• 千葉県から来ました

Page 7: いまいまMySQL@OSC2016長岡

Who am I?

最近、査読でお手伝いさせていただいた本

実際の活用範囲は限定的かもしれない

けれども、たぶんこの本は、

あなたのSQLの【幅】を広げてくれます

-- sakaik, 2016

Page 8: いまいまMySQL@OSC2016長岡

MySQL 5.7 登場

• 2015年10月

• MySQL 5.7.9 ~

• 2016年9月30日現在、MySQL 5.7.15 が最新

• 個人的印象では「MySQL史上最大の進化」

Page 9: いまいまMySQL@OSC2016長岡

5.7に到るまでの道のり

5.7

5.65.1

5.0

6.0

5.55.4

Page 10: いまいまMySQL@OSC2016長岡

5.7に到るまでの道のり

Page 11: いまいまMySQL@OSC2016長岡

詳解MySQL5.7の紹介

Page 12: いまいまMySQL@OSC2016長岡

詳解MySQL5.7の紹介

• 奥野幹也氏著

• 2016年8月刊

• MySQL 5.7の進化部分だけに絞った本

• 背景の説明もしっかりなので、「MySQL Internals」な入門書としてもオススメ

NEW!!

おさかなの本

Page 13: いまいまMySQL@OSC2016長岡

MySQL 5.7 進化の内容

たくさんの進化ポイントがありますが、

要するに、、、、、

• より速く• より安全に• より便利に

Page 14: いまいまMySQL@OSC2016長岡

MySQL 5.7 進化の内容

言い換えると、

• ①速くなった

• ②安全になった。安定性が向上した

• ③機能がいくつか(いくつも)増えた

Page 15: いまいまMySQL@OSC2016長岡

MySQL5.7: ①速度の向上

• 同時実行性能

• 多CPU

• 不要な内部処理の省略

Page 16: いまいまMySQL@OSC2016長岡

MySQL5.7:②安定性の向上

• 主に、障害(突然の電源断)に関する耐久性の向上

• セキュリティ(ユーザ管理等を含む)の仕組みの充実

Page 17: いまいまMySQL@OSC2016長岡

MySQL5.7:③新機能

• JSON対応/ドキュメントストア– JSONデータ型、JSON関数

• GIS機能の整備– GIS関数名の整理と拡充

• レプリケーションの進化– マルチソースレプリケーション– マルチスレッドスレーブ

• 生成カラム(GENERATED COLUMN)• 内部情報を見るしくみの充実

– PERFORMANCE_SCHEMA、sysスキーマ

Page 18: いまいまMySQL@OSC2016長岡

MySQL5.7 新機能:

GENERATED COLUMN日本語で「生成列」とも。

mysql> CREATE TABLE gentest (a int, b int, c int GENERATED ALWAYS AS (a+b));

mysql> INSERT INTO gentest (a,b) values (3,5),(2,9);

mysql> SELECT * FROM gentest;+------+------+------+| a | b | c |+------+------+------+| 3 | 5 | 8 || 2 | 9 | 11 |+------+------+------+

mysql> CREATE TABLE gentest2 (a int, b int, c int GENERATED ALWAYS AS ((a+b)*rand()));

ERROR 3102 (HY000): Expression of generated column 'c' contains a disallowed function.

Page 19: いまいまMySQL@OSC2016長岡

GENERATED COLUMN

col_name data_type [GENERATED ALWAYS]

AS (expression)

[VIRTUAL | STORED]

[UNIQUE [KEY]] [COMMENT comment]

[[NOT] NULL] [[PRIMARY] KEY]

※実は GENERATED ALWAYS 句は省略可能

Page 20: いまいまMySQL@OSC2016長岡

GENERATED COLUMN

col_name data_type [GENERATED ALWAYS]

AS (expression)

[VIRTUAL | STORED]

[UNIQUE [KEY]] [COMMENT comment]

[[NOT] NULL] [[PRIMARY] KEY]

mysql> CREATE TABLE gentest (a int, b int,

c int GENERATED ALWAYS AS (a+b));

mysql> CREATE TABLE gentest (a int, b int,c int AS (a+b));

Page 21: いまいまMySQL@OSC2016長岡

• SQL_MODE: ONLY_FULL_GROUP_BY がデフォルトでオンになった

• 雑なクエリが書けなくなって歓迎!

(きっとどこかで悲鳴が)

SQLモードのデフォルト値

Page 22: いまいまMySQL@OSC2016長岡

例:

SELECT mycode, name, count(*)

FROM tbl1

GROUP BY mycode;

SQL_MODE: ONLY_FULL_GROUP_BY

こんなクエリを書いていませんか?

Page 23: いまいまMySQL@OSC2016長岡

例:

×

SELECT mycode, name, count(*)

FROM tbl1 GROUP BY mycode;

SELECT mycode, name, count(*)

FROM tbl1 GROUP BY mycode, name;

SQL_MODE: ONLY_FULL_GROUP_BY

Page 24: いまいまMySQL@OSC2016長岡

SQL_MODE: ONLY_FULL_GROUP_BY

これで「SQLを勉

強したい人」にもMySQLをお勧めできる!!

Page 25: いまいまMySQL@OSC2016長岡

MySQL 5.7

• SQL_MODE: ONLY_FULL_GROUP_BYがデフォルトでオンになった

SQLモードのデフォルト値(おさらい)

Page 26: いまいまMySQL@OSC2016長岡

MySQL5.7新機能:

ドキュメントストア

ものすごく大雑把に言うと

ガンガン登録したり検索したりできる機能

Page 27: いまいまMySQL@OSC2016長岡

MySQL5.7新機能:

ドキュメントストア

MySQL 5.7.7 RC

MySQL 5.7.8 RC 『JSON型/JSON関数』

MySQL 5.7.9 GA!!

MySQL 5.7.10

MySQL 5.7.11

MySQL 5.7.12 『ドキュメントストア』 突如登場!

Page 28: いまいまMySQL@OSC2016長岡

MySQL5.7新機能:

ドキュメントストア

MySQL 5.7 Reference manual

Page 29: いまいまMySQL@OSC2016長岡

MySQL5.7新機能:

ドキュメントストア

MySQL 5.7 Reference manual

• MySQL 5.7.12 ~

• JSON型/JSON関数のサポート

• X Plugin: 33060ポート

• MySQL Shell (mysqlsh)

Page 30: いまいまMySQL@OSC2016長岡

mysqlshで、python や JavaScript でコマンド

ライン操作が可能

NoSQL的な。

MySQL5.7新機能:

ドキュメントストア

Page 31: いまいまMySQL@OSC2016長岡

情報スキーマ系

INFORMATION_SCHEMA

PERFORMANCE_SCHEMA

Sysスキーマ

Page 32: いまいまMySQL@OSC2016長岡

(再掲)詳解MySQL5.7の紹介

• 奥野幹也氏著

• 2016年8月刊

• MySQL 5.7の進化部分だけに絞った本

• 背景の説明もしっかりなので、「MySQL Internals」な入門書としてもオススメ

NEW!!

おさかなの本

Page 33: いまいまMySQL@OSC2016長岡

あたらしくなった

MySQL 5.7

ぜひお試しください

Page 34: いまいまMySQL@OSC2016長岡
Page 35: いまいまMySQL@OSC2016長岡

One more thing…

Page 36: いまいまMySQL@OSC2016長岡

MySQL

8.0.0

登場(2016/09/12)

Page 37: いまいまMySQL@OSC2016長岡

MySQL 8.0.0

主なトピック

2016年9月12日登場!

• データディクショナリがInnoDBに

• デフォルトのキャラセットがutf8系に?

• CTE(共通表式)

• ロール

http://dev.mysql.com/doc/refman/8.0/en/mysql-nutshell.html

Page 38: いまいまMySQL@OSC2016長岡

ご静聴ありがとうございました