Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
MySQL 5.7 InnoDB
日本語全文検索(その2)
Yoshiaki Yamasaki / 山﨑 由章
MySQL Senior Sales Consultant, Asia Pacific and Japan
updated: 2016/09/30
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
Safe Harbor Statement
以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。
また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはでき
ません。以下の事項は、マテリアルやコード、機能を提供することをコミットメントするも
のではない為、購買決定を行う際の判断材料になさらないで下さい。
オラクル製品に関して記載されている機能の開発、リリースおよび時期については、
弊社の裁量により決定されます。
2
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
前回の資料
• MySQL 5.7 InnoDB 日本語全文検索
http://www.slideshare.net/yoyamasaki/20160209-inno-dbftsjp
3
※次回の資料も以下で公開しています
MySQL 5.7 InnoDB 日本語全文検索(その3)
http://www.slideshare.net/yoyamasaki/20160929-inno-dbftsjp
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
少しだけ復習します
4
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
全文検索機能の仕組み
5
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
全文検索インデックス
• トークンと文章の関係を表現した転置インデックス
6
This movie is
about a boy
going to war.
This movie
is about a
girl starting
an auto-
shop.
This movie is
about
flowers.
a about
an are as
at be by
com de
en for
from
how i in
is it la of
on or
that the
this to
was
what
when
where
who will
with und
the
www
Min
Token
Size
Max
Token
Size
Document 1
Document 2
Document 3
Stop Words Token Size
Full Text / Inverted Index
ID TOKEN DOCUMENT
1 movie 1,2,3
2 boy 1
3 girl 2
4 going 1
5 starting 2
6 war 1
7 auto-shop 2
8 flowers 3
Token FiltersDocuments
Tokenizer
Tokenizer
Indexer
Indexer
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
InnoDB全文検索機能の日本語対応
7
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
全文検索機能の日本語対応とは?
• 日本語の文章を字句解析して、全文検索用のインデックスを作成できる
– 英語などは、スペースを区切り文字として字句解析できるが、
日本語には区切り文字が無いため、追加の字句解析機能が必要
8
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
MySQL 5.7でサポートされた日本語の字句解析方法
• N-gram: 一定の文字数で切りだして字句解析する手法
– デフォルトではbi-gram(2文字単位)
• MeCab:オープンソースの形態素解析エンジン
– 日本語の辞書をベースに字句解析する
9
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
MySQL 5.7での強化点
• N-gramによる日本語、中国語、韓国語サポート
– N文字区切りでトークンを検出
10
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_TABLE ORDER BY doc_id, position LIMIT 10;
+--------+--------------+-------------+-----------+--------+----------+
| WORD | FIRST_DOC_ID | LAST_DOC_ID | DOC_COUNT | DOC_ID | POSITION |
+--------+--------------+-------------+-----------+--------+----------+
| ロー | 1 | 15 | 2 | 1 | 0 |
| ール | 1 | 16 | 3 | 1 | 3 |
| ルと | 1 | 1 | 1 | 1 | 6 |
| とグ | 1 | 1 | 1 | 1 | 9 |
| グル | 1 | 7 | 2 | 1 | 12 |
| ルー | 1 | 16 | 3 | 1 | 15 |
| ープ | 1 | 7 | 2 | 1 | 18 |
| プベ | 1 | 1 | 1 | 1 | 21 |
| 環境 | 1 | 1 | 1 | 1 | 21 |
| ベー | 1 | 7 | 4 | 1 | 24 |
+--------+--------------+-------------+-----------+--------+----------+
10 rows in set (0.01 sec)c
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
MySQL 5.7での強化点
• MeCabによる日本語サポート
– MeCab(オープンソースの日本語辞書)を使ってトークンを検出
11
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_TABLE ORDER BY doc_id, position LIMIT 10;
+--------------------+--------------+-------------+-----------+--------+----------+
| WORD | FIRST_DOC_ID | LAST_DOC_ID | DOC_COUNT | DOC_ID | POSITION |
+--------------------+--------------+-------------+-----------+--------+----------+
| ロール | 1 | 1 | 1 | 1 | 0 |
| グループ | 1 | 7 | 2 | 1 | 12 |
| 環境 | 1 | 1 | 1 | 1 | 21 |
| ベース | 1 | 7 | 2 | 1 | 24 |
| アクセス | 1 | 1 | 1 | 1 | 36 |
| コントロール | 1 | 1 | 1 | 1 | 48 |
| により | 1 | 1 | 1 | 1 | 66 |
| mysql | 1 | 16 | 12 | 1 | 78 |
| dba | 1 | 16 | 4 | 1 | 83 |
| きめ細か | 1 | 1 | 1 | 1 | 91 |
+--------------------+--------------+-------------+-----------+--------+----------+
10 rows in set (0.00 sec)
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
その他
• InnoDB日本語全文検索機能の使用方法は、前回の資料参照
– 事前準備
– 全文検索インデックス作成方法
– 転置インデックス確認方法
• MySQL 5.7では、日本語全文検索がお手軽に使用できる
12
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
復習終わり
13
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
全文検索方法
14
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
全文検索関数を使用して検索する
• 例
15
SELECT * FROM mecab.articles
WHERE MATCH (description)
AGAINST ('ディスク' IN BOOLEAN MODE)¥G
SELECT * FROM mecab.articles
WHERE MATCH (description)
AGAINST ('+ディスク +トレンド' IN BOOLEAN MODE)¥G
SELECT * FROM mecab.articles
WHERE MATCH (description)
AGAINST ('+ディスク -トレンド' IN BOOLEAN MODE)¥G
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 16
全文検索関数
MATCH (col1,col2,...) AGAINST (expr [search_modifier])
search_modifier:
{
IN NATURAL LANGUAGE MODE
| IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION
| IN BOOLEAN MODE
| WITH QUERY EXPANSION
}
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
全文検索の種類
• 自然言語検索
– IN NATURAL LANGUAGE MODE 修飾子を使用
• ブール検索
– IN BOOLEAN MODE 修飾子を使用
– 基本的にブール検索を使用する
• クエリー拡張検索
– IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION 修飾子
または WITH QUERY EXPANSION 修飾子 を使用
– 自然言語検索を拡張したもの
17
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
全文検索の種類
• 自然言語検索
– 検索されるテキストは、検索トークンの和集合に変換される
– 例(MeCabの場合)
• '日本の首都' ⇒ '日本' or 'の' or '首都'
18
mysql> SELECT * FROM articles WHERE MATCH(title)
AGAINST('日本の首都' IN NATURAL LANGUAGE MODE);
+------------+--------------------------------------+
| FTS_DOC_ID | title |
+------------+--------------------------------------+
| 1 | 東京都は日本の首都です |
| 2 | 京都と大阪は日本の府です |
+------------+--------------------------------------+
2 rows in set (0.00 sec)
「首都」が含まれていないものも
検索結果に出てきている
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
全文検索の種類
• ブール検索
– 検索されるテキストは、フレーズ検索に変換される
– 例(MeCabの場合)
• '日本の首都' ⇒ '"日本 の 首都"' ※'日本' ⇒ 'の' ⇒ '首都' の順番に全て一致する文章
19
mysql> SELECT * FROM articles WHERE MATCH(title)
AGAINST('日本の首都' IN BOOLEAN MODE);
+------------+-----------------------------------+
| FTS_DOC_ID | title |
+------------+-----------------------------------+
| 1 | 東京都は日本の首都です |
+------------+-----------------------------------+
1 row in set (0.01 sec)
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
ブール検索
• 検索文字列の先頭または末尾に指定する文字が特別な意味を持つ
• 例)
– + : AND
– - : NOT
– [演算子なし] : 暗黙的にOR
– () : 単語をグループ化する
– > : 関連性ランキングへの単語の貢献度をプラスする
– < : 関連性ランキングへの単語の貢献度をマイナスする
– ~ : 関連性ランキングへの単語の貢献度をマイナスする(ノイズ除去)
20
※参考マニュアル 13.9.2 Boolean Full-Text Searches
https://dev.mysql.com/doc/refman/5.7/en/fulltext-boolean.html
12.9.2 ブール全文検索
https://dev.mysql.com/doc/refman/5.6/ja/fulltext-boolean.html
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
ブール検索の指定例
• '+監視 +パフォーマンス'
– 「監視」と「パフォーマンス」を両方含む
• '+監視 -パフォーマンス'
– 「監視」は含むが「パフォーマンス」は含まない
• '監視 パフォーマンス'
– 「監視」もしくは「パフォーマンス」のいずれかを含む
• '+監視 +(パフォーマンス クラウド)'
– 「監視」を含み、なおかつ「パフォーマンス」もしくは「クラウド」のいずれかを含む
21
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
関連性ランキング
• InnoDBでは TF-IDF のランキングアルゴリズムに基づいて検索ワードと
ドキュメントの関連性にランクが付けられる
– ドキュメントの中で頻繁に出現する単語は重要
(TF:Term Frequency)
– 多くのドキュメントにおいて出現頻度の高い単語は重要では無い
(IDF:Inverse Document Frequency)
• 全文検索機能を使えば、検索ワードと関連性の強いドキュメントを
簡単に探すことが出来る
22
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
関連性ランキングの確認例
23
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
サンプルテーブル
• サンプルテーブルのテーブル定義
– description列にMeCabパーサーを使用して全文検索インデックスを作成
• サンプルテーブルに格納した文章
– MySQL Enterprise Monitorのページ(※)に記載されている説明文をtitle列、
description列に格納
※https://www-jp.mysql.com/products/enterprise/monitor.html
24
mysql> show create table articles¥G
*************************** 1. row ***************************
Table: articles
Create Table: CREATE TABLE `articles` (
`FTS_DOC_ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(100) DEFAULT NULL,
`description` text,
PRIMARY KEY (`FTS_DOC_ID`),
FULLTEXT KEY `mecab_idx` (`description`) /*!50100 WITH PARSER `mecab` */
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4
1 row in set (0.00 sec)
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
サンプルテーブルに格納した文章
25
※格納した文章の一覧を、資料後半のAppendix部分に掲載しています
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
関連性ランキングのスコアの確認例
• 選択リストに全文検索関数を含め、その列でソートする
26
SELECT FTS_DOC_ID,
MATCH (description) AGAINST ('<検索ワード>' IN BOOLEAN MODE) AS score
FROM articles ORDER BY score DESC;
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 27
IDFにより、レア度が考慮される(「監視」で検索)
mysql> SELECT FTS_DOC_ID, MATCH (description) AGAINST ('監視' IN BOOLEAN MODE)
-> AS score FROM articles ORDER BY score DESC;
+------------+---------------------+
| FTS_DOC_ID | score |
+------------+---------------------+
| 3 | 0.07628998160362244 |
| 4 | 0.07628998160362244 |
| 5 | 0.07628998160362244 |
| 6 | 0.07628998160362244 |
| 7 | 0.07628998160362244 |
| 9 | 0.07628998160362244 |
| 11 | 0.07628998160362244 |
| 12 | 0.07628998160362244 |
| 15 | 0.07628998160362244 |
| 1 | 0 |
| 2 | 0 |
| 8 | 0 |
| 10 | 0 |
| 13 | 0 |
| 14 | 0 |
| 16 | 0 |
| 17 | 0 |
+------------+---------------------+
17 rows in set (0.00 sec)
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 28
IDFにより、レア度が考慮される(「クラウド」で検索)
mysql> SELECT FTS_DOC_ID, MATCH (description) AGAINST ('クラウド' IN BOOLEAN MODE)
-> AS score FROM articles ORDER BY score DESC;
+------------+-------------------+
| FTS_DOC_ID | score |
+------------+-------------------+
| 2 | 1.727639079093933 |
| 7 | 1.727639079093933 |
| 1 | 0 |
| 3 | 0 |
| 4 | 0 |
| 5 | 0 |
| 6 | 0 |
| 8 | 0 |
| 9 | 0 |
| 10 | 0 |
| 11 | 0 |
| 12 | 0 |
| 13 | 0 |
| 14 | 0 |
| 15 | 0 |
| 16 | 0 |
| 17 | 0 |
+------------+-------------------+
17 rows in set (0.00 sec)
2つのドキュメントにしか含まれていないため、
スコアが高くなる
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 29
TFにより、出現頻度が考慮される(「パフォーマンス」で検索)
mysql> SELECT FTS_DOC_ID, MATCH (description) AGAINST ('パフォーマンス' IN BOOLEAN MODE)
-> AS score FROM articles ORDER BY score DESC;
+------------+---------------------+
| FTS_DOC_ID | score |
+------------+---------------------+
| 5 | 0.2288699448108673 |
| 11 | 0.15257996320724487 |
| 17 | 0.15257996320724487 |
| 1 | 0.07628998160362244 |
| 8 | 0.07628998160362244 |
| 9 | 0.07628998160362244 |
| 10 | 0.07628998160362244 |
| 12 | 0.07628998160362244 |
| 15 | 0.07628998160362244 |
| 2 | 0 |
| 3 | 0 |
| 4 | 0 |
| 6 | 0 |
| 7 | 0 |
| 13 | 0 |
| 14 | 0 |
| 16 | 0 |
+------------+---------------------+
17 rows in set (0.00 sec)
出現頻度が高いドキュメントはスコアが高くなる
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
TFにより、出現頻度が考慮される(「パフォーマンス」で検索)
30
mysql> SELECT FTS_DOC_ID, description FROM articles WHERE FTS_DOC_ID=5¥G
*************************** 1. row ***************************
FTS_DOC_ID: 5
description: MySQL Enterprise Monitor は MySQL クエリーとパフォーマンス関連のサーバー指標を継続的に監視
します。基準となるパフォーマンスのトレンドから大きな逸脱があった場合にアラートを受信します。また、ベストプラクティス・アドバイ
ザは、パフォーマンスを向上させるための構成やパラメータ設定の変更を提案します。
1 row in set (0.00 sec)
mysql> SELECT FTS_DOC_ID, description FROM articles WHERE FTS_DOC_ID=11¥G
*************************** 1. row ***************************
FTS_DOC_ID: 11
description: MySQL のパフォーマンスに影響を及ぼす重要な InnoDB 指標を監視します。非効率な索引の使用、ロックの
問題、InnoDB バッファ・プール の使用に関するアラートを受信して、現在のパフォーマンスや解析されたトレンドに基づいた
InnoDB 構成を改善する方法についてのヒントを得ることができます。
1 row in set (0.00 sec)
mysql> SELECT FTS_DOC_ID, description FROM articles WHERE FTS_DOC_ID=1¥G
*************************** 1. row ***************************
FTS_DOC_ID: 1
description: MySQL Enterprise Monitorは、自動的にレプリケーション・トポロジを検出し、パフォーマンス、可用性、マ
スター/スレーブの状態を表示します。MySQL 5.7にも対応済みで、レプリケーション・ダッシュボードからレプリケーションの各種指
標を確認できます。また、トポロジ・ビューにより、レプリケーション・グループやレプリケーション構成、それぞれのノードの状態など
を素早く確認できます。単純なレプリケーション構成だけでなく、マルチソース・レプリケーションや、循環型、階層型といった複雑な
構成にも対応しています。
1 row in set (0.00 sec)
3回含まれている
2回含まれている
1回含まれている
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31
重みづけの変更例
mysql> SELECT FTS_DOC_ID, MATCH (description) AGAINST ('+パフォーマンス' IN BOOLEAN MODE)
-> AS score FROM articles ORDER BY score DESC;
+------------+---------------------+
| FTS_DOC_ID | score |
+------------+---------------------+
| 5 | 0.2288699448108673 |
| 11 | 0.15257996320724487 |
| 17 | 0.15257996320724487 |
| 1 | 0.07628998160362244 |
| 8 | 0.07628998160362244 |
| 9 | 0.07628998160362244 |
| 10 | 0.07628998160362244 |
| 12 | 0.07628998160362244 |
| 15 | 0.07628998160362244 |
| 2 | 0 |
<中略>
| 16 | 0 |
+------------+---------------------+
17 rows in set (0.00 sec)
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 32
重みづけの変更例(「クエリー」を含むドキュメントのスコアを上げる)
mysql> SELECT FTS_DOC_ID, MATCH (description)
-> AGAINST ('+パフォーマンス >クエリー' IN BOOLEAN MODE) AS score
-> FROM articles ORDER BY score DESC;
+------------+---------------------+
| FTS_DOC_ID | score |
+------------+---------------------+
| 10 | 2.803929090499878 |
| 5 | 2.0926895141601562 |
| 11 | 0.15257996320724487 |
| 17 | 0.15257996320724487 |
| 1 | 0.07628998160362244 |
| 8 | 0.07628998160362244 |
| 9 | 0.07628998160362244 |
| 12 | 0.07628998160362244 |
| 15 | 0.07628998160362244 |
| 2 | 0 |
<中略>
| 16 | 0 |
+------------+---------------------+
17 rows in set (0.00 sec)
「クエリー」が含まれるドキュメントのスコアが上がる
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 33
重みづけの変更例(「クエリー」を含むドキュメントのスコアを上げる)
mysql> SELECT FTS_DOC_ID, description FROM articles WHERE FTS_DOC_ID=5¥G
*************************** 1. row ***************************
FTS_DOC_ID: 5
description: MySQL Enterprise Monitor は MySQL クエリーとパフォーマンス関連のサーバー指標を継続的に監視
します。基準となるパフォーマンスのトレンドから大きな逸脱があった場合にアラートを受信します。また、ベストプラクティス・アドバイ
ザは、パフォーマンスを向上させるための構成やパラメータ設定の変更を提案します。
1 row in set (0.00 sec)
mysql>
mysql> SELECT FTS_DOC_ID, description FROM articles WHERE FTS_DOC_ID=10¥G
*************************** 1. row ***************************
FTS_DOC_ID: 10
description: 開発者および DBA は、相関グラフを使用して実行時パラメータ(サーバー負荷、スレッド統計、RAM 使用状況
など)を、その時点で実行中であったクエリーと比較できます。グラフ上のタイムスライスを強調表示するだけで、もっとも負荷のかか
るクエリーを発見し、より大きなパフォーマンス問題の潜在的な原因を特定します。
1 row in set (0.00 sec)
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 34
重みづけの変更例(「ロック」を含むドキュメントのスコアを下げる)
mysql> SELECT FTS_DOC_ID, MATCH (description)
-> AGAINST ('+パフォーマンス >クエリー <ロック' IN BOOLEAN MODE) AS score
-> FROM articles ORDER BY score DESC;
+------------+----------------------+
| FTS_DOC_ID | score |
+------------+----------------------+
| 10 | 2.803929090499878 |
| 5 | 2.0926895141601562 |
| 17 | 0.15257996320724487 |
| 1 | 0.07628998160362244 |
| 8 | 0.07628998160362244 |
| 9 | 0.07628998160362244 |
| 12 | 0.07628998160362244 |
| 15 | 0.07628998160362244 |
| 11 | 0.016399502754211426 |
| 2 | 0 |
<中略>
| 16 | 0 |
+------------+----------------------+
17 rows in set (0.00 sec)
「ロック」が含まれるドキュメントのスコアが下がる
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 35
重みづけの変更例(「ロック」を含むドキュメントのスコアを下げる)
mysql> SELECT FTS_DOC_ID, description FROM articles WHERE FTS_DOC_ID=11¥G
*************************** 1. row ***************************
FTS_DOC_ID: 11
description: MySQL のパフォーマンスに影響を及ぼす重要な InnoDB 指標を監視します。非効率な索引の使用、ロックの
問題、InnoDB バッファ・プール の使用に関するアラートを受信して、現在のパフォーマンスや解析されたトレンドに基づいた
InnoDB 構成を改善する方法についてのヒントを得ることができます。
1 row in set (0.00 sec)
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 36
「<」と「~」の違い
mysql> SELECT FTS_DOC_ID, MATCH (description) AGAINST ('監視 <パフォーマンス' IN BOOLEAN MODE)
AS score FROM articles ORDER BY score DESC;
+------------+---------------------+
| FTS_DOC_ID | score |
+------------+---------------------+
| 3 | 0.07628998160362244 |
| 4 | 0.07628998160362244 |
<中略>
| 14 | 0 |
| 16 | 0 |
| 5 | -0.6948400735855103 |
| 11 | -0.7711300253868103 |
| 9 | -0.8474199771881104 |
| 12 | -0.8474199771881104 |
| 15 | -0.8474199771881104 |
| 17 | -0.8474200367927551 |
| 1 | -0.9237099885940552 |
| 8 | -0.9237099885940552 |
| 10 | -0.9237099885940552 |
+------------+---------------------+
17 rows in set (0.00 sec)
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 37
「<」と「~」の違い
mysql> SELECT FTS_DOC_ID, MATCH (description) AGAINST ('監視 ~パフォーマンス' IN BOOLEAN MODE)
AS score FROM articles ORDER BY score DESC;
+------------+---------------------+
| FTS_DOC_ID | score |
+------------+---------------------+
| 3 | 0.07628998160362244 |
| 4 | 0.07628998160362244 |
<中略>
| 8 | 0 |
| 10 | 0 |
| 13 | 0 |
| 14 | 0 |
| 16 | 0 |
| 17 | 0 |
| 5 | -0.6948400735855103 |
| 11 | -0.7711300253868103 |
| 9 | -0.8474199771881104 |
| 12 | -0.8474199771881104 |
| 15 | -0.8474199771881104 |
+------------+---------------------+
17 rows in set (0.00 sec)
「パフォーマンス」が含まれていても、「監視」が
含まれていないドキュメントのスコアは下がらない
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 38
「<」と「~」の違い
mysql> SELECT FTS_DOC_ID, description FROM articles WHERE FTS_DOC_ID=12¥G
*************************** 1. row ***************************
FTS_DOC_ID: 12
description: パフォーマンスと可用性に影響を及ぼす重要な MySQL Cluster 指標を監視します。グラフを通じて履歴情
報を確認し、データ・ノードのキャッシュ・ヒット率が低い、データ・メモリが枯渇しそうである、ノード障害が発生しそうであるといった潜
在的な問題に関するアラートを受信できます。
1 row in set (0.00 sec)
mysql>
mysql> SELECT FTS_DOC_ID, description FROM articles WHERE FTS_DOC_ID=10¥G
*************************** 1. row ***************************
FTS_DOC_ID: 10
description: 開発者および DBA は、相関グラフを使用して実行時パラメータ(サーバー負荷、スレッド統計、RAM 使用状況
など)を、その時点で実行中であったクエリーと比較できます。グラフ上のタイムスライスを強調表示するだけで、もっとも負荷のかか
るクエリーを発見し、より大きなパフォーマンス問題の潜在的な原因を特定します。
1 row in set (0.00 sec)
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
Appendix
39
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 40
サンプルテーブルに格納した文章
mysql> SELECT * FROM mecab.articles¥G
*************************** 1. row ***************************
FTS_DOC_ID: 1
title: レプリケーション・ダッシュボード
description: MySQL Enterprise Monitorは、自動的にレプリケーション・トポロジを検出し、パフォーマンス、可用性、マ
スター/スレーブの状態を表示します。MySQL 5.7にも対応済みで、レプリケーション・ダッシュボードからレプリケーションの各種指
標を確認できます。また、トポロジ・ビューにより、レプリケーション・グループやレプリケーション構成、それぞれのノードの状態など
を素早く確認できます。単純なレプリケーション構成だけでなく、マルチソース・レプリケーションや、循環型、階層型といった複雑な
構成にも対応しています。
*************************** 2. row ***************************
FTS_DOC_ID: 2
title: アクセス制御リスト (ACLs)
description: ロールとグループベースのアクセスコントロールにより、MySQL DBA にきめ細かなセキュリティポリシーを定義
するための簡単な方法を提供します。アクセス制御リストは、MySQL Enterprise Monitor をマルチテナント環境やクラウド環
境で使用している場合のアカウント管理を簡素化します。
*************************** 3. row ***************************
FTS_DOC_ID: 3
title: MySQL Enterprise Firewall 監視
description: グラフとレポートから MySQL Enterprise Firewall のアクティビティを容易に監視でき、MySQL
Server を特定のデータベース攻撃から守ることに役立ちます。ベスト・プラクティス・アドバイザーは、潜在的なセキュリティの脅威
を検知した時に警告を通知し、MySQL Enterprise Firewall や関連するセキュリティ設定の変更を推奨します。
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 41
サンプルテーブルに格納した文章
*************************** 4. row ***************************
FTS_DOC_ID: 4
title: MySQL Enterprise Audit 監視
description: 全てのMySQLサーバーにわたって、MySQL Enterprise Audit の状況を監視します。ベスト・プラクティス・
アドバイザーは、HIPAA、SOX 法、および PCI データセキュリティ基準などの一般的なセキュリティポリシーにおいて、企業の法
令遵守を支援します。
*************************** 5. row ***************************
FTS_DOC_ID: 5
title: MySQL パフォーマンスのリアルタイム監視およびアラート生成
description: MySQL Enterprise Monitor は MySQL クエリーとパフォーマンス関連のサーバー指標を継続的に監視
します。基準となるパフォーマンスのトレンドから大きな逸脱があった場合にアラートを受信します。また、ベストプラクティス・アドバイ
ザは、パフォーマンスを向上させるための構成やパラメータ設定の変更を提案します。
*************************** 6. row ***************************
FTS_DOC_ID: 6
title: MySQL の可用性に関するリアルタイム監視
description: 開発者および DBA は、データベース可用性の監視と測定によって、品質保証契約 (SLA) のコミットメントを満
たしているかを把握できます。
*************************** 7. row ***************************
FTS_DOC_ID: 7
title: クラウドにおける MySQL のリモート監視
description: クラウドおよび VM に対応した設計になっており、リモート・エージェントを必要とせずに、MySQL サーバーをリ
モートで監視できます。
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 42
サンプルテーブルに格納した文章
*************************** 8. row ***************************
FTS_DOC_ID: 8
title: すべての MySQL サーバーを視覚的に管理
description: Visual Dashboard は Web ベースのインタフェースで、データベースのパフォーマンス、可用性、重大イベ
ントなどを全体的に詳しく確認できます。1台のサーバー、カスタム・グループ、またはすべてのサーバーを視覚的に調べます。リア
ルタイム情報や履歴情報の豊富なグラフを使用して、サーバー統計の詳細情報にまでドリルダウンできます。
*************************** 9. row ***************************
FTS_DOC_ID: 9
title: 視覚的にクエリーを解析
description: クエリー・パフォーマンスのリアルタイム監視、実行時統計の確認、遅延の原因になっている SQL コードのフィ
ルタリングと特定が可能です。 MySQL Server 5.6 のパフォーマンス・スキーマを使用すれば、ソフトウェアや構成を追加する
ことなく、データが MySQL サーバーから直接収集されます。
*************************** 10. row ***************************
FTS_DOC_ID: 10
title: 負荷の大きいクエリーの発見と修正
description: 開発者および DBA は、相関グラフを使用して実行時パラメータ(サーバー負荷、スレッド統計、RAM 使用状況
など)を、その時点で実行中であったクエリーと比較できます。グラフ上のタイムスライスを強調表示するだけで、もっとも負荷のかか
るクエリーを発見し、より大きなパフォーマンス問題の潜在的な原因を特定します。
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 43
サンプルテーブルに格納した文章
*************************** 11. row ***************************
FTS_DOC_ID: 11
title: InnoDB の監視
description: MySQL のパフォーマンスに影響を及ぼす重要な InnoDB 指標を監視します。非効率な索引の使用、ロックの
問題、InnoDB バッファ・プール の使用に関するアラートを受信して、現在のパフォーマンスや解析されたトレンドに基づいた
InnoDB 構成を改善する方法についてのヒントを得ることができます。
*************************** 12. row ***************************
FTS_DOC_ID: 12
title: MySQL Cluster の監視
description: パフォーマンスと可用性に影響を及ぼす重要な MySQL Cluster 指標を監視します。グラフを通じて履歴情
報を確認し、データ・ノードのキャッシュ・ヒット率が低い、データ・メモリが枯渇しそうである、ノード障害が発生しそうであるといった潜
在的な問題に関するアラートを受信できます。
*************************** 13. row ***************************
FTS_DOC_ID: 13
title: バックアップの監視
description: MySQL ベストプラクティス・アドバイザは、オンライン・ホット・バックアップが想定どおり実行することを支援し、"
前回の全体バックアップは古すぎるか?"、"増分バックアップは実行中か?"、"前回のバックアップ・ジョブは成功したか?"、"
バックアップのロックの時間が長すぎるか?"などの疑問に回答します。
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 44
サンプルテーブルに格納した文章
*************************** 14. row ***************************
FTS_DOC_ID: 14
title: ディスクの監視
description: トレンドの解析と計画によって、今後必要になる容量を管理者が予測できるようにします。MySQL Enterprise
Monitor は、"ディスク領域が12か月後に一杯になる場合に通知する"といったユーザーが定義したしきい値に基づいて、運用ス
タッフに予防的なアラートを送信します。
*************************** 15. row ***************************
FTS_DOC_ID: 15
title: オペレーティング・システムの監視
description: ロードアベレージ、CPU 使用状況、RAM 使用状況、スワップ使用状況、ファイルシステム使用状況、ディスク
I/O など、オペレーティング・システムレベルのパフォーマンス指標を視覚的にリアルタイムで監視します。
*************************** 16. row ***************************
FTS_DOC_ID: 16
title: セキュリティ上のぜい弱性の特定
description: MySQL Enterprise Monitor は MySQL サーバーを保護し、開発者と DBA がセキュリティ・ホールを発
見し、それに対応するための支援をします。アドバイザによって、 MySQL のセキュリティに関するベストプラクティスを実施するた
めに設計された一連のルールが提供され、潜在的なぜい弱性がシステムに影響を及ぼす前にアラートを送信します。
*************************** 17. row ***************************
FTS_DOC_ID: 17
title: 開発中およびテスト中のチューニングを迅速化
description: 開発中およびテスト中のパフォーマンスに関する問題を発見するまでにかかる時間を大幅に短縮することで、ア
プリケーションをより迅速に本番運用できます。ユーザーよりも先にパフォーマンスの問題を特定して修正できます。
17 rows in set (0.00 sec)
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 45
MySQL 5.7 InnoDB 日本語全文検索(その2)

More Related Content

MySQL 5.7 InnoDB 日本語全文検索(その2)

  • 1. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | MySQL 5.7 InnoDB 日本語全文検索(その2) Yoshiaki Yamasaki / 山﨑 由章 MySQL Senior Sales Consultant, Asia Pacific and Japan updated: 2016/09/30
  • 2. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. Safe Harbor Statement 以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。 また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはでき ません。以下の事項は、マテリアルやコード、機能を提供することをコミットメントするも のではない為、購買決定を行う際の判断材料になさらないで下さい。 オラクル製品に関して記載されている機能の開発、リリースおよび時期については、 弊社の裁量により決定されます。 2
  • 3. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 前回の資料 • MySQL 5.7 InnoDB 日本語全文検索 http://www.slideshare.net/yoyamasaki/20160209-inno-dbftsjp 3 ※次回の資料も以下で公開しています MySQL 5.7 InnoDB 日本語全文検索(その3) http://www.slideshare.net/yoyamasaki/20160929-inno-dbftsjp
  • 4. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 少しだけ復習します 4
  • 5. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 全文検索機能の仕組み 5
  • 6. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 全文検索インデックス • トークンと文章の関係を表現した転置インデックス 6 This movie is about a boy going to war. This movie is about a girl starting an auto- shop. This movie is about flowers. a about an are as at be by com de en for from how i in is it la of on or that the this to was what when where who will with und the www Min Token Size Max Token Size Document 1 Document 2 Document 3 Stop Words Token Size Full Text / Inverted Index ID TOKEN DOCUMENT 1 movie 1,2,3 2 boy 1 3 girl 2 4 going 1 5 starting 2 6 war 1 7 auto-shop 2 8 flowers 3 Token FiltersDocuments Tokenizer Tokenizer Indexer Indexer
  • 7. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. InnoDB全文検索機能の日本語対応 7
  • 8. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 全文検索機能の日本語対応とは? • 日本語の文章を字句解析して、全文検索用のインデックスを作成できる – 英語などは、スペースを区切り文字として字句解析できるが、 日本語には区切り文字が無いため、追加の字句解析機能が必要 8
  • 9. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. MySQL 5.7でサポートされた日本語の字句解析方法 • N-gram: 一定の文字数で切りだして字句解析する手法 – デフォルトではbi-gram(2文字単位) • MeCab:オープンソースの形態素解析エンジン – 日本語の辞書をベースに字句解析する 9
  • 10. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. MySQL 5.7での強化点 • N-gramによる日本語、中国語、韓国語サポート – N文字区切りでトークンを検出 10 mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_TABLE ORDER BY doc_id, position LIMIT 10; +--------+--------------+-------------+-----------+--------+----------+ | WORD | FIRST_DOC_ID | LAST_DOC_ID | DOC_COUNT | DOC_ID | POSITION | +--------+--------------+-------------+-----------+--------+----------+ | ロー | 1 | 15 | 2 | 1 | 0 | | ール | 1 | 16 | 3 | 1 | 3 | | ルと | 1 | 1 | 1 | 1 | 6 | | とグ | 1 | 1 | 1 | 1 | 9 | | グル | 1 | 7 | 2 | 1 | 12 | | ルー | 1 | 16 | 3 | 1 | 15 | | ープ | 1 | 7 | 2 | 1 | 18 | | プベ | 1 | 1 | 1 | 1 | 21 | | 環境 | 1 | 1 | 1 | 1 | 21 | | ベー | 1 | 7 | 4 | 1 | 24 | +--------+--------------+-------------+-----------+--------+----------+ 10 rows in set (0.01 sec)c
  • 11. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. MySQL 5.7での強化点 • MeCabによる日本語サポート – MeCab(オープンソースの日本語辞書)を使ってトークンを検出 11 mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_TABLE ORDER BY doc_id, position LIMIT 10; +--------------------+--------------+-------------+-----------+--------+----------+ | WORD | FIRST_DOC_ID | LAST_DOC_ID | DOC_COUNT | DOC_ID | POSITION | +--------------------+--------------+-------------+-----------+--------+----------+ | ロール | 1 | 1 | 1 | 1 | 0 | | グループ | 1 | 7 | 2 | 1 | 12 | | 環境 | 1 | 1 | 1 | 1 | 21 | | ベース | 1 | 7 | 2 | 1 | 24 | | アクセス | 1 | 1 | 1 | 1 | 36 | | コントロール | 1 | 1 | 1 | 1 | 48 | | により | 1 | 1 | 1 | 1 | 66 | | mysql | 1 | 16 | 12 | 1 | 78 | | dba | 1 | 16 | 4 | 1 | 83 | | きめ細か | 1 | 1 | 1 | 1 | 91 | +--------------------+--------------+-------------+-----------+--------+----------+ 10 rows in set (0.00 sec)
  • 12. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. その他 • InnoDB日本語全文検索機能の使用方法は、前回の資料参照 – 事前準備 – 全文検索インデックス作成方法 – 転置インデックス確認方法 • MySQL 5.7では、日本語全文検索がお手軽に使用できる 12
  • 13. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 復習終わり 13
  • 14. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 全文検索方法 14
  • 15. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 全文検索関数を使用して検索する • 例 15 SELECT * FROM mecab.articles WHERE MATCH (description) AGAINST ('ディスク' IN BOOLEAN MODE)¥G SELECT * FROM mecab.articles WHERE MATCH (description) AGAINST ('+ディスク +トレンド' IN BOOLEAN MODE)¥G SELECT * FROM mecab.articles WHERE MATCH (description) AGAINST ('+ディスク -トレンド' IN BOOLEAN MODE)¥G
  • 16. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 16 全文検索関数 MATCH (col1,col2,...) AGAINST (expr [search_modifier]) search_modifier: { IN NATURAL LANGUAGE MODE | IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION | IN BOOLEAN MODE | WITH QUERY EXPANSION }
  • 17. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 全文検索の種類 • 自然言語検索 – IN NATURAL LANGUAGE MODE 修飾子を使用 • ブール検索 – IN BOOLEAN MODE 修飾子を使用 – 基本的にブール検索を使用する • クエリー拡張検索 – IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION 修飾子 または WITH QUERY EXPANSION 修飾子 を使用 – 自然言語検索を拡張したもの 17
  • 18. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 全文検索の種類 • 自然言語検索 – 検索されるテキストは、検索トークンの和集合に変換される – 例(MeCabの場合) • '日本の首都' ⇒ '日本' or 'の' or '首都' 18 mysql> SELECT * FROM articles WHERE MATCH(title) AGAINST('日本の首都' IN NATURAL LANGUAGE MODE); +------------+--------------------------------------+ | FTS_DOC_ID | title | +------------+--------------------------------------+ | 1 | 東京都は日本の首都です | | 2 | 京都と大阪は日本の府です | +------------+--------------------------------------+ 2 rows in set (0.00 sec) 「首都」が含まれていないものも 検索結果に出てきている
  • 19. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 全文検索の種類 • ブール検索 – 検索されるテキストは、フレーズ検索に変換される – 例(MeCabの場合) • '日本の首都' ⇒ '"日本 の 首都"' ※'日本' ⇒ 'の' ⇒ '首都' の順番に全て一致する文章 19 mysql> SELECT * FROM articles WHERE MATCH(title) AGAINST('日本の首都' IN BOOLEAN MODE); +------------+-----------------------------------+ | FTS_DOC_ID | title | +------------+-----------------------------------+ | 1 | 東京都は日本の首都です | +------------+-----------------------------------+ 1 row in set (0.01 sec)
  • 20. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. ブール検索 • 検索文字列の先頭または末尾に指定する文字が特別な意味を持つ • 例) – + : AND – - : NOT – [演算子なし] : 暗黙的にOR – () : 単語をグループ化する – > : 関連性ランキングへの単語の貢献度をプラスする – < : 関連性ランキングへの単語の貢献度をマイナスする – ~ : 関連性ランキングへの単語の貢献度をマイナスする(ノイズ除去) 20 ※参考マニュアル 13.9.2 Boolean Full-Text Searches https://dev.mysql.com/doc/refman/5.7/en/fulltext-boolean.html 12.9.2 ブール全文検索 https://dev.mysql.com/doc/refman/5.6/ja/fulltext-boolean.html
  • 21. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. ブール検索の指定例 • '+監視 +パフォーマンス' – 「監視」と「パフォーマンス」を両方含む • '+監視 -パフォーマンス' – 「監視」は含むが「パフォーマンス」は含まない • '監視 パフォーマンス' – 「監視」もしくは「パフォーマンス」のいずれかを含む • '+監視 +(パフォーマンス クラウド)' – 「監視」を含み、なおかつ「パフォーマンス」もしくは「クラウド」のいずれかを含む 21
  • 22. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 関連性ランキング • InnoDBでは TF-IDF のランキングアルゴリズムに基づいて検索ワードと ドキュメントの関連性にランクが付けられる – ドキュメントの中で頻繁に出現する単語は重要 (TF:Term Frequency) – 多くのドキュメントにおいて出現頻度の高い単語は重要では無い (IDF:Inverse Document Frequency) • 全文検索機能を使えば、検索ワードと関連性の強いドキュメントを 簡単に探すことが出来る 22
  • 23. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 関連性ランキングの確認例 23
  • 24. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. サンプルテーブル • サンプルテーブルのテーブル定義 – description列にMeCabパーサーを使用して全文検索インデックスを作成 • サンプルテーブルに格納した文章 – MySQL Enterprise Monitorのページ(※)に記載されている説明文をtitle列、 description列に格納 ※https://www-jp.mysql.com/products/enterprise/monitor.html 24 mysql> show create table articles¥G *************************** 1. row *************************** Table: articles Create Table: CREATE TABLE `articles` ( `FTS_DOC_ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(100) DEFAULT NULL, `description` text, PRIMARY KEY (`FTS_DOC_ID`), FULLTEXT KEY `mecab_idx` (`description`) /*!50100 WITH PARSER `mecab` */ ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 1 row in set (0.00 sec)
  • 25. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. サンプルテーブルに格納した文章 25 ※格納した文章の一覧を、資料後半のAppendix部分に掲載しています
  • 26. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 関連性ランキングのスコアの確認例 • 選択リストに全文検索関数を含め、その列でソートする 26 SELECT FTS_DOC_ID, MATCH (description) AGAINST ('<検索ワード>' IN BOOLEAN MODE) AS score FROM articles ORDER BY score DESC;
  • 27. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 27 IDFにより、レア度が考慮される(「監視」で検索) mysql> SELECT FTS_DOC_ID, MATCH (description) AGAINST ('監視' IN BOOLEAN MODE) -> AS score FROM articles ORDER BY score DESC; +------------+---------------------+ | FTS_DOC_ID | score | +------------+---------------------+ | 3 | 0.07628998160362244 | | 4 | 0.07628998160362244 | | 5 | 0.07628998160362244 | | 6 | 0.07628998160362244 | | 7 | 0.07628998160362244 | | 9 | 0.07628998160362244 | | 11 | 0.07628998160362244 | | 12 | 0.07628998160362244 | | 15 | 0.07628998160362244 | | 1 | 0 | | 2 | 0 | | 8 | 0 | | 10 | 0 | | 13 | 0 | | 14 | 0 | | 16 | 0 | | 17 | 0 | +------------+---------------------+ 17 rows in set (0.00 sec)
  • 28. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 28 IDFにより、レア度が考慮される(「クラウド」で検索) mysql> SELECT FTS_DOC_ID, MATCH (description) AGAINST ('クラウド' IN BOOLEAN MODE) -> AS score FROM articles ORDER BY score DESC; +------------+-------------------+ | FTS_DOC_ID | score | +------------+-------------------+ | 2 | 1.727639079093933 | | 7 | 1.727639079093933 | | 1 | 0 | | 3 | 0 | | 4 | 0 | | 5 | 0 | | 6 | 0 | | 8 | 0 | | 9 | 0 | | 10 | 0 | | 11 | 0 | | 12 | 0 | | 13 | 0 | | 14 | 0 | | 15 | 0 | | 16 | 0 | | 17 | 0 | +------------+-------------------+ 17 rows in set (0.00 sec) 2つのドキュメントにしか含まれていないため、 スコアが高くなる
  • 29. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 29 TFにより、出現頻度が考慮される(「パフォーマンス」で検索) mysql> SELECT FTS_DOC_ID, MATCH (description) AGAINST ('パフォーマンス' IN BOOLEAN MODE) -> AS score FROM articles ORDER BY score DESC; +------------+---------------------+ | FTS_DOC_ID | score | +------------+---------------------+ | 5 | 0.2288699448108673 | | 11 | 0.15257996320724487 | | 17 | 0.15257996320724487 | | 1 | 0.07628998160362244 | | 8 | 0.07628998160362244 | | 9 | 0.07628998160362244 | | 10 | 0.07628998160362244 | | 12 | 0.07628998160362244 | | 15 | 0.07628998160362244 | | 2 | 0 | | 3 | 0 | | 4 | 0 | | 6 | 0 | | 7 | 0 | | 13 | 0 | | 14 | 0 | | 16 | 0 | +------------+---------------------+ 17 rows in set (0.00 sec) 出現頻度が高いドキュメントはスコアが高くなる
  • 30. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. TFにより、出現頻度が考慮される(「パフォーマンス」で検索) 30 mysql> SELECT FTS_DOC_ID, description FROM articles WHERE FTS_DOC_ID=5¥G *************************** 1. row *************************** FTS_DOC_ID: 5 description: MySQL Enterprise Monitor は MySQL クエリーとパフォーマンス関連のサーバー指標を継続的に監視 します。基準となるパフォーマンスのトレンドから大きな逸脱があった場合にアラートを受信します。また、ベストプラクティス・アドバイ ザは、パフォーマンスを向上させるための構成やパラメータ設定の変更を提案します。 1 row in set (0.00 sec) mysql> SELECT FTS_DOC_ID, description FROM articles WHERE FTS_DOC_ID=11¥G *************************** 1. row *************************** FTS_DOC_ID: 11 description: MySQL のパフォーマンスに影響を及ぼす重要な InnoDB 指標を監視します。非効率な索引の使用、ロックの 問題、InnoDB バッファ・プール の使用に関するアラートを受信して、現在のパフォーマンスや解析されたトレンドに基づいた InnoDB 構成を改善する方法についてのヒントを得ることができます。 1 row in set (0.00 sec) mysql> SELECT FTS_DOC_ID, description FROM articles WHERE FTS_DOC_ID=1¥G *************************** 1. row *************************** FTS_DOC_ID: 1 description: MySQL Enterprise Monitorは、自動的にレプリケーション・トポロジを検出し、パフォーマンス、可用性、マ スター/スレーブの状態を表示します。MySQL 5.7にも対応済みで、レプリケーション・ダッシュボードからレプリケーションの各種指 標を確認できます。また、トポロジ・ビューにより、レプリケーション・グループやレプリケーション構成、それぞれのノードの状態など を素早く確認できます。単純なレプリケーション構成だけでなく、マルチソース・レプリケーションや、循環型、階層型といった複雑な 構成にも対応しています。 1 row in set (0.00 sec) 3回含まれている 2回含まれている 1回含まれている
  • 31. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 重みづけの変更例 mysql> SELECT FTS_DOC_ID, MATCH (description) AGAINST ('+パフォーマンス' IN BOOLEAN MODE) -> AS score FROM articles ORDER BY score DESC; +------------+---------------------+ | FTS_DOC_ID | score | +------------+---------------------+ | 5 | 0.2288699448108673 | | 11 | 0.15257996320724487 | | 17 | 0.15257996320724487 | | 1 | 0.07628998160362244 | | 8 | 0.07628998160362244 | | 9 | 0.07628998160362244 | | 10 | 0.07628998160362244 | | 12 | 0.07628998160362244 | | 15 | 0.07628998160362244 | | 2 | 0 | <中略> | 16 | 0 | +------------+---------------------+ 17 rows in set (0.00 sec)
  • 32. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 32 重みづけの変更例(「クエリー」を含むドキュメントのスコアを上げる) mysql> SELECT FTS_DOC_ID, MATCH (description) -> AGAINST ('+パフォーマンス >クエリー' IN BOOLEAN MODE) AS score -> FROM articles ORDER BY score DESC; +------------+---------------------+ | FTS_DOC_ID | score | +------------+---------------------+ | 10 | 2.803929090499878 | | 5 | 2.0926895141601562 | | 11 | 0.15257996320724487 | | 17 | 0.15257996320724487 | | 1 | 0.07628998160362244 | | 8 | 0.07628998160362244 | | 9 | 0.07628998160362244 | | 12 | 0.07628998160362244 | | 15 | 0.07628998160362244 | | 2 | 0 | <中略> | 16 | 0 | +------------+---------------------+ 17 rows in set (0.00 sec) 「クエリー」が含まれるドキュメントのスコアが上がる
  • 33. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 33 重みづけの変更例(「クエリー」を含むドキュメントのスコアを上げる) mysql> SELECT FTS_DOC_ID, description FROM articles WHERE FTS_DOC_ID=5¥G *************************** 1. row *************************** FTS_DOC_ID: 5 description: MySQL Enterprise Monitor は MySQL クエリーとパフォーマンス関連のサーバー指標を継続的に監視 します。基準となるパフォーマンスのトレンドから大きな逸脱があった場合にアラートを受信します。また、ベストプラクティス・アドバイ ザは、パフォーマンスを向上させるための構成やパラメータ設定の変更を提案します。 1 row in set (0.00 sec) mysql> mysql> SELECT FTS_DOC_ID, description FROM articles WHERE FTS_DOC_ID=10¥G *************************** 1. row *************************** FTS_DOC_ID: 10 description: 開発者および DBA は、相関グラフを使用して実行時パラメータ(サーバー負荷、スレッド統計、RAM 使用状況 など)を、その時点で実行中であったクエリーと比較できます。グラフ上のタイムスライスを強調表示するだけで、もっとも負荷のかか るクエリーを発見し、より大きなパフォーマンス問題の潜在的な原因を特定します。 1 row in set (0.00 sec)
  • 34. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 34 重みづけの変更例(「ロック」を含むドキュメントのスコアを下げる) mysql> SELECT FTS_DOC_ID, MATCH (description) -> AGAINST ('+パフォーマンス >クエリー <ロック' IN BOOLEAN MODE) AS score -> FROM articles ORDER BY score DESC; +------------+----------------------+ | FTS_DOC_ID | score | +------------+----------------------+ | 10 | 2.803929090499878 | | 5 | 2.0926895141601562 | | 17 | 0.15257996320724487 | | 1 | 0.07628998160362244 | | 8 | 0.07628998160362244 | | 9 | 0.07628998160362244 | | 12 | 0.07628998160362244 | | 15 | 0.07628998160362244 | | 11 | 0.016399502754211426 | | 2 | 0 | <中略> | 16 | 0 | +------------+----------------------+ 17 rows in set (0.00 sec) 「ロック」が含まれるドキュメントのスコアが下がる
  • 35. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 35 重みづけの変更例(「ロック」を含むドキュメントのスコアを下げる) mysql> SELECT FTS_DOC_ID, description FROM articles WHERE FTS_DOC_ID=11¥G *************************** 1. row *************************** FTS_DOC_ID: 11 description: MySQL のパフォーマンスに影響を及ぼす重要な InnoDB 指標を監視します。非効率な索引の使用、ロックの 問題、InnoDB バッファ・プール の使用に関するアラートを受信して、現在のパフォーマンスや解析されたトレンドに基づいた InnoDB 構成を改善する方法についてのヒントを得ることができます。 1 row in set (0.00 sec)
  • 36. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 36 「<」と「~」の違い mysql> SELECT FTS_DOC_ID, MATCH (description) AGAINST ('監視 <パフォーマンス' IN BOOLEAN MODE) AS score FROM articles ORDER BY score DESC; +------------+---------------------+ | FTS_DOC_ID | score | +------------+---------------------+ | 3 | 0.07628998160362244 | | 4 | 0.07628998160362244 | <中略> | 14 | 0 | | 16 | 0 | | 5 | -0.6948400735855103 | | 11 | -0.7711300253868103 | | 9 | -0.8474199771881104 | | 12 | -0.8474199771881104 | | 15 | -0.8474199771881104 | | 17 | -0.8474200367927551 | | 1 | -0.9237099885940552 | | 8 | -0.9237099885940552 | | 10 | -0.9237099885940552 | +------------+---------------------+ 17 rows in set (0.00 sec)
  • 37. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 37 「<」と「~」の違い mysql> SELECT FTS_DOC_ID, MATCH (description) AGAINST ('監視 ~パフォーマンス' IN BOOLEAN MODE) AS score FROM articles ORDER BY score DESC; +------------+---------------------+ | FTS_DOC_ID | score | +------------+---------------------+ | 3 | 0.07628998160362244 | | 4 | 0.07628998160362244 | <中略> | 8 | 0 | | 10 | 0 | | 13 | 0 | | 14 | 0 | | 16 | 0 | | 17 | 0 | | 5 | -0.6948400735855103 | | 11 | -0.7711300253868103 | | 9 | -0.8474199771881104 | | 12 | -0.8474199771881104 | | 15 | -0.8474199771881104 | +------------+---------------------+ 17 rows in set (0.00 sec) 「パフォーマンス」が含まれていても、「監視」が 含まれていないドキュメントのスコアは下がらない
  • 38. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 38 「<」と「~」の違い mysql> SELECT FTS_DOC_ID, description FROM articles WHERE FTS_DOC_ID=12¥G *************************** 1. row *************************** FTS_DOC_ID: 12 description: パフォーマンスと可用性に影響を及ぼす重要な MySQL Cluster 指標を監視します。グラフを通じて履歴情 報を確認し、データ・ノードのキャッシュ・ヒット率が低い、データ・メモリが枯渇しそうである、ノード障害が発生しそうであるといった潜 在的な問題に関するアラートを受信できます。 1 row in set (0.00 sec) mysql> mysql> SELECT FTS_DOC_ID, description FROM articles WHERE FTS_DOC_ID=10¥G *************************** 1. row *************************** FTS_DOC_ID: 10 description: 開発者および DBA は、相関グラフを使用して実行時パラメータ(サーバー負荷、スレッド統計、RAM 使用状況 など)を、その時点で実行中であったクエリーと比較できます。グラフ上のタイムスライスを強調表示するだけで、もっとも負荷のかか るクエリーを発見し、より大きなパフォーマンス問題の潜在的な原因を特定します。 1 row in set (0.00 sec)
  • 39. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. Appendix 39
  • 40. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 40 サンプルテーブルに格納した文章 mysql> SELECT * FROM mecab.articles¥G *************************** 1. row *************************** FTS_DOC_ID: 1 title: レプリケーション・ダッシュボード description: MySQL Enterprise Monitorは、自動的にレプリケーション・トポロジを検出し、パフォーマンス、可用性、マ スター/スレーブの状態を表示します。MySQL 5.7にも対応済みで、レプリケーション・ダッシュボードからレプリケーションの各種指 標を確認できます。また、トポロジ・ビューにより、レプリケーション・グループやレプリケーション構成、それぞれのノードの状態など を素早く確認できます。単純なレプリケーション構成だけでなく、マルチソース・レプリケーションや、循環型、階層型といった複雑な 構成にも対応しています。 *************************** 2. row *************************** FTS_DOC_ID: 2 title: アクセス制御リスト (ACLs) description: ロールとグループベースのアクセスコントロールにより、MySQL DBA にきめ細かなセキュリティポリシーを定義 するための簡単な方法を提供します。アクセス制御リストは、MySQL Enterprise Monitor をマルチテナント環境やクラウド環 境で使用している場合のアカウント管理を簡素化します。 *************************** 3. row *************************** FTS_DOC_ID: 3 title: MySQL Enterprise Firewall 監視 description: グラフとレポートから MySQL Enterprise Firewall のアクティビティを容易に監視でき、MySQL Server を特定のデータベース攻撃から守ることに役立ちます。ベスト・プラクティス・アドバイザーは、潜在的なセキュリティの脅威 を検知した時に警告を通知し、MySQL Enterprise Firewall や関連するセキュリティ設定の変更を推奨します。
  • 41. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 41 サンプルテーブルに格納した文章 *************************** 4. row *************************** FTS_DOC_ID: 4 title: MySQL Enterprise Audit 監視 description: 全てのMySQLサーバーにわたって、MySQL Enterprise Audit の状況を監視します。ベスト・プラクティス・ アドバイザーは、HIPAA、SOX 法、および PCI データセキュリティ基準などの一般的なセキュリティポリシーにおいて、企業の法 令遵守を支援します。 *************************** 5. row *************************** FTS_DOC_ID: 5 title: MySQL パフォーマンスのリアルタイム監視およびアラート生成 description: MySQL Enterprise Monitor は MySQL クエリーとパフォーマンス関連のサーバー指標を継続的に監視 します。基準となるパフォーマンスのトレンドから大きな逸脱があった場合にアラートを受信します。また、ベストプラクティス・アドバイ ザは、パフォーマンスを向上させるための構成やパラメータ設定の変更を提案します。 *************************** 6. row *************************** FTS_DOC_ID: 6 title: MySQL の可用性に関するリアルタイム監視 description: 開発者および DBA は、データベース可用性の監視と測定によって、品質保証契約 (SLA) のコミットメントを満 たしているかを把握できます。 *************************** 7. row *************************** FTS_DOC_ID: 7 title: クラウドにおける MySQL のリモート監視 description: クラウドおよび VM に対応した設計になっており、リモート・エージェントを必要とせずに、MySQL サーバーをリ モートで監視できます。
  • 42. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 42 サンプルテーブルに格納した文章 *************************** 8. row *************************** FTS_DOC_ID: 8 title: すべての MySQL サーバーを視覚的に管理 description: Visual Dashboard は Web ベースのインタフェースで、データベースのパフォーマンス、可用性、重大イベ ントなどを全体的に詳しく確認できます。1台のサーバー、カスタム・グループ、またはすべてのサーバーを視覚的に調べます。リア ルタイム情報や履歴情報の豊富なグラフを使用して、サーバー統計の詳細情報にまでドリルダウンできます。 *************************** 9. row *************************** FTS_DOC_ID: 9 title: 視覚的にクエリーを解析 description: クエリー・パフォーマンスのリアルタイム監視、実行時統計の確認、遅延の原因になっている SQL コードのフィ ルタリングと特定が可能です。 MySQL Server 5.6 のパフォーマンス・スキーマを使用すれば、ソフトウェアや構成を追加する ことなく、データが MySQL サーバーから直接収集されます。 *************************** 10. row *************************** FTS_DOC_ID: 10 title: 負荷の大きいクエリーの発見と修正 description: 開発者および DBA は、相関グラフを使用して実行時パラメータ(サーバー負荷、スレッド統計、RAM 使用状況 など)を、その時点で実行中であったクエリーと比較できます。グラフ上のタイムスライスを強調表示するだけで、もっとも負荷のかか るクエリーを発見し、より大きなパフォーマンス問題の潜在的な原因を特定します。
  • 43. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 43 サンプルテーブルに格納した文章 *************************** 11. row *************************** FTS_DOC_ID: 11 title: InnoDB の監視 description: MySQL のパフォーマンスに影響を及ぼす重要な InnoDB 指標を監視します。非効率な索引の使用、ロックの 問題、InnoDB バッファ・プール の使用に関するアラートを受信して、現在のパフォーマンスや解析されたトレンドに基づいた InnoDB 構成を改善する方法についてのヒントを得ることができます。 *************************** 12. row *************************** FTS_DOC_ID: 12 title: MySQL Cluster の監視 description: パフォーマンスと可用性に影響を及ぼす重要な MySQL Cluster 指標を監視します。グラフを通じて履歴情 報を確認し、データ・ノードのキャッシュ・ヒット率が低い、データ・メモリが枯渇しそうである、ノード障害が発生しそうであるといった潜 在的な問題に関するアラートを受信できます。 *************************** 13. row *************************** FTS_DOC_ID: 13 title: バックアップの監視 description: MySQL ベストプラクティス・アドバイザは、オンライン・ホット・バックアップが想定どおり実行することを支援し、" 前回の全体バックアップは古すぎるか?"、"増分バックアップは実行中か?"、"前回のバックアップ・ジョブは成功したか?"、" バックアップのロックの時間が長すぎるか?"などの疑問に回答します。
  • 44. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 44 サンプルテーブルに格納した文章 *************************** 14. row *************************** FTS_DOC_ID: 14 title: ディスクの監視 description: トレンドの解析と計画によって、今後必要になる容量を管理者が予測できるようにします。MySQL Enterprise Monitor は、"ディスク領域が12か月後に一杯になる場合に通知する"といったユーザーが定義したしきい値に基づいて、運用ス タッフに予防的なアラートを送信します。 *************************** 15. row *************************** FTS_DOC_ID: 15 title: オペレーティング・システムの監視 description: ロードアベレージ、CPU 使用状況、RAM 使用状況、スワップ使用状況、ファイルシステム使用状況、ディスク I/O など、オペレーティング・システムレベルのパフォーマンス指標を視覚的にリアルタイムで監視します。 *************************** 16. row *************************** FTS_DOC_ID: 16 title: セキュリティ上のぜい弱性の特定 description: MySQL Enterprise Monitor は MySQL サーバーを保護し、開発者と DBA がセキュリティ・ホールを発 見し、それに対応するための支援をします。アドバイザによって、 MySQL のセキュリティに関するベストプラクティスを実施するた めに設計された一連のルールが提供され、潜在的なぜい弱性がシステムに影響を及ぼす前にアラートを送信します。 *************************** 17. row *************************** FTS_DOC_ID: 17 title: 開発中およびテスト中のチューニングを迅速化 description: 開発中およびテスト中のパフォーマンスに関する問題を発見するまでにかかる時間を大幅に短縮することで、ア プリケーションをより迅速に本番運用できます。ユーザーよりも先にパフォーマンスの問題を特定して修正できます。 17 rows in set (0.00 sec)
  • 45. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 45