OSC2019 島根 で SQLチューニングのハンズオンブース出典をしてきた

先日 島根にて開催された OSC 2019 Shimane に参加してきました。

www.ospn.jp

自分が JPUG中国支部長 になってから 初めての参加という事で、ブース出典をする OSCで2拠点目 という形になりました。

今回の関わり

今回はブース出典で OSC島根に関わったのですが、運営野方より コミュニティで催し(もくもく会・ハンズオン・ワークショップ等) をして欲しい、とのご要望があったので ハンズオン形式のブースを出典しました。

また、PostgreSQLに関する本を 今回も提供させて頂きました。


失敗から学ぶRDBの正しい歩き方 (Software Design plus)

失敗から学ぶRDBの正しい歩き方 (Software Design plus)

[改訂新版]内部構造から学ぶPostgreSQL 設計・運用計画の鉄則 (Software Design plus)

[改訂新版]内部構造から学ぶPostgreSQL 設計・運用計画の鉄則 (Software Design plus)


当日のハンズオンについて

当日のハンズオンについては 「そもそも、DBのハンズオンって何する?」って所から始まりました。

そもそも DBのハンズオンとかデモって Webアプリケーションなどに比べて 地味 ってよく言われますし、中々題材にいつも困ります。

結局の所、 「高橋(自分)が得意な所で 一番面白いと思ってる所」 みたいな ベン図の中心 みたいな所で 「SQLのチューニングをやってもらおう」って方向性を決めました。

f:id:ikkitang1211:20191014222508p:plain

という所で ハンズオンの内容としては以下にしました。

・ DockerでPostgreSQLを立ち上げてみよう。
・ PostgreSQL に dump ファイルをリストアしてみよう。
・ テーブルにインデックスを貼ってSQLの高速化をしてみよう。
・ Explainを使って何がどう変わったのか、みてみよう。

Docker を使ったのは ハンズオンで詰まった時に僕のサポート出来る範囲として Dockerじゃないと大変そう、って懸念があったのと、学生さんも 「Docker、ナウいっぽいぞ!」 って興味を持ってくれるかな?という所で決めました。

後は もう割と 非常に簡単な所から リストアをやってもらう所と Indexを貼ってもらう所、Explainで前後を見てもらう所 などという所で 全体 で 15分前後 という体制で作りました。

当日の ハンズオン内容はGithubに上がっております。

github.com

レポジトリを開いてもらったら分かるかと思いますが、README に 作業手順書 のリンクを貼っていて それをクリックすれば 0,1,2,3 と 当日の作業手順のリンクが載っていて、それにそって やっていけば 出来る、っていう仕組みにしました。

f:id:ikkitang1211:20191014222706p:plain

これについては 「次どこやればいいですか?」って質問が無かったので 上手く使えた所かな?と思います。

実際の高速化が気になる方は 先日の OSC広島の時のブログに書いたので そちらをご参照してください。

www.ikkitang1211.site

という所で じゃあ今回のハンズオンについて 反省点を考えてみたいと思います。

良かった所

  • Githubでうまく共有体制を取ってた所。
    • ちゃんとハンズオンとして 張り付く事無く ある程度 自走してもらえた気がする。
  • 先述のように やる事を明確化した事。
    • どれぐらいの時間でどれぐらいの所をやる、って所で 期待値コントロールが上手く出来たかな?って気持ちもあります。
    • 割と盛況でした!!

見つかった課題

さて、反省点という意味ではめちゃくちゃありました()

  • スタッフ内での共有が遅かった。
    • これは僕が悪いです。
    • 前日深夜まで 準備をやってたので どういう事をやるかの共有を伝えきれて無かったです。
  • 当日のターゲット層を上手く捉えきれて無かった。
    • その1
      • 僕「今日のハッシュタグにGithubのリンクが上がってるので〜」
      • 参加者「あ、Twitterやってなくて。。」
    • その2
      • 僕「Github開いてもらっても?」
      • 参加者「あ?GUIしかなくて・・」
    • その3
      • 僕「Docker入れてもらっていいですか?」
      • 参加者「Linux Mintですけど大丈夫です?」
    • 想定外が色々ありました。 まあなんとか対応出来たけど、もうちょい 特に Twitterやってない方へのアフターケアとか考えてても良かったです。
  • 動作確認した端末がMacだけだった。
  • Docker のimageのpull がいつまでも終わらない。
    • これは・・ 当日、OSCの共有Wifiとかを使ったのですが まあこれが全員の共有Wifiだったので全然ダウンロードが進まず、困ったな。。って感じでした
    • 結局 自分の私物PCをお貸しして マンツーマンで 作業をして頂きました。

次回以降の改善点(Try)

  • 予め Github のレポジトリをスタッフ内で共有しておくようにする。
  • Githubのリンクは bit.ly などのURL短縮ツールなどで手打ちでも入力出来るような形式にしておく。
  • Dockerのpullが終わらない事を想定して 予め ハンズオンの全体を 動画で撮っておく。

まあ、ざっくり上記ぐらいの事前準備はやっても良いのでは?と思いました。

告知

www.postgresql.jp

デモの延長みたいな話を PostgreSQL Conference Japan 2019 でやります!

アプリケーションエンジニア の観点から、 SQLの応答速度を高速化したみたいな所で 理論と改善の実例をご紹介させていただく予定です!