SlideShare a Scribd company logo
1 of 16
Download to read offline
Lightning Talk at Monitoring Casual #2




監視の勉強会ですが、
ちょっとMySQLの話をしますね



                                          @studio3104
@studio3104 (Satoshi SUZUKI)


-- Perl歴半年くらい

-- WEB業界2年目

-- 妻、娘、息子います




-- ソシャゲ、公式サイト、パチ(スロ)ンコ

-- こんなのやってます →→→→→→→

-- Perlと心中するらしいです



 自己紹介
スロークエリ
とりあえず
EXPLAIN
riywoさん!

マジriywoさん!
僕も作ってみた

「out-exec-mysql-
   slowquery」
MySQL                                                                  slow_log



  1 #!/usr/bin/env perl$                                  27 $                            tail
  2$                                                      28 unless ( defined $slowlog->{sql} ) {$
  3 use strict;$                                          29 print $mp->pack($slowlog);$
  4 use warnings;$                                        30 next;$
  5 use Data::Dumper;$                                    31 }$
          EXPLAIN
  6 use DBIx::Handler;$
  7 use JSON::XS;$
                                                          32 $
                                                          33 my $select_statement;$
  8 use Data::MessagePack;$                               34 if ( $slowlog->{sql} =~ /(select[^;]+)/i ) {$
  9$                                                      35 $select_statement = $1;$
 10 $| = 1;$                                              36 }$
 11 $                                                     37 $
 12 my $mp = Data::MessagePack->new();$                   38 if ( $slowlog->{sql} =~ /^use ([^;]+)/i ) {$
 13 $                                                     39 $db = '`' . $1 . '`';$
 14 my $db_user = "root";$                                40 }$
 15 my $db_passwd = "";$                                  41 $
 16 my $db_opt = { RaiseError => 0, PrintError => 1 };$   42 if ( defined $db && defined $select_statement ) {$
 17 my $handler = DBIx::Handler->new( "DBI:mysql:         43 $handler->dbh->do("use $db");$
database=information_schema:1 27.0.0.1", $db_user,        44 my $explains = eval { $handler->dbh-
$db_passwd, $db_opt );$                                   >selectall_arrayref( "EXPLAIN $selec t_statement", +{
 18 $                                                     Slice => {} } ); };$
 19 my $db;$                                              45 if ( ref $explains eq 'ARRAY' ) {$
 20 my $long_query_time = $handler->dbh-                  46      $slowlog->{explain} = $explains;$
>selectrow_array($                                        47      $slowlog->{database} = $db;$
 21 "SELECT VARIABLE_VALUE FROM                           48 }$
GLOBAL_VARIABLES WHERE VARIABLE_NAME =                    49 }$
'LONG_Q UERY_TIME'");$                                    50 $
 22 $handler->dbh->do("SELECT SLEEP                       51 print $mp->pack($slowlog);$
($long_query_time)");$                                    52 }$
 23 $
 24 while ( my $json = <STDIN> ) {$
 25 my $slowlog = eval { decode_json($json); };$
 26 next if ($@);$                                                                                       store    MongoDB
DEMO
Openess is our
driver for
excellence
公開したよ!
https://github.com/studio3104/out-exec-mysql-slowquery
スーパー宣伝タイム
Lightning Talk at Monitoring Casual #2




監視の勉強会ですが、
ちょっとMySQLの話をしますね

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



                                          @studio3104

More Related Content

What's hot

Hachiojipm #5 LT資料 [テーマ:最近いいなと思ったもの]
Hachiojipm #5 LT資料 [テーマ:最近いいなと思ったもの] Hachiojipm #5 LT資料 [テーマ:最近いいなと思ったもの]
Hachiojipm #5 LT資料 [テーマ:最近いいなと思ったもの]
norry_gogo
 
Perlで伝統芸能
Perlで伝統芸能Perlで伝統芸能
Perlで伝統芸能
hitode909
 
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
azuma satoshi
 
Mojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてるMojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてる
jamadam
 
Redis Intro Osc2010 Tokyo Spring
Redis Intro Osc2010 Tokyo SpringRedis Intro Osc2010 Tokyo Spring
Redis Intro Osc2010 Tokyo Spring
Makoto Ohnami
 
System select hint_for_h2
System select hint_for_h2System select hint_for_h2
System select hint_for_h2
Jun Chiba
 

What's hot (19)

Hachiojipm #5 LT資料 [テーマ:最近いいなと思ったもの]
Hachiojipm #5 LT資料 [テーマ:最近いいなと思ったもの] Hachiojipm #5 LT資料 [テーマ:最近いいなと思ったもの]
Hachiojipm #5 LT資料 [テーマ:最近いいなと思ったもの]
 
Start printf 6_takarakasai
Start printf 6_takarakasaiStart printf 6_takarakasai
Start printf 6_takarakasai
 
Perlで伝統芸能
Perlで伝統芸能Perlで伝統芸能
Perlで伝統芸能
 
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
 
MongoDBの使い方
MongoDBの使い方MongoDBの使い方
MongoDBの使い方
 
OSC京都2011
OSC京都2011OSC京都2011
OSC京都2011
 
Grails-1.1を斬る!~Grails-1.1からのチーム開発~ in Tokyo
Grails-1.1を斬る!~Grails-1.1からのチーム開発~ in TokyoGrails-1.1を斬る!~Grails-1.1からのチーム開発~ in Tokyo
Grails-1.1を斬る!~Grails-1.1からのチーム開発~ in Tokyo
 
Mac_Terminal_ver1.0
Mac_Terminal_ver1.0Mac_Terminal_ver1.0
Mac_Terminal_ver1.0
 
実用裏方 Perl 入門
実用裏方 Perl 入門実用裏方 Perl 入門
実用裏方 Perl 入門
 
Yahoo!ボックスAPI Hackday資料
Yahoo!ボックスAPI Hackday資料Yahoo!ボックスAPI Hackday資料
Yahoo!ボックスAPI Hackday資料
 
Yahoo!ボックスAPI Hackathon向け資料
Yahoo!ボックスAPI Hackathon向け資料Yahoo!ボックスAPI Hackathon向け資料
Yahoo!ボックスAPI Hackathon向け資料
 
zsh とわたし
zsh とわたし zsh とわたし
zsh とわたし
 
Mojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてるMojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてる
 
Ruby 同好会宣言
Ruby 同好会宣言Ruby 同好会宣言
Ruby 同好会宣言
 
PHP Object Injection入門
PHP Object Injection入門PHP Object Injection入門
PHP Object Injection入門
 
Redis Intro Osc2010 Tokyo Spring
Redis Intro Osc2010 Tokyo SpringRedis Intro Osc2010 Tokyo Spring
Redis Intro Osc2010 Tokyo Spring
 
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
 
System select hint_for_h2
System select hint_for_h2System select hint_for_h2
System select hint_for_h2
 
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道20123時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
 

Viewers also liked

Viewers also liked (10)

全文検索エンジンgroongaの紹介@groongaを囲む夕べ
全文検索エンジンgroongaの紹介@groongaを囲む夕べ全文検索エンジンgroongaの紹介@groongaを囲む夕べ
全文検索エンジンgroongaの紹介@groongaを囲む夕べ
 
Prometheus meets Consul -- Consul Casual Talks
Prometheus meets Consul -- Consul Casual TalksPrometheus meets Consul -- Consul Casual Talks
Prometheus meets Consul -- Consul Casual Talks
 
Mackerel & Norikra mackerel meetup #4 LT
Mackerel & Norikra mackerel meetup #4 LTMackerel & Norikra mackerel meetup #4 LT
Mackerel & Norikra mackerel meetup #4 LT
 
Gazelle & CPAN modules for performance. Shibuya.pm Tech Talk #17 LT
Gazelle & CPAN modules for performance. Shibuya.pm Tech Talk #17 LTGazelle & CPAN modules for performance. Shibuya.pm Tech Talk #17 LT
Gazelle & CPAN modules for performance. Shibuya.pm Tech Talk #17 LT
 
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LTNorikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
 
メルカリのデータベース戦略 / PHPとMySQLの怖い話 MyNA会2015年8月
メルカリのデータベース戦略 / PHPとMySQLの怖い話 MyNA会2015年8月メルカリのデータベース戦略 / PHPとMySQLの怖い話 MyNA会2015年8月
メルカリのデータベース戦略 / PHPとMySQLの怖い話 MyNA会2015年8月
 
Big Master Data PHP BLT #1
Big Master Data PHP BLT #1Big Master Data PHP BLT #1
Big Master Data PHP BLT #1
 
Rhebok, High Performance Rack Handler / Rubykaigi 2015
Rhebok, High Performance Rack Handler / Rubykaigi 2015Rhebok, High Performance Rack Handler / Rubykaigi 2015
Rhebok, High Performance Rack Handler / Rubykaigi 2015
 
メルカリでのNorikraの活用、 Mackerelを添えて
メルカリでのNorikraの活用、 Mackerelを添えてメルカリでのNorikraの活用、 Mackerelを添えて
メルカリでのNorikraの活用、 Mackerelを添えて
 
ISUCONの勝ち方 YAPC::Asia Tokyo 2015
ISUCONの勝ち方 YAPC::Asia Tokyo 2015ISUCONの勝ち方 YAPC::Asia Tokyo 2015
ISUCONの勝ち方 YAPC::Asia Tokyo 2015
 

Similar to もにかじ2 lt @studio3104

EucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみました
EucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみましたEucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみました
EucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみました
Etsuji Nakai
 
PerlとSQLのいろいろ
PerlとSQLのいろいろPerlとSQLのいろいろ
PerlとSQLのいろいろ
Takuya Tsuchida
 
tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1
Ryosuke IWANAGA
 
Haskell勉強会 14.1〜14.3 の説明資料
Haskell勉強会 14.1〜14.3 の説明資料Haskell勉強会 14.1〜14.3 の説明資料
Haskell勉強会 14.1〜14.3 の説明資料
Etsuji Nakai
 

Similar to もにかじ2 lt @studio3104 (20)

Material
MaterialMaterial
Material
 
What is Metasepi?
What is Metasepi?What is Metasepi?
What is Metasepi?
 
テーマ「最適化」
テーマ「最適化」テーマ「最適化」
テーマ「最適化」
 
EucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみました
EucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみましたEucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみました
EucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみました
 
PerlとSQLのいろいろ
PerlとSQLのいろいろPerlとSQLのいろいろ
PerlとSQLのいろいろ
 
tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1
 
0x300
0x3000x300
0x300
 
SecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのか
SecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのかSecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのか
SecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのか
 
CakePHP+Smartyハイブリッドによるラクラク開発
CakePHP+Smartyハイブリッドによるラクラク開発CakePHP+Smartyハイブリッドによるラクラク開発
CakePHP+Smartyハイブリッドによるラクラク開発
 
Haskell勉強会 14.1〜14.3 の説明資料
Haskell勉強会 14.1〜14.3 の説明資料Haskell勉強会 14.1〜14.3 の説明資料
Haskell勉強会 14.1〜14.3 の説明資料
 
モダンmod_perl入門 #yapcasia
モダンmod_perl入門 #yapcasiaモダンmod_perl入門 #yapcasia
モダンmod_perl入門 #yapcasia
 
Gorinphp0729
Gorinphp0729Gorinphp0729
Gorinphp0729
 
Gorinphp0729
Gorinphp0729Gorinphp0729
Gorinphp0729
 
dm-thin-internal-ja
dm-thin-internal-jadm-thin-internal-ja
dm-thin-internal-ja
 
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
 
SQLite の暗号化
SQLite の暗号化SQLite の暗号化
SQLite の暗号化
 
テーマ「最適化 その2」
テーマ「最適化 その2」テーマ「最適化 その2」
テーマ「最適化 その2」
 
about DakotagUI
about DakotagUIabout DakotagUI
about DakotagUI
 
Docker やってみた
Docker やってみたDocker やってみた
Docker やってみた
 
SQLite の暗号化
SQLite の暗号化SQLite の暗号化
SQLite の暗号化
 

More from Satoshi Suzuki (7)

PyCon Kyushu 2018 LT
PyCon Kyushu 2018 LTPyCon Kyushu 2018 LT
PyCon Kyushu 2018 LT
 
Monitoringcasual007
Monitoringcasual007Monitoringcasual007
Monitoringcasual007
 
focuslight-validator validate sinatra application - validation night at LINE ...
focuslight-validator validate sinatra application - validation night at LINE ...focuslight-validator validate sinatra application - validation night at LINE ...
focuslight-validator validate sinatra application - validation night at LINE ...
 
インフラエンジニアは死んだ Yapc -asia 2014
インフラエンジニアは死んだ Yapc -asia 2014 インフラエンジニアは死んだ Yapc -asia 2014
インフラエンジニアは死んだ Yapc -asia 2014
 
My sql casual talks vol.6
My sql casual talks vol.6My sql casual talks vol.6
My sql casual talks vol.6
 
Fluetnd meetup japan #3 @studio3104
Fluetnd meetup japan #3 @studio3104 Fluetnd meetup japan #3 @studio3104
Fluetnd meetup japan #3 @studio3104
 
MySQL ガチBeginnerがやってみたことと反省したこと
MySQL ガチBeginnerがやってみたことと反省したことMySQL ガチBeginnerがやってみたことと反省したこと
MySQL ガチBeginnerがやってみたことと反省したこと
 

もにかじ2 lt @studio3104

  • 1. Lightning Talk at Monitoring Casual #2 監視の勉強会ですが、 ちょっとMySQLの話をしますね @studio3104
  • 2. @studio3104 (Satoshi SUZUKI) -- Perl歴半年くらい -- WEB業界2年目 -- 妻、娘、息子います -- ソシャゲ、公式サイト、パチ(スロ)ンコ -- こんなのやってます →→→→→→→ -- Perlと心中するらしいです 自己紹介
  • 6.
  • 7.
  • 8.
  • 11. MySQL slow_log 1 #!/usr/bin/env perl$ 27 $ tail 2$ 28 unless ( defined $slowlog->{sql} ) {$ 3 use strict;$ 29 print $mp->pack($slowlog);$ 4 use warnings;$ 30 next;$ 5 use Data::Dumper;$ 31 }$ EXPLAIN 6 use DBIx::Handler;$ 7 use JSON::XS;$ 32 $ 33 my $select_statement;$ 8 use Data::MessagePack;$ 34 if ( $slowlog->{sql} =~ /(select[^;]+)/i ) {$ 9$ 35 $select_statement = $1;$ 10 $| = 1;$ 36 }$ 11 $ 37 $ 12 my $mp = Data::MessagePack->new();$ 38 if ( $slowlog->{sql} =~ /^use ([^;]+)/i ) {$ 13 $ 39 $db = '`' . $1 . '`';$ 14 my $db_user = "root";$ 40 }$ 15 my $db_passwd = "";$ 41 $ 16 my $db_opt = { RaiseError => 0, PrintError => 1 };$ 42 if ( defined $db && defined $select_statement ) {$ 17 my $handler = DBIx::Handler->new( "DBI:mysql: 43 $handler->dbh->do("use $db");$ database=information_schema:1 27.0.0.1", $db_user, 44 my $explains = eval { $handler->dbh- $db_passwd, $db_opt );$ >selectall_arrayref( "EXPLAIN $selec t_statement", +{ 18 $ Slice => {} } ); };$ 19 my $db;$ 45 if ( ref $explains eq 'ARRAY' ) {$ 20 my $long_query_time = $handler->dbh- 46 $slowlog->{explain} = $explains;$ >selectrow_array($ 47 $slowlog->{database} = $db;$ 21 "SELECT VARIABLE_VALUE FROM 48 }$ GLOBAL_VARIABLES WHERE VARIABLE_NAME = 49 }$ 'LONG_Q UERY_TIME'");$ 50 $ 22 $handler->dbh->do("SELECT SLEEP 51 print $mp->pack($slowlog);$ ($long_query_time)");$ 52 }$ 23 $ 24 while ( my $json = <STDIN> ) {$ 25 my $slowlog = eval { decode_json($json); };$ 26 next if ($@);$ store MongoDB
  • 12. DEMO
  • 13. Openess is our driver for excellence
  • 16. Lightning Talk at Monitoring Casual #2 監視の勉強会ですが、 ちょっとMySQLの話をしますね ご清聴ありがとうございました @studio3104