Twitter Facebook github

Archive for 1月, 2016

MySQLでプロセスリストを見る権限の話

サービスのパフォーマンス低下原因を探るとき、MySQL側はスロークエリを調査したりしますが今回はプロセスリストの話。

知ってる人も多いと思いますが、mysqlにログインしてSHOW PROCESSLISTで実行中のプロセスリストを表示できます。

これを元に詰まっているSQLを見つけたり、サービスインしているサーバーで実際の処理状態をモニタしたりする訳ですが、MySQLで閲覧用のユーザを切って使っている場合など、その結果が本当にすべてのプロセスではないことがあるので気をつけましょう、という話です。

 

MySQLのコマンドについての説明は大抵公式のリファレンスマニュアルにあるので、該当箇所を引用します。

13.7.5.29 SHOW PROCESSLIST Syntax

If you have the PROCESS privilege, you can see all threads.
Otherwise, you can see only your own threads (that is, threads associated with the MySQL account that you are using).

つまり「(SHOW PROCESSLISTを実行したユーザーが)PROCESS権限を持ってたら全部のスレッドを見れるけど、持ってないならそのユーザーのスレッドしか表示しないよ」ということになります。

 

普通の運用では、rootユーザーをそのまま使い回している人は論外として、別のユーザーを作り [GRANT ALL PRIVILEGES ON service_a.*] (または ALL PRIVILEGES の代わりにSELECTなどの閲覧のみ)のような権限を設定しているところが多いと思いますが、前述した PROCESS権限はMySQL全体にグローバルなものであるため、特定のデータベースへの全権限を付与したユーザーであってもこの権限は持っていません。

つまり、このGRANTを施しただけのユーザーからは他ユーザーが実行したプロセスは閲覧できないことになります。たまにPROCESS権限のないユーザーから SHOW PROCESSLIST を実行して、「待機中や実行に時間のかかっているプロセスはありませんでした!」と言ってくる人がいるのですが、本当に調べるためにはPROCESS権限を持っていないと意味がないということです。

 

特定のユーザーがPROCESS権限を持っているかどうかは、mysql.userテーブルの Process_priv を確認します。

Process_privはENUM(‘Y’,’N’)ですので、Yが返されればそのユーザーはPROCESS権限を持っています。もし指定したユーザーでNが返され、そのユーザーに権限を付与したい場合は次の通り。

 

殴り書きだけども 備忘録として。

2016年の抱負

なんだか良いことが起こりそうな2016年、新年あけましておめでとうございます!

昨年は本当に多くの人にお世話になりました。ブログを読んでくださってる皆さん、ありがとうございます。

2015年は好きなことをやり続けていたらあっという間に過ぎ去ってしまって、自分の中でこの月何やってたっけ?なんて空白の月もあったりして、今年はもう少し丁寧に、よく振り返りながら生きていきたいと思ってます。誕生日や新年ということで、1年に1度は振り返りや誓いを新たにする機会がありますが、それだと少なすぎるんですよね。個人的には会社の1Q〜4Q(クオーター:四半期)同様、3ヶ月に1度くらい振り返って現在地を明らかにして、軌道修正するのが丁度いいんじゃないかと思ってます。

去年からこんなブログをスタートできたので、自分の振り返りをするには丁度良い場だと思います。ここで宣言しておけば多くの人に見られてしまうので、自分を追い込んだ方がうまく動ける自分にとっては最高の場所です!

 

2016年の抱負

ということで、1年が終わったときに振り返れるように、具体的な目標を決めてみました。

 

①  投資元本を10倍にする (トレーダーとして)

今年の一番の達成したい目標であり、一番難しい目標でもあります。実戦練習と自分のキャパシティを計るためでもあり、100万円くらいからスタートです。(本当は5倍にしようかと思ったのですが…、Twitterでそう宣言してしまったので撤回しません)

昨年20歳になって、はじめて投資の世界へ飛び込みました。本当に面白くて、夢があります。でも実際は、日本に住んでいる以上投資はもう避けては通れないと思っています。今、実質金利がマイナス2%の日本に住んでいる限り、年間2%以上お金を増やさないとそれは目減りしているのと同じです。日本は先進国の中でも金融に関する知識がなさすぎることを最近実感しています。投資の道を進み、いずれは日本人の金融知識を世界水準まで向上させるための教育基盤を整えたいと思っています。

今は月利150%を目指しています。複利で動かしていくので、本当にスムーズに進めば7ヶ月で達成です。実際1年で10倍というのは、月利130%でも達成できるので意外と現実的な数字だと思っています。

 

② 新しい言語をマスターする (エンジニアとして)

今年はエンジニアとして新しい活動をすることは少なくなりそうですが、知識欲を満たすために書いておきます。でも年間1つくらいは新しい言語を実務で使っている気がするので意識せずとも達成できているかもしれませんが…。今年は1の目標があるので、本業のエンジニアとして怠らないための予防線でもあります。

今年腰を据えて習得できそうな未習得な言語というと、SwiftかPythonかなと思います。どちらも触り程度ですね。アプリのクライアントサイドは好きではないのですが、ニーズ的にはSwift使えた方が有利かもしれません。Pythonは競プロで過去に使っていて、設計思想が大好きです。

エンジニアとしては、AWSやJava、IPA上級の資格も取りたいし、マネジメントの方もより深く学んでいかなくちゃと思っているのですが…。いずれにせよ、この分野は目標にしなくても今年も精一杯楽しみながら学習していくと思います。

 

③ 毎月10回以上ブログを更新する (個人的なこと)

1の目標に比べて随分小さく感じますがこれはこれで。昨年このブログを始めてみて、自分のアウトプット量が段違いに増えました。技術系ではたまに寄稿させていただくメディアもあるのですが、そのレベルまで纏め上げなくともWIPな段階で投稿できるジブンメディアは持っておくと本当に気が楽で良いですね。

ブログを作って2ヶ月くらいになりますが、徐々にアクセスが増えてきて最近1日のPVが300を安定して超えてきました。正直なところ、アクセス稼ぐだけならSEO対策きっちりして、キャッチ画像も置いて、こんな日記は書かずに技術系エントリばっかり書いてます。見ての通りこのブログはアフィリエイトの類を一切置いてませんし、あえて過去の記事を遡りにくいtumblr風のワンカラムレイアウトで作っています。このブログは自分の思いを綴っていきながら、自分に興味がある人に読んでもらえたらそれでよくて、本当に特に何か目的があって始めたものではありません。

逆にPVが増えると見られていることを意識し緊張してしまうので、これ以上は別に増えなくていいんだけどな〜なんて思ったり(笑。もちろん多くの人に読んで頂けるのは本当に嬉しいことで、見られているという意識はプラスに働くことも多く、感謝しています。

小さいようでとても意義のあるこのブログを、できるだけペースを落とさずに今年も書いていきたいです。

 

そのほか小さいこと

分野毎に1つずつ挙げてみましたが、その他小さいことを挙げていくと、「英語をより多く話す年にしたい」「ピアノで難しい曲を完成させたい」「100冊くらい本を読みたい」「家族で旅行に行きたい」「交友関係を広げたい」…いろいろ浮かんできます。

欲張っても叶うことはないと思うので、毎月意識しつつ徐々に徐々に変えていこうと思います。

 

新年の目標の92%は失敗に終わる

ここまで書いていて何ですが、現実は辛いですね。これは統計学的な数字らしいです。

達成できる目標設定のコツとして、SMARTの法則というものがあります。簡単にいうと、「具体的かつ現実的に実現可能で、計測可能で、期限のある目標を立てよう」ということです。

また新年の誓いを立てていない方は、この法則に従って考えてみてはいかがでしょうか。

2016年が皆さんにとって素晴らしい1年になりますよう。

 

所感

やった!23時59分、ギリギリ元日のうちに間に合いました!

今年は葛西臨海公園のカウントダウンイベントに行って観覧車に乗り、毎年行っている明治神宮に参拝して御祈願をいただきました。毎年人が多くて疲れますが、年に1度のイベントなので楽しまないと損ですね。

CXlGKsiWQAAWYyQ

昨日のエントリで 「1年の計は元旦にあり」って書きましたが、何だかんだ朝まで外にいるので日中は寝正月になってしまうんですよね〜。でもお店なんかも元日閉めてるところが多いので、元日は出かけなくて正解かもしれないですね。2日の初売りや福袋は買いにいきますよ!

今年はもう少し時間がゆっくり流れてくれるといいな〜。