SlideShare ist ein Scribd-Unternehmen logo
1 von 32
Downloaden Sie, um offline zu lesen
Index Shotgun
on MySQL 5.6(provisional)
2013/04/17
yoku0825
Modified version 2
I’m yoku0825,
working as DBA
for the company’s web-service.
My wife’s husband, my son’s father,
lovin’ MySQL and Hannari-Tofu too much.
I can’t even log in to PostgreSQL and Oracle but I’m fine! :)
Have you read
`SQL Antipatterns’?
`Index Shotgun’ is one of the
Antipatterns described in it.
In Japanese.
(;´д`) 索引大杉
And I saw `Shotguned Index' at
our MySQL.
なんとIndex_lengthがData_lengthの4倍。
( ´-`).oO(標準から見て
4倍が多すぎるのかどうかは
判らない
だけど、本の索引が本文の4倍もあったら嫌だ
By the way, Why is shotguned
index Antipattern?
Or "How much does it decrease
performance?"
測ってみた
CPU
Xeon L5520 2.27GHz 1P4C8T
Memory
12GiB(don't know any details)
Storage
RAID Controller(RAID5, 8PD)
read 2450MiB/s, 3950IOPS
write 2450MiB/s, 3900IOPS
ext4 on LVM(noatimeしてない)
my.cnf
[mysqld]
query-cache-type = 0
loose-innodb-buffer-pool-size = 1G
loose-innodb-buffer-pool-instances = 1
loose-innodb-log-file-size = 128M
loose-innodb-file-per-table = 1
loose-innodb-file-format = barracuda
測ってみた
+--------------+------------------+------+-----+-------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+------------------+------+-----+-------------------+-------+
| num | int(10) unsigned | NO | | 0 | |
| md5 | varchar(32) | YES | | NULL | |
| sha | varchar(40) | YES | | NULL | |
| old_password | varchar(16) | YES | | NULL | |
| password | varchar(41) | YES | | NULL | |
| timeval | timestamp | NO | | CURRENT_TIMESTAMP | |
+--------------+------------------+------+-----+-------------------+-------+
1行あたり140bytes。
テストデータ1000万行をひたすらINSERTする苦行。
データは1.4GiB。
InnoDB(5.5) - INSERT duration
0:00:00
0:07:12
0:14:24
0:21:36
0:28:48
0:36:00
0:43:12
0:50:24
0:57:36
1:04:48
1:12:00
no key pri(4) pri(4) +
1key(32)
pri(4) +
1key(72)
pri(4) +
1key(88)
pri(4) +
1key(129)
pri(4) +
3key(12)
pri(4) +
3key(76)
pri(4) +
3key(144)
pri(4) +
3key(160)
InnoDB(5.5) - size
0
1,000,000,000
2,000,000,000
3,000,000,000
4,000,000,000
5,000,000,000
6,000,000,000
no key pri(4) pri(4) +
1key(32)
pri(4) +
1key(72)
pri(4) +
1key(88)
pri(4) +
1key(129)
pri(4) +
3key(12)
pri(4) +
3key(76)
pri(4) +
3key(144)
pri(4) +
3key(160)
• 72byteのKey1つと合計76byteになるKey3つで
はそんなに変わらなさそう。
• 1行140bytesしかないテーブルなので、イン
デックスの作成がもろにテーブル全体のサイ
ズに影響する
– 社内で出会った炸裂インデックスももともとは.ibd
ファイルでっかくね? からだった。
散弾銃索引退治
• 取り敢えず重複インデックスがあったから消
した(基本)
• 本当はもうちょっと削りたい。
– なんか上手い具合にINDEXの使われ度合いを測
れないもんかな?
– Percona ServerやMariaDBには、そのインデックス
を使って何行フェッチしたか統計を取る
information_schemaが突っ込まれている。
pt-duplicate-key-entry
Percona Toolkitの1つで、重複インデックスを検出してくれる。
$ pt-duplicate-key-checker S=/usr/mysql/5.5.30/data/mysql.sock,u=tpcc,p=xxxx --database=tpcc
# ########################################################################
# tpcc.stock
# ########################################################################
# s_w_id is a left-prefix of PRIMARY
# Key definitions:
# KEY `s_w_id` (`s_w_id`),
# PRIMARY KEY (`s_w_id`,`s_i_id`),
# Column types:
# `s_w_id` smallint(6) not null
# `s_i_id` int(11) not null
# To remove this duplicate index, execute:
ALTER TABLE `tpcc`.`stock` DROP INDEX `s_w_id`;
# ########################################################################
# Summary of indexes
# ########################################################################
# Size Duplicate Indexes 2
# Total Duplicate Indexes 1
# Total Indexes 25
http://www.percona.com/doc/percona-toolkit/2.1/pt-duplicate-key-checker.html
まずこれを退治。
information_schema.INNODB_BUFFER_PAGE
• 5.6.2から搭載された
– 5.5.28, 5.1.66にもバックポートされてる
(5.1.66はplugin-loadで食わせてやる必要がある)
• InnoDB Buffer Poolにどんなページが載ってる
のかがinformation_schemaからアクセスでき
る。
– これで載ってるインデックスページ調べれば幸せ
になれるんじゃない? とか思った。
information_schema.INNODB_BUFFER_PAGE_LRU
+---------------------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------------+---------------------+------+-----+---------+-------+
| POOL_ID | bigint(21) unsigned | NO | | 0 | |
| LRU_POSITION | bigint(21) unsigned | NO | | 0 | | LRUリストの位置
| SPACE | bigint(21) unsigned | NO | | 0 | |
| PAGE_NUMBER | bigint(21) unsigned | NO | | 0 | |
| PAGE_TYPE | varchar(64) | YES | | NULL | | UNDO_LOG, INDEX, SYSTEMとか
| FLUSH_TYPE | bigint(21) unsigned | NO | | 0 | |
| FIX_COUNT | bigint(21) unsigned | NO | | 0 | |
| IS_HASHED | varchar(3) | YES | | NULL | |
| NEWEST_MODIFICATION | bigint(21) unsigned | NO | | 0 | | このページを最後に更新したLSN
| OLDEST_MODIFICATION | bigint(21) unsigned | NO | | 0 | | このページを最初に更新したLSN
| ACCESS_TIME | bigint(21) unsigned | NO | | 0 | | 初めてバッファプールに載った時間
| TABLE_NAME | varchar(1024) | YES | | NULL | |
| INDEX_NAME | varchar(1024) | YES | | NULL | |
| NUMBER_RECORDS | bigint(21) unsigned | NO | | 0 | | そのページに載っている行
| DATA_SIZE | bigint(21) unsigned | NO | | 0 | | そのページに載っているByte数
| COMPRESSED_SIZE | bigint(21) unsigned | NO | | 0 | |
| COMPRESSED | varchar(3) | YES | | NULL | |
| IO_FIX | varchar(64) | YES | | NULL | |
| IS_OLD | varchar(3) | YES | | NULL | | OLDページかどうか
| FREE_PAGE_CLOCK | bigint(21) unsigned | NO | | 0 | | ページがLRUリストから落ちるとインクリメント
+---------------------+---------------------+------+-----+---------+-------+
information_schema.INNODB_BUFFER_PAGE_LRU
• とりあえず起動直後の状態をチェック。innodb_buffer_pool_size = 5M(=256ページ)
mysql56> SELECT lru_position, table_name, index_name, number_records AS num, data_size, is_old, newest_modification AS LSN, access_time FROM
innodb_buffer_page_lru WHERE page_type = 'INDEX';
+--------------+--------------------------------+-----------------------+-----+-----------+--------+-----+-------------+
| lru_position | table_name | index_name | num | data_size | is_old | LSN | access_time |
+--------------+--------------------------------+-----------------------+-----+-----------+--------+-----+-------------+
| 210 | `SYS_IBUF_TABLE` | CLUST_IND | 0 | 0 | NO | 0 | 1153626747 |
| 218 | `mysql`.`innodb_index_stats` | PRIMARY | 46 | 4060 | NO | 0 | 1153626732 |
| 219 | `mysql`.`innodb_table_stats` | PRIMARY | 11 | 635 | NO | 0 | 1153626720 |
| 220 | `SYS_TABLES` | ID_IND | 20 | 613 | NO | 0 | 1153626698 |
| 221 | `SYS_TABLES` | CLUST_IND | 20 | 1513 | NO | 0 | 1153626661 |
| 222 | `SYS_COLUMNS` | CLUST_IND | 103 | 6784 | NO | 0 | 1153626696 |
| 223 | `SYS_DATAFILES` | SYS_DATAFILES_SPACE | 16 | 766 | NO | 0 | 1153626748 |
| 224 | `SYS_TABLESPACES` | SYS_TABLESPACES_SPACE | 16 | 750 | NO | 0 | 1153626748 |
| 225 | `SYS_INDEXES` | CLUST_IND | 25 | 1715 | NO | 0 | 1153626695 |
| 240 | `SYS_FIELDS` | CLUST_IND | 30 | 1274 | NO | 0 | 1153626696 |
| 241 | `SYS_FOREIGN` | FOR_IND | 4 | 148 | NO | 0 | 1153626696 |
| 242 | `SYS_FOREIGN` | ID_IND | 4 | 280 | NO | 0 | 1153626768 |
| 243 | `SYS_FOREIGN_COLS` | ID_IND | 4 | 246 | NO | 0 | 1153626768 |
| 244 | `SYS_FOREIGN` | REF_IND | 4 | 152 | NO | 0 | 1153626696 |
| 245 | `test`.`item` | PRIMARY | 17 | 938 | NO | 0 | 1153626777 |
| 247 | `mysql`.`slave_master_info` | PRIMARY | 0 | 0 | NO | 0 | 1153626963 |
| 250 | `mysql`.`slave_worker_info` | PRIMARY | 0 | 0 | NO | 0 | 1153626975 |
| 253 | `mysql`.`slave_relay_log_info` | PRIMARY | 0 | 0 | NO | 0 | 1153626984 |
+--------------+--------------------------------+-----------------------+-----+-----------+--------+-----+-------------+
18 rows in set (0.01 sec)
– lru_positionは大きい方が最近ぽい。
– そういえばmysql.slave_*はInnoDBだっけ。
information_schema.INNODB_BUFFER_PAGE_LRU
• テーブル1つ(test.brand)スキャンしてみる。
mysql56> SELECT lru_position, table_name, index_name, number_records AS num, data_size, is_old, newest_modification AS LSN, access_time FROM
innodb_buffer_page_lru WHERE page_type = 'INDEX';
+--------------+--------------------------------+-----------------------+-----+-----------+--------+-----+-------------+
| lru_position | table_name | index_name | num | data_size | is_old | LSN | access_time |
+--------------+--------------------------------+-----------------------+-----+-----------+--------+-----+-------------+
| 208 | `SYS_IBUF_TABLE` | CLUST_IND | 0 | 0 | NO | 0 | 1153626747 |
| 216 | `mysql`.`innodb_table_stats` | PRIMARY | 11 | 635 | NO | 0 | 1153626720 |
| 217 | `SYS_TABLES` | ID_IND | 20 | 613 | NO | 0 | 1153626698 |
| 218 | `SYS_DATAFILES` | SYS_DATAFILES_SPACE | 16 | 766 | NO | 0 | 1153626748 |
| 219 | `SYS_TABLESPACES` | SYS_TABLESPACES_SPACE | 16 | 750 | NO | 0 | 1153626748 |
| 234 | `test`.`item` | PRIMARY | 17 | 938 | NO | 0 | 1153626777 |
| 236 | `mysql`.`slave_master_info` | PRIMARY | 0 | 0 | NO | 0 | 1153626963 |
| 239 | `mysql`.`slave_worker_info` | PRIMARY | 0 | 0 | NO | 0 | 1153626975 |
| 242 | `mysql`.`slave_relay_log_info` | PRIMARY | 0 | 0 | NO | 0 | 1153626984 |
| 245 | `SYS_TABLES` | CLUST_IND | 20 | 1513 | NO | 0 | 1153626661 |
| 246 | `SYS_COLUMNS` | CLUST_IND | 103 | 6784 | NO | 0 | 1153626696 |
| 247 | `SYS_INDEXES` | CLUST_IND | 25 | 1715 | NO | 0 | 1153626695 |
| 248 | `SYS_FIELDS` | CLUST_IND | 30 | 1274 | NO | 0 | 1153626696 |
| 249 | `SYS_FOREIGN` | FOR_IND | 4 | 148 | NO | 0 | 1153626696 |
| 250 | `SYS_FOREIGN` | ID_IND | 4 | 280 | NO | 0 | 1153626768 |
| 251 | `SYS_FOREIGN_COLS` | ID_IND | 4 | 246 | NO | 0 | 1153626768 |
| 252 | `SYS_FOREIGN` | REF_IND | 4 | 152 | NO | 0 | 1153626696 |
| 253 | `mysql`.`innodb_index_stats` | PRIMARY | 46 | 4060 | NO | 0 | 1153626732 |
| 254 | `test`.`brand` | PRIMARY | 10 | 575 | NO | 0 | 1154017292 |
+--------------+--------------------------------+-----------------------+-----+-----------+--------+-----+-------------+
19 rows in set (0.01 sec)
– lru_position 254に載ったから、やっぱりこっちがyoung側の気がする。
– でもミッドポイント挿入戦略とかいうのがなかったっけ。
– SELECTしただけだからnewest_modificationはからっぽ、access_timeは記録される。
information_schema.INNODB_BUFFER_PAGE_LRU
• test.brandに1行INSERTしてみる。
mysql56> SELECT lru_position, table_name, index_name, number_records AS num, data_size, is_old, newest_modification AS LSN, access_time FROM
innodb_buffer_page_lru WHERE page_type = 'INDEX';
+--------------+--------------------------------+-----------------------+-----+-----------+--------+-----------+-------------+
| lru_position | table_name | index_name | num | data_size | is_old | LSN | access_time |
+--------------+--------------------------------+-----------------------+-----+-----------+--------+-----------+-------------+
| 202 | `SYS_IBUF_TABLE` | CLUST_IND | 0 | 0 | NO | 0 | 1153626747 |
| 210 | `mysql`.`innodb_table_stats` | PRIMARY | 11 | 635 | NO | 0 | 1153626720 |
| 211 | `SYS_TABLES` | ID_IND | 20 | 613 | NO | 0 | 1153626698 |
| 212 | `SYS_DATAFILES` | SYS_DATAFILES_SPACE | 16 | 766 | NO | 0 | 1153626748 |
| 213 | `SYS_TABLESPACES` | SYS_TABLESPACES_SPACE | 16 | 750 | NO | 0 | 1153626748 |
| 228 | `test`.`item` | PRIMARY | 17 | 938 | NO | 0 | 1153626777 |
| 230 | `mysql`.`slave_master_info` | PRIMARY | 0 | 0 | NO | 0 | 1153626963 |
| 233 | `mysql`.`slave_worker_info` | PRIMARY | 0 | 0 | NO | 0 | 1153626975 |
| 236 | `mysql`.`slave_relay_log_info` | PRIMARY | 0 | 0 | NO | 0 | 1153626984 |
| 239 | `SYS_TABLES` | CLUST_IND | 20 | 1513 | NO | 0 | 1153626661 |
| 240 | `SYS_COLUMNS` | CLUST_IND | 103 | 6784 | NO | 0 | 1153626696 |
| 241 | `SYS_INDEXES` | CLUST_IND | 25 | 1715 | NO | 0 | 1153626695 |
| 242 | `SYS_FIELDS` | CLUST_IND | 30 | 1274 | NO | 0 | 1153626696 |
| 243 | `SYS_FOREIGN` | FOR_IND | 4 | 148 | NO | 0 | 1153626696 |
| 244 | `SYS_FOREIGN` | ID_IND | 4 | 280 | NO | 0 | 1153626768 |
| 245 | `SYS_FOREIGN_COLS` | ID_IND | 4 | 246 | NO | 0 | 1153626768 |
| 246 | `SYS_FOREIGN` | REF_IND | 4 | 152 | NO | 0 | 1153626696 |
| 247 | `mysql`.`innodb_index_stats` | PRIMARY | 46 | 4060 | NO | 0 | 1153626732 |
| 248 | `test`.`brand` | PRIMARY | 11 | 614 | NO | 319272605 | 1154017292 |
| 252 | `test`.`factory` | PRIMARY | 4 | 254 | NO | 0 | 1154232813 |
| 254 | `test`.`brand` | maker | 11 | 360 | NO | 319272654 | 1154232814 |
+--------------+--------------------------------+-----------------------+-----+-----------+--------+-----------+-------------+
21 rows in set (0.01 sec)
– test.factoryが読み込まれたのは、FOREIGN KEYを切ってるからっぽい(FOREIGN KEYを消すと載らない)
– PRIMARY INDEXとmaker INDEXがそれぞれLSNが記録されてる。
ということは
• LSNが記録されていない(=0)のレコードはSELECTだけさ
れてるやつだから使われているって根拠になりそう。
– LNS <> 0で検索してみようか。
• SELECTで特定のINDEXを使った場合はそのINDEX(と
データフェッチ用にPRIMARY KEY)だけが載るので、
テーブル上の全部のインデックスがリストされている =
INSERTで載ったと思えそう。
– information_schema.statisticsとJOINして相関サブクエリで
ゴニョゴニョやろうとしたらものすごく重くなったので断念。。
– information_schemaってテンポラリテーブルみたいに毎回
データをストアしてるぽいので、相関サブクエリだと確か
に悲惨になるよね。。
と思ったんですが
• 本番に5.5.28(以降)が2台しかなかった。
• しかもその2台(Master & Slave)はバッファプールがガラガ
ラだった。
• とりあえず、newest_modification = 0のページは無かった。。
– 一度LRUリストから落ちて次に読み込まれると、
newest_modificationは0に戻るのね。
• あと、InnoDB Compressed使ってるのですんごく
innodb_buffer_page_lruへのアクセスが重い。
• Master & Slaveで分散させてると、そのチェック結果をマー
ジしないとダメそうだよね。。
• あと、access_timeがミリ秒単位のUNIXTIMEを32bit
unsignedで受け取っているので、49.7日くらいでオーバー
フローする。。
Percona Serverの
information_schema. INDEX_STATISTICSみたいに
ずぱっとどれくらい使ってるのか判るわけじゃない。
mysql> SET GLOBAL userstat=on;
..
mysql> SELECT * FROM index_statistics;
+--------------+------------+------------+-----------+
| TABLE_SCHEMA | TABLE_NAME | INDEX_NAME | ROWS_READ |
+--------------+------------+------------+-----------+
| tpcc | item | PRIMARY | 100000 |
+--------------+------------+------------+-----------+
1 row in set (0.00 sec)
いやこれもどのインデックス使ってないかっていう銀の弾丸じゃないけど。
上手く考察する方法求む
By the way,
Where does it go “on MySQL
5.6(provisional)”?
5.5と5.6で比較したんですが、
有意差が出ないという
`比べてみた’ネタとしては最悪の結果になったので
Upgrading 5.6 from 5.5 hasn’t effect on
shotguned indexes.
という結論になりました。
ごめんなさいごめんなさい。
でもinnodb_buffer_page_lruは楽しかったです。
上手いこと分析したい。
ご清聴ありがとうございました

Weitere ähnliche Inhalte

Was ist angesagt?

いろいろ考えると日本語の全文検索もMySQLがいいね!
いろいろ考えると日本語の全文検索もMySQLがいいね!いろいろ考えると日本語の全文検索もMySQLがいいね!
いろいろ考えると日本語の全文検索もMySQLがいいね!Kouhei Sutou
 
blogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べblogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べMasahiro Nagano
 
How to backup your mroonga database?
How to backup your mroonga database?How to backup your mroonga database?
How to backup your mroonga database?yoku0825
 
Devsの常識、DBAは非常識
Devsの常識、DBAは非常識Devsの常識、DBAは非常識
Devsの常識、DBAは非常識yoku0825
 
MySQL勉強会 インデックス編.2013 08-02
MySQL勉強会 インデックス編.2013 08-02MySQL勉強会 インデックス編.2013 08-02
MySQL勉強会 インデックス編.2013 08-02CROOZ, inc.
 
MySQL 5.7が魅せる新しい運用の形
MySQL 5.7が魅せる新しい運用の形MySQL 5.7が魅せる新しい運用の形
MySQL 5.7が魅せる新しい運用の形yoku0825
 
Oracle how-to-audit-backup
Oracle how-to-audit-backupOracle how-to-audit-backup
Oracle how-to-audit-backupDaiki Mogmet Ito
 
ペパボ de MySQL
ペパボ de MySQLペパボ de MySQL
ペパボ de MySQLyoku0825
 
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"Kentaro Yoshida
 
MySQLerの7つ道具
MySQLerの7つ道具MySQLerの7つ道具
MySQLerの7つ道具yoku0825
 
今から備えるMySQL最新バージョン5.7
今から備えるMySQL最新バージョン5.7今から備えるMySQL最新バージョン5.7
今から備えるMySQL最新バージョン5.7yoku0825
 
MySQL 5.7 InnoDB 日本語全文検索(その2)
MySQL 5.7 InnoDB 日本語全文検索(その2)MySQL 5.7 InnoDB 日本語全文検索(その2)
MySQL 5.7 InnoDB 日本語全文検索(その2)yoyamasaki
 
MySQLユーザ視点での小さく始めるElasticsearch
MySQLユーザ視点での小さく始めるElasticsearchMySQLユーザ視点での小さく始めるElasticsearch
MySQLユーザ視点での小さく始めるElasticsearchKentaro Yoshida
 
[D14] MySQL 5.6時代のパフォーマンスチューニング *db tech showcase 2013 Tokyo
[D14] MySQL 5.6時代のパフォーマンスチューニング *db tech showcase 2013 Tokyo[D14] MySQL 5.6時代のパフォーマンスチューニング *db tech showcase 2013 Tokyo
[D14] MySQL 5.6時代のパフォーマンスチューニング *db tech showcase 2013 Tokyoyoyamasaki
 
Handlerさんコンニチワ
HandlerさんコンニチワHandlerさんコンニチワ
Handlerさんコンニチワyoku0825
 
MySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいことMySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいことyoku0825
 
とあるイルカのバーボンハウス
とあるイルカのバーボンハウスとあるイルカのバーボンハウス
とあるイルカのバーボンハウスyoku0825
 
わかった気になるMySQL
わかった気になるMySQLわかった気になるMySQL
わかった気になるMySQLyoku0825
 
Elasticsearch Authプラグインでアクセスコントロール
Elasticsearch AuthプラグインでアクセスコントロールElasticsearch Authプラグインでアクセスコントロール
Elasticsearch AuthプラグインでアクセスコントロールShinsuke Sugaya
 
MySQLアンチパターン
MySQLアンチパターンMySQLアンチパターン
MySQLアンチパターンyoku0825
 

Was ist angesagt? (20)

いろいろ考えると日本語の全文検索もMySQLがいいね!
いろいろ考えると日本語の全文検索もMySQLがいいね!いろいろ考えると日本語の全文検索もMySQLがいいね!
いろいろ考えると日本語の全文検索もMySQLがいいね!
 
blogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べblogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べ
 
How to backup your mroonga database?
How to backup your mroonga database?How to backup your mroonga database?
How to backup your mroonga database?
 
Devsの常識、DBAは非常識
Devsの常識、DBAは非常識Devsの常識、DBAは非常識
Devsの常識、DBAは非常識
 
MySQL勉強会 インデックス編.2013 08-02
MySQL勉強会 インデックス編.2013 08-02MySQL勉強会 インデックス編.2013 08-02
MySQL勉強会 インデックス編.2013 08-02
 
MySQL 5.7が魅せる新しい運用の形
MySQL 5.7が魅せる新しい運用の形MySQL 5.7が魅せる新しい運用の形
MySQL 5.7が魅せる新しい運用の形
 
Oracle how-to-audit-backup
Oracle how-to-audit-backupOracle how-to-audit-backup
Oracle how-to-audit-backup
 
ペパボ de MySQL
ペパボ de MySQLペパボ de MySQL
ペパボ de MySQL
 
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
 
MySQLerの7つ道具
MySQLerの7つ道具MySQLerの7つ道具
MySQLerの7つ道具
 
今から備えるMySQL最新バージョン5.7
今から備えるMySQL最新バージョン5.7今から備えるMySQL最新バージョン5.7
今から備えるMySQL最新バージョン5.7
 
MySQL 5.7 InnoDB 日本語全文検索(その2)
MySQL 5.7 InnoDB 日本語全文検索(その2)MySQL 5.7 InnoDB 日本語全文検索(その2)
MySQL 5.7 InnoDB 日本語全文検索(その2)
 
MySQLユーザ視点での小さく始めるElasticsearch
MySQLユーザ視点での小さく始めるElasticsearchMySQLユーザ視点での小さく始めるElasticsearch
MySQLユーザ視点での小さく始めるElasticsearch
 
[D14] MySQL 5.6時代のパフォーマンスチューニング *db tech showcase 2013 Tokyo
[D14] MySQL 5.6時代のパフォーマンスチューニング *db tech showcase 2013 Tokyo[D14] MySQL 5.6時代のパフォーマンスチューニング *db tech showcase 2013 Tokyo
[D14] MySQL 5.6時代のパフォーマンスチューニング *db tech showcase 2013 Tokyo
 
Handlerさんコンニチワ
HandlerさんコンニチワHandlerさんコンニチワ
Handlerさんコンニチワ
 
MySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいことMySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいこと
 
とあるイルカのバーボンハウス
とあるイルカのバーボンハウスとあるイルカのバーボンハウス
とあるイルカのバーボンハウス
 
わかった気になるMySQL
わかった気になるMySQLわかった気になるMySQL
わかった気になるMySQL
 
Elasticsearch Authプラグインでアクセスコントロール
Elasticsearch AuthプラグインでアクセスコントロールElasticsearch Authプラグインでアクセスコントロール
Elasticsearch Authプラグインでアクセスコントロール
 
MySQLアンチパターン
MySQLアンチパターンMySQLアンチパターン
MySQLアンチパターン
 

Andere mochten auch

SQLドリルの話(仮)
SQLドリルの話(仮)SQLドリルの話(仮)
SQLドリルの話(仮)Yuuki Tan-nai
 
マスタN対スレーブ1レプリケーションの作り方 ~あれから~
マスタN対スレーブ1レプリケーションの作り方 ~あれから~マスタN対スレーブ1レプリケーションの作り方 ~あれから~
マスタN対スレーブ1レプリケーションの作り方 ~あれから~do_aki
 
Mysql casual talks vol4
Mysql casual talks vol4Mysql casual talks vol4
Mysql casual talks vol4matsuo kenji
 
MySQL Casual Talks Vol.4 「MySQL-5.6で始める全文検索 〜InnoDB FTS編〜」
MySQL Casual Talks Vol.4 「MySQL-5.6で始める全文検索 〜InnoDB FTS編〜」MySQL Casual Talks Vol.4 「MySQL-5.6で始める全文検索 〜InnoDB FTS編〜」
MySQL Casual Talks Vol.4 「MySQL-5.6で始める全文検索 〜InnoDB FTS編〜」Kentaro Yoshida
 
SQLアンチパターン(インデックスショットガン)
SQLアンチパターン(インデックスショットガン)SQLアンチパターン(インデックスショットガン)
SQLアンチパターン(インデックスショットガン)Tomoaki Uchida
 

Andere mochten auch (7)

O/R Mapper Stratumの話
O/R Mapper Stratumの話O/R Mapper Stratumの話
O/R Mapper Stratumの話
 
SQLドリルの話(仮)
SQLドリルの話(仮)SQLドリルの話(仮)
SQLドリルの話(仮)
 
マスタN対スレーブ1レプリケーションの作り方 ~あれから~
マスタN対スレーブ1レプリケーションの作り方 ~あれから~マスタN対スレーブ1レプリケーションの作り方 ~あれから~
マスタN対スレーブ1レプリケーションの作り方 ~あれから~
 
Mysql casual talks vol4
Mysql casual talks vol4Mysql casual talks vol4
Mysql casual talks vol4
 
mysql casual #4
mysql casual #4mysql casual #4
mysql casual #4
 
MySQL Casual Talks Vol.4 「MySQL-5.6で始める全文検索 〜InnoDB FTS編〜」
MySQL Casual Talks Vol.4 「MySQL-5.6で始める全文検索 〜InnoDB FTS編〜」MySQL Casual Talks Vol.4 「MySQL-5.6で始める全文検索 〜InnoDB FTS編〜」
MySQL Casual Talks Vol.4 「MySQL-5.6で始める全文検索 〜InnoDB FTS編〜」
 
SQLアンチパターン(インデックスショットガン)
SQLアンチパターン(インデックスショットガン)SQLアンチパターン(インデックスショットガン)
SQLアンチパターン(インデックスショットガン)
 

Ähnlich wie Index shotgun on mysql5.6

MySQL clients
MySQL clientsMySQL clients
MySQL clientsyoku0825
 
道具を磨くことのススメ
道具を磨くことのススメ道具を磨くことのススメ
道具を磨くことのススメKenichi Masuda
 
20160929 inno db_fts_jp
20160929 inno db_fts_jp20160929 inno db_fts_jp
20160929 inno db_fts_jpyoyamasaki
 
20160929_InnoDBの全文検索を使ってみた by 株式会社インサイトテクノロジー 中村範夫
20160929_InnoDBの全文検索を使ってみた by 株式会社インサイトテクノロジー 中村範夫20160929_InnoDBの全文検索を使ってみた by 株式会社インサイトテクノロジー 中村範夫
20160929_InnoDBの全文検索を使ってみた by 株式会社インサイトテクノロジー 中村範夫Insight Technology, Inc.
 
MySQLチューニング
MySQLチューニングMySQLチューニング
MySQLチューニングyoku0825
 
沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1
沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1
沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1Hideki Saito
 
Maatkit で MySQL チューニング
Maatkit で MySQL チューニングMaatkit で MySQL チューニング
Maatkit で MySQL チューニングKensuke Nagae
 
PostgreSQL使いのエンジニアから見たMySQL
PostgreSQL使いのエンジニアから見たMySQLPostgreSQL使いのエンジニアから見たMySQL
PostgreSQL使いのエンジニアから見たMySQLtoshihiro_kitagawa
 
まだ統計固定で消耗してるの? - Bind Peek をもっと使おうぜ! 2015 Edition -
まだ統計固定で消耗してるの? - Bind Peek をもっと使おうぜ! 2015 Edition -まだ統計固定で消耗してるの? - Bind Peek をもっと使おうぜ! 2015 Edition -
まだ統計固定で消耗してるの? - Bind Peek をもっと使おうぜ! 2015 Edition -歩 柴田
 
5 古雷my sql源碼與資料庫規範
5 古雷my sql源碼與資料庫規範5 古雷my sql源碼與資料庫規範
5 古雷my sql源碼與資料庫規範Ivan Tu
 
Autonomous Database で Oracle Database19c 新機能 を味わう。
Autonomous Database で Oracle Database19c 新機能 を味わう。Autonomous Database で Oracle Database19c 新機能 を味わう。
Autonomous Database で Oracle Database19c 新機能 を味わう。歩 柴田
 
What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015
What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015
What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015Mikiya Okuno
 
Introduction of Oracle Database Architecture(抜粋版) - JPOUG Oracle Database入学式 ...
Introduction of Oracle Database Architecture(抜粋版) - JPOUG Oracle Database入学式 ...Introduction of Oracle Database Architecture(抜粋版) - JPOUG Oracle Database入学式 ...
Introduction of Oracle Database Architecture(抜粋版) - JPOUG Oracle Database入学式 ...Ryota Watabe
 
2016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 15
2016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 152016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 15
2016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 15歩 柴田
 
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能Ryusuke Kajiyama
 
あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界Yoshinori Nakanishi
 
MySQL 開発最新動向
MySQL 開発最新動向MySQL 開発最新動向
MySQL 開発最新動向yoyamasaki
 
2017年5月26日 オープンソースデータベース比較セミナー「NoSQLとしても使えるMySQLとMySQL Cluster」
2017年5月26日 オープンソースデータベース比較セミナー「NoSQLとしても使えるMySQLとMySQL Cluster」2017年5月26日 オープンソースデータベース比較セミナー「NoSQLとしても使えるMySQLとMySQL Cluster」
2017年5月26日 オープンソースデータベース比較セミナー「NoSQLとしても使えるMySQLとMySQL Cluster」Ryusuke Kajiyama
 
Q4 Mでメッセージキュー
Q4 MでメッセージキューQ4 Mでメッセージキュー
Q4 Mでメッセージキューngi group.
 

Ähnlich wie Index shotgun on mysql5.6 (20)

MySQL clients
MySQL clientsMySQL clients
MySQL clients
 
道具を磨くことのススメ
道具を磨くことのススメ道具を磨くことのススメ
道具を磨くことのススメ
 
20160929 inno db_fts_jp
20160929 inno db_fts_jp20160929 inno db_fts_jp
20160929 inno db_fts_jp
 
20160929_InnoDBの全文検索を使ってみた by 株式会社インサイトテクノロジー 中村範夫
20160929_InnoDBの全文検索を使ってみた by 株式会社インサイトテクノロジー 中村範夫20160929_InnoDBの全文検索を使ってみた by 株式会社インサイトテクノロジー 中村範夫
20160929_InnoDBの全文検索を使ってみた by 株式会社インサイトテクノロジー 中村範夫
 
MySQLチューニング
MySQLチューニングMySQLチューニング
MySQLチューニング
 
沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1
沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1
沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1
 
Maatkit で MySQL チューニング
Maatkit で MySQL チューニングMaatkit で MySQL チューニング
Maatkit で MySQL チューニング
 
PostgreSQL使いのエンジニアから見たMySQL
PostgreSQL使いのエンジニアから見たMySQLPostgreSQL使いのエンジニアから見たMySQL
PostgreSQL使いのエンジニアから見たMySQL
 
まだ統計固定で消耗してるの? - Bind Peek をもっと使おうぜ! 2015 Edition -
まだ統計固定で消耗してるの? - Bind Peek をもっと使おうぜ! 2015 Edition -まだ統計固定で消耗してるの? - Bind Peek をもっと使おうぜ! 2015 Edition -
まだ統計固定で消耗してるの? - Bind Peek をもっと使おうぜ! 2015 Edition -
 
5 古雷my sql源碼與資料庫規範
5 古雷my sql源碼與資料庫規範5 古雷my sql源碼與資料庫規範
5 古雷my sql源碼與資料庫規範
 
Autonomous Database で Oracle Database19c 新機能 を味わう。
Autonomous Database で Oracle Database19c 新機能 を味わう。Autonomous Database で Oracle Database19c 新機能 を味わう。
Autonomous Database で Oracle Database19c 新機能 を味わう。
 
What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015
What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015
What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015
 
Introduction of Oracle Database Architecture(抜粋版) - JPOUG Oracle Database入学式 ...
Introduction of Oracle Database Architecture(抜粋版) - JPOUG Oracle Database入学式 ...Introduction of Oracle Database Architecture(抜粋版) - JPOUG Oracle Database入学式 ...
Introduction of Oracle Database Architecture(抜粋版) - JPOUG Oracle Database入学式 ...
 
2016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 15
2016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 152016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 15
2016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 15
 
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
 
あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界
 
MySQL 開発最新動向
MySQL 開発最新動向MySQL 開発最新動向
MySQL 開発最新動向
 
2017年5月26日 オープンソースデータベース比較セミナー「NoSQLとしても使えるMySQLとMySQL Cluster」
2017年5月26日 オープンソースデータベース比較セミナー「NoSQLとしても使えるMySQLとMySQL Cluster」2017年5月26日 オープンソースデータベース比較セミナー「NoSQLとしても使えるMySQLとMySQL Cluster」
2017年5月26日 オープンソースデータベース比較セミナー「NoSQLとしても使えるMySQLとMySQL Cluster」
 
POWER8サーバでMariaDBベンチマーク
POWER8サーバでMariaDBベンチマークPOWER8サーバでMariaDBベンチマーク
POWER8サーバでMariaDBベンチマーク
 
Q4 Mでメッセージキュー
Q4 MでメッセージキューQ4 Mでメッセージキュー
Q4 Mでメッセージキュー
 

Mehr von yoku0825

逝くぞ最新版、罠の貯蔵は十分か
逝くぞ最新版、罠の貯蔵は十分か逝くぞ最新版、罠の貯蔵は十分か
逝くぞ最新版、罠の貯蔵は十分かyoku0825
 
MySQLレプリケーションあれやこれや
MySQLレプリケーションあれやこれやMySQLレプリケーションあれやこれや
MySQLレプリケーションあれやこれやyoku0825
 
MySQL 8.0で憶えておいてほしいこと
MySQL 8.0で憶えておいてほしいことMySQL 8.0で憶えておいてほしいこと
MySQL 8.0で憶えておいてほしいことyoku0825
 
片手間MySQLチューニング戦略
片手間MySQLチューニング戦略片手間MySQLチューニング戦略
片手間MySQLチューニング戦略yoku0825
 
MySQLを割と一人で300台管理する技術
MySQLを割と一人で300台管理する技術MySQLを割と一人で300台管理する技術
MySQLを割と一人で300台管理する技術yoku0825
 
Dockerイメージで誰でも気軽にMroonga体験
Dockerイメージで誰でも気軽にMroonga体験Dockerイメージで誰でも気軽にMroonga体験
Dockerイメージで誰でも気軽にMroonga体験yoku0825
 
MySQLerの7つ道具 plus
MySQLerの7つ道具 plusMySQLerの7つ道具 plus
MySQLerの7つ道具 plusyoku0825
 
MHAの次を目指す mikasafabric for MySQL
MHAの次を目指す mikasafabric for MySQLMHAの次を目指す mikasafabric for MySQL
MHAの次を目指す mikasafabric for MySQLyoku0825
 
5.7の次のMySQL
5.7の次のMySQL5.7の次のMySQL
5.7の次のMySQLyoku0825
 
mikasafabric for MySQL
mikasafabric for MySQLmikasafabric for MySQL
mikasafabric for MySQLyoku0825
 
とあるイルカの近況報告
とあるイルカの近況報告とあるイルカの近況報告
とあるイルカの近況報告yoku0825
 
MySQL Fabricでぼっこぼこにされたはなし
MySQL FabricでぼっこぼこにされたはなしMySQL Fabricでぼっこぼこにされたはなし
MySQL Fabricでぼっこぼこにされたはなしyoku0825
 
MySQLと正規形のはなし
MySQLと正規形のはなしMySQLと正規形のはなし
MySQLと正規形のはなしyoku0825
 
MySQLおじさんの逆襲
MySQLおじさんの逆襲MySQLおじさんの逆襲
MySQLおじさんの逆襲yoku0825
 
地雷職人の朝は早い
地雷職人の朝は早い地雷職人の朝は早い
地雷職人の朝は早いyoku0825
 
イルカさんチームからゾウさんチームに教えたいMySQLレプリケーション
イルカさんチームからゾウさんチームに教えたいMySQLレプリケーションイルカさんチームからゾウさんチームに教えたいMySQLレプリケーション
イルカさんチームからゾウさんチームに教えたいMySQLレプリケーションyoku0825
 
雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニングyoku0825
 
紹介 of Anemometer
紹介 of Anemometer紹介 of Anemometer
紹介 of Anemometeryoku0825
 
MySQL5.7で遊んでみよう
MySQL5.7で遊んでみようMySQL5.7で遊んでみよう
MySQL5.7で遊んでみようyoku0825
 

Mehr von yoku0825 (19)

逝くぞ最新版、罠の貯蔵は十分か
逝くぞ最新版、罠の貯蔵は十分か逝くぞ最新版、罠の貯蔵は十分か
逝くぞ最新版、罠の貯蔵は十分か
 
MySQLレプリケーションあれやこれや
MySQLレプリケーションあれやこれやMySQLレプリケーションあれやこれや
MySQLレプリケーションあれやこれや
 
MySQL 8.0で憶えておいてほしいこと
MySQL 8.0で憶えておいてほしいことMySQL 8.0で憶えておいてほしいこと
MySQL 8.0で憶えておいてほしいこと
 
片手間MySQLチューニング戦略
片手間MySQLチューニング戦略片手間MySQLチューニング戦略
片手間MySQLチューニング戦略
 
MySQLを割と一人で300台管理する技術
MySQLを割と一人で300台管理する技術MySQLを割と一人で300台管理する技術
MySQLを割と一人で300台管理する技術
 
Dockerイメージで誰でも気軽にMroonga体験
Dockerイメージで誰でも気軽にMroonga体験Dockerイメージで誰でも気軽にMroonga体験
Dockerイメージで誰でも気軽にMroonga体験
 
MySQLerの7つ道具 plus
MySQLerの7つ道具 plusMySQLerの7つ道具 plus
MySQLerの7つ道具 plus
 
MHAの次を目指す mikasafabric for MySQL
MHAの次を目指す mikasafabric for MySQLMHAの次を目指す mikasafabric for MySQL
MHAの次を目指す mikasafabric for MySQL
 
5.7の次のMySQL
5.7の次のMySQL5.7の次のMySQL
5.7の次のMySQL
 
mikasafabric for MySQL
mikasafabric for MySQLmikasafabric for MySQL
mikasafabric for MySQL
 
とあるイルカの近況報告
とあるイルカの近況報告とあるイルカの近況報告
とあるイルカの近況報告
 
MySQL Fabricでぼっこぼこにされたはなし
MySQL FabricでぼっこぼこにされたはなしMySQL Fabricでぼっこぼこにされたはなし
MySQL Fabricでぼっこぼこにされたはなし
 
MySQLと正規形のはなし
MySQLと正規形のはなしMySQLと正規形のはなし
MySQLと正規形のはなし
 
MySQLおじさんの逆襲
MySQLおじさんの逆襲MySQLおじさんの逆襲
MySQLおじさんの逆襲
 
地雷職人の朝は早い
地雷職人の朝は早い地雷職人の朝は早い
地雷職人の朝は早い
 
イルカさんチームからゾウさんチームに教えたいMySQLレプリケーション
イルカさんチームからゾウさんチームに教えたいMySQLレプリケーションイルカさんチームからゾウさんチームに教えたいMySQLレプリケーション
イルカさんチームからゾウさんチームに教えたいMySQLレプリケーション
 
雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング
 
紹介 of Anemometer
紹介 of Anemometer紹介 of Anemometer
紹介 of Anemometer
 
MySQL5.7で遊んでみよう
MySQL5.7で遊んでみようMySQL5.7で遊んでみよう
MySQL5.7で遊んでみよう
 

Kürzlich hochgeladen

Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 

Kürzlich hochgeladen (11)

Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 

Index shotgun on mysql5.6

  • 1. Index Shotgun on MySQL 5.6(provisional) 2013/04/17 yoku0825 Modified version 2
  • 2. I’m yoku0825, working as DBA for the company’s web-service. My wife’s husband, my son’s father, lovin’ MySQL and Hannari-Tofu too much. I can’t even log in to PostgreSQL and Oracle but I’m fine! :)
  • 3. Have you read `SQL Antipatterns’?
  • 4. `Index Shotgun’ is one of the Antipatterns described in it.
  • 7. And I saw `Shotguned Index' at our MySQL. なんとIndex_lengthがData_lengthの4倍。
  • 9. By the way, Why is shotguned index Antipattern? Or "How much does it decrease performance?"
  • 10. 測ってみた CPU Xeon L5520 2.27GHz 1P4C8T Memory 12GiB(don't know any details) Storage RAID Controller(RAID5, 8PD) read 2450MiB/s, 3950IOPS write 2450MiB/s, 3900IOPS ext4 on LVM(noatimeしてない) my.cnf [mysqld] query-cache-type = 0 loose-innodb-buffer-pool-size = 1G loose-innodb-buffer-pool-instances = 1 loose-innodb-log-file-size = 128M loose-innodb-file-per-table = 1 loose-innodb-file-format = barracuda
  • 11. 測ってみた +--------------+------------------+------+-----+-------------------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------+------------------+------+-----+-------------------+-------+ | num | int(10) unsigned | NO | | 0 | | | md5 | varchar(32) | YES | | NULL | | | sha | varchar(40) | YES | | NULL | | | old_password | varchar(16) | YES | | NULL | | | password | varchar(41) | YES | | NULL | | | timeval | timestamp | NO | | CURRENT_TIMESTAMP | | +--------------+------------------+------+-----+-------------------+-------+ 1行あたり140bytes。 テストデータ1000万行をひたすらINSERTする苦行。 データは1.4GiB。
  • 12. InnoDB(5.5) - INSERT duration 0:00:00 0:07:12 0:14:24 0:21:36 0:28:48 0:36:00 0:43:12 0:50:24 0:57:36 1:04:48 1:12:00 no key pri(4) pri(4) + 1key(32) pri(4) + 1key(72) pri(4) + 1key(88) pri(4) + 1key(129) pri(4) + 3key(12) pri(4) + 3key(76) pri(4) + 3key(144) pri(4) + 3key(160)
  • 13. InnoDB(5.5) - size 0 1,000,000,000 2,000,000,000 3,000,000,000 4,000,000,000 5,000,000,000 6,000,000,000 no key pri(4) pri(4) + 1key(32) pri(4) + 1key(72) pri(4) + 1key(88) pri(4) + 1key(129) pri(4) + 3key(12) pri(4) + 3key(76) pri(4) + 3key(144) pri(4) + 3key(160)
  • 15. 散弾銃索引退治 • 取り敢えず重複インデックスがあったから消 した(基本) • 本当はもうちょっと削りたい。 – なんか上手い具合にINDEXの使われ度合いを測 れないもんかな? – Percona ServerやMariaDBには、そのインデックス を使って何行フェッチしたか統計を取る information_schemaが突っ込まれている。
  • 16. pt-duplicate-key-entry Percona Toolkitの1つで、重複インデックスを検出してくれる。 $ pt-duplicate-key-checker S=/usr/mysql/5.5.30/data/mysql.sock,u=tpcc,p=xxxx --database=tpcc # ######################################################################## # tpcc.stock # ######################################################################## # s_w_id is a left-prefix of PRIMARY # Key definitions: # KEY `s_w_id` (`s_w_id`), # PRIMARY KEY (`s_w_id`,`s_i_id`), # Column types: # `s_w_id` smallint(6) not null # `s_i_id` int(11) not null # To remove this duplicate index, execute: ALTER TABLE `tpcc`.`stock` DROP INDEX `s_w_id`; # ######################################################################## # Summary of indexes # ######################################################################## # Size Duplicate Indexes 2 # Total Duplicate Indexes 1 # Total Indexes 25 http://www.percona.com/doc/percona-toolkit/2.1/pt-duplicate-key-checker.html まずこれを退治。
  • 17. information_schema.INNODB_BUFFER_PAGE • 5.6.2から搭載された – 5.5.28, 5.1.66にもバックポートされてる (5.1.66はplugin-loadで食わせてやる必要がある) • InnoDB Buffer Poolにどんなページが載ってる のかがinformation_schemaからアクセスでき る。 – これで載ってるインデックスページ調べれば幸せ になれるんじゃない? とか思った。
  • 18. information_schema.INNODB_BUFFER_PAGE_LRU +---------------------+---------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------------------+---------------------+------+-----+---------+-------+ | POOL_ID | bigint(21) unsigned | NO | | 0 | | | LRU_POSITION | bigint(21) unsigned | NO | | 0 | | LRUリストの位置 | SPACE | bigint(21) unsigned | NO | | 0 | | | PAGE_NUMBER | bigint(21) unsigned | NO | | 0 | | | PAGE_TYPE | varchar(64) | YES | | NULL | | UNDO_LOG, INDEX, SYSTEMとか | FLUSH_TYPE | bigint(21) unsigned | NO | | 0 | | | FIX_COUNT | bigint(21) unsigned | NO | | 0 | | | IS_HASHED | varchar(3) | YES | | NULL | | | NEWEST_MODIFICATION | bigint(21) unsigned | NO | | 0 | | このページを最後に更新したLSN | OLDEST_MODIFICATION | bigint(21) unsigned | NO | | 0 | | このページを最初に更新したLSN | ACCESS_TIME | bigint(21) unsigned | NO | | 0 | | 初めてバッファプールに載った時間 | TABLE_NAME | varchar(1024) | YES | | NULL | | | INDEX_NAME | varchar(1024) | YES | | NULL | | | NUMBER_RECORDS | bigint(21) unsigned | NO | | 0 | | そのページに載っている行 | DATA_SIZE | bigint(21) unsigned | NO | | 0 | | そのページに載っているByte数 | COMPRESSED_SIZE | bigint(21) unsigned | NO | | 0 | | | COMPRESSED | varchar(3) | YES | | NULL | | | IO_FIX | varchar(64) | YES | | NULL | | | IS_OLD | varchar(3) | YES | | NULL | | OLDページかどうか | FREE_PAGE_CLOCK | bigint(21) unsigned | NO | | 0 | | ページがLRUリストから落ちるとインクリメント +---------------------+---------------------+------+-----+---------+-------+
  • 19. information_schema.INNODB_BUFFER_PAGE_LRU • とりあえず起動直後の状態をチェック。innodb_buffer_pool_size = 5M(=256ページ) mysql56> SELECT lru_position, table_name, index_name, number_records AS num, data_size, is_old, newest_modification AS LSN, access_time FROM innodb_buffer_page_lru WHERE page_type = 'INDEX'; +--------------+--------------------------------+-----------------------+-----+-----------+--------+-----+-------------+ | lru_position | table_name | index_name | num | data_size | is_old | LSN | access_time | +--------------+--------------------------------+-----------------------+-----+-----------+--------+-----+-------------+ | 210 | `SYS_IBUF_TABLE` | CLUST_IND | 0 | 0 | NO | 0 | 1153626747 | | 218 | `mysql`.`innodb_index_stats` | PRIMARY | 46 | 4060 | NO | 0 | 1153626732 | | 219 | `mysql`.`innodb_table_stats` | PRIMARY | 11 | 635 | NO | 0 | 1153626720 | | 220 | `SYS_TABLES` | ID_IND | 20 | 613 | NO | 0 | 1153626698 | | 221 | `SYS_TABLES` | CLUST_IND | 20 | 1513 | NO | 0 | 1153626661 | | 222 | `SYS_COLUMNS` | CLUST_IND | 103 | 6784 | NO | 0 | 1153626696 | | 223 | `SYS_DATAFILES` | SYS_DATAFILES_SPACE | 16 | 766 | NO | 0 | 1153626748 | | 224 | `SYS_TABLESPACES` | SYS_TABLESPACES_SPACE | 16 | 750 | NO | 0 | 1153626748 | | 225 | `SYS_INDEXES` | CLUST_IND | 25 | 1715 | NO | 0 | 1153626695 | | 240 | `SYS_FIELDS` | CLUST_IND | 30 | 1274 | NO | 0 | 1153626696 | | 241 | `SYS_FOREIGN` | FOR_IND | 4 | 148 | NO | 0 | 1153626696 | | 242 | `SYS_FOREIGN` | ID_IND | 4 | 280 | NO | 0 | 1153626768 | | 243 | `SYS_FOREIGN_COLS` | ID_IND | 4 | 246 | NO | 0 | 1153626768 | | 244 | `SYS_FOREIGN` | REF_IND | 4 | 152 | NO | 0 | 1153626696 | | 245 | `test`.`item` | PRIMARY | 17 | 938 | NO | 0 | 1153626777 | | 247 | `mysql`.`slave_master_info` | PRIMARY | 0 | 0 | NO | 0 | 1153626963 | | 250 | `mysql`.`slave_worker_info` | PRIMARY | 0 | 0 | NO | 0 | 1153626975 | | 253 | `mysql`.`slave_relay_log_info` | PRIMARY | 0 | 0 | NO | 0 | 1153626984 | +--------------+--------------------------------+-----------------------+-----+-----------+--------+-----+-------------+ 18 rows in set (0.01 sec) – lru_positionは大きい方が最近ぽい。 – そういえばmysql.slave_*はInnoDBだっけ。
  • 20. information_schema.INNODB_BUFFER_PAGE_LRU • テーブル1つ(test.brand)スキャンしてみる。 mysql56> SELECT lru_position, table_name, index_name, number_records AS num, data_size, is_old, newest_modification AS LSN, access_time FROM innodb_buffer_page_lru WHERE page_type = 'INDEX'; +--------------+--------------------------------+-----------------------+-----+-----------+--------+-----+-------------+ | lru_position | table_name | index_name | num | data_size | is_old | LSN | access_time | +--------------+--------------------------------+-----------------------+-----+-----------+--------+-----+-------------+ | 208 | `SYS_IBUF_TABLE` | CLUST_IND | 0 | 0 | NO | 0 | 1153626747 | | 216 | `mysql`.`innodb_table_stats` | PRIMARY | 11 | 635 | NO | 0 | 1153626720 | | 217 | `SYS_TABLES` | ID_IND | 20 | 613 | NO | 0 | 1153626698 | | 218 | `SYS_DATAFILES` | SYS_DATAFILES_SPACE | 16 | 766 | NO | 0 | 1153626748 | | 219 | `SYS_TABLESPACES` | SYS_TABLESPACES_SPACE | 16 | 750 | NO | 0 | 1153626748 | | 234 | `test`.`item` | PRIMARY | 17 | 938 | NO | 0 | 1153626777 | | 236 | `mysql`.`slave_master_info` | PRIMARY | 0 | 0 | NO | 0 | 1153626963 | | 239 | `mysql`.`slave_worker_info` | PRIMARY | 0 | 0 | NO | 0 | 1153626975 | | 242 | `mysql`.`slave_relay_log_info` | PRIMARY | 0 | 0 | NO | 0 | 1153626984 | | 245 | `SYS_TABLES` | CLUST_IND | 20 | 1513 | NO | 0 | 1153626661 | | 246 | `SYS_COLUMNS` | CLUST_IND | 103 | 6784 | NO | 0 | 1153626696 | | 247 | `SYS_INDEXES` | CLUST_IND | 25 | 1715 | NO | 0 | 1153626695 | | 248 | `SYS_FIELDS` | CLUST_IND | 30 | 1274 | NO | 0 | 1153626696 | | 249 | `SYS_FOREIGN` | FOR_IND | 4 | 148 | NO | 0 | 1153626696 | | 250 | `SYS_FOREIGN` | ID_IND | 4 | 280 | NO | 0 | 1153626768 | | 251 | `SYS_FOREIGN_COLS` | ID_IND | 4 | 246 | NO | 0 | 1153626768 | | 252 | `SYS_FOREIGN` | REF_IND | 4 | 152 | NO | 0 | 1153626696 | | 253 | `mysql`.`innodb_index_stats` | PRIMARY | 46 | 4060 | NO | 0 | 1153626732 | | 254 | `test`.`brand` | PRIMARY | 10 | 575 | NO | 0 | 1154017292 | +--------------+--------------------------------+-----------------------+-----+-----------+--------+-----+-------------+ 19 rows in set (0.01 sec) – lru_position 254に載ったから、やっぱりこっちがyoung側の気がする。 – でもミッドポイント挿入戦略とかいうのがなかったっけ。 – SELECTしただけだからnewest_modificationはからっぽ、access_timeは記録される。
  • 21. information_schema.INNODB_BUFFER_PAGE_LRU • test.brandに1行INSERTしてみる。 mysql56> SELECT lru_position, table_name, index_name, number_records AS num, data_size, is_old, newest_modification AS LSN, access_time FROM innodb_buffer_page_lru WHERE page_type = 'INDEX'; +--------------+--------------------------------+-----------------------+-----+-----------+--------+-----------+-------------+ | lru_position | table_name | index_name | num | data_size | is_old | LSN | access_time | +--------------+--------------------------------+-----------------------+-----+-----------+--------+-----------+-------------+ | 202 | `SYS_IBUF_TABLE` | CLUST_IND | 0 | 0 | NO | 0 | 1153626747 | | 210 | `mysql`.`innodb_table_stats` | PRIMARY | 11 | 635 | NO | 0 | 1153626720 | | 211 | `SYS_TABLES` | ID_IND | 20 | 613 | NO | 0 | 1153626698 | | 212 | `SYS_DATAFILES` | SYS_DATAFILES_SPACE | 16 | 766 | NO | 0 | 1153626748 | | 213 | `SYS_TABLESPACES` | SYS_TABLESPACES_SPACE | 16 | 750 | NO | 0 | 1153626748 | | 228 | `test`.`item` | PRIMARY | 17 | 938 | NO | 0 | 1153626777 | | 230 | `mysql`.`slave_master_info` | PRIMARY | 0 | 0 | NO | 0 | 1153626963 | | 233 | `mysql`.`slave_worker_info` | PRIMARY | 0 | 0 | NO | 0 | 1153626975 | | 236 | `mysql`.`slave_relay_log_info` | PRIMARY | 0 | 0 | NO | 0 | 1153626984 | | 239 | `SYS_TABLES` | CLUST_IND | 20 | 1513 | NO | 0 | 1153626661 | | 240 | `SYS_COLUMNS` | CLUST_IND | 103 | 6784 | NO | 0 | 1153626696 | | 241 | `SYS_INDEXES` | CLUST_IND | 25 | 1715 | NO | 0 | 1153626695 | | 242 | `SYS_FIELDS` | CLUST_IND | 30 | 1274 | NO | 0 | 1153626696 | | 243 | `SYS_FOREIGN` | FOR_IND | 4 | 148 | NO | 0 | 1153626696 | | 244 | `SYS_FOREIGN` | ID_IND | 4 | 280 | NO | 0 | 1153626768 | | 245 | `SYS_FOREIGN_COLS` | ID_IND | 4 | 246 | NO | 0 | 1153626768 | | 246 | `SYS_FOREIGN` | REF_IND | 4 | 152 | NO | 0 | 1153626696 | | 247 | `mysql`.`innodb_index_stats` | PRIMARY | 46 | 4060 | NO | 0 | 1153626732 | | 248 | `test`.`brand` | PRIMARY | 11 | 614 | NO | 319272605 | 1154017292 | | 252 | `test`.`factory` | PRIMARY | 4 | 254 | NO | 0 | 1154232813 | | 254 | `test`.`brand` | maker | 11 | 360 | NO | 319272654 | 1154232814 | +--------------+--------------------------------+-----------------------+-----+-----------+--------+-----------+-------------+ 21 rows in set (0.01 sec) – test.factoryが読み込まれたのは、FOREIGN KEYを切ってるからっぽい(FOREIGN KEYを消すと載らない) – PRIMARY INDEXとmaker INDEXがそれぞれLSNが記録されてる。
  • 22. ということは • LSNが記録されていない(=0)のレコードはSELECTだけさ れてるやつだから使われているって根拠になりそう。 – LNS <> 0で検索してみようか。 • SELECTで特定のINDEXを使った場合はそのINDEX(と データフェッチ用にPRIMARY KEY)だけが載るので、 テーブル上の全部のインデックスがリストされている = INSERTで載ったと思えそう。 – information_schema.statisticsとJOINして相関サブクエリで ゴニョゴニョやろうとしたらものすごく重くなったので断念。。 – information_schemaってテンポラリテーブルみたいに毎回 データをストアしてるぽいので、相関サブクエリだと確か に悲惨になるよね。。
  • 23. と思ったんですが • 本番に5.5.28(以降)が2台しかなかった。 • しかもその2台(Master & Slave)はバッファプールがガラガ ラだった。 • とりあえず、newest_modification = 0のページは無かった。。 – 一度LRUリストから落ちて次に読み込まれると、 newest_modificationは0に戻るのね。 • あと、InnoDB Compressed使ってるのですんごく innodb_buffer_page_lruへのアクセスが重い。 • Master & Slaveで分散させてると、そのチェック結果をマー ジしないとダメそうだよね。。 • あと、access_timeがミリ秒単位のUNIXTIMEを32bit unsignedで受け取っているので、49.7日くらいでオーバー フローする。。
  • 24. Percona Serverの information_schema. INDEX_STATISTICSみたいに ずぱっとどれくらい使ってるのか判るわけじゃない。 mysql> SET GLOBAL userstat=on; .. mysql> SELECT * FROM index_statistics; +--------------+------------+------------+-----------+ | TABLE_SCHEMA | TABLE_NAME | INDEX_NAME | ROWS_READ | +--------------+------------+------------+-----------+ | tpcc | item | PRIMARY | 100000 | +--------------+------------+------------+-----------+ 1 row in set (0.00 sec) いやこれもどのインデックス使ってないかっていう銀の弾丸じゃないけど。
  • 27. Where does it go “on MySQL 5.6(provisional)”?
  • 29. Upgrading 5.6 from 5.5 hasn’t effect on shotguned indexes.