先週末、MVP Community Camp(東京会場)という勉強会に参加しました。
このイベント2014年3月22日(土)に全国の各地域の会場でMicrosoftのMVP受賞者がSessionを行うというお祭りのような勉強会です。
詳しくは
http://mvp.microsoft.com/ja-jp/ComCamp2014.aspx
各地域会場のSession資料のまとめを用意してくれた方もいました(感謝)
久々にSQL serverの中身のお話を聞くことができて楽しかった。中身の話はDB Tech Sowcase以来かな。
参加したSessionは
・IE11で何がかわった
・SCDPM関連
・Hyper-Vの仮想スイッチのTips
・SQL server Internal(内部構造)
・SQL server トラブルシューティング
内容をまとめると
・IE11からはドキュメントモードが非推奨になったという衝撃。
・DPMはR2になってVMMで展開できるようになった。
・SQLserver①はDataStoreとDataAccessの動きを実際に見るというコアな内容
・SQLServer②は他者の失敗から学ぶトラブルシューティング
などなど内容も盛りだくさんでございました。
実際の内容はセッション資料を見ていただいたほうが間違いないですが
もう少し内容を書くと
・IE11以降さらにWeb標準に近づきつつある。
ドキュメントモードが非推奨になるなど互換対応は少しずつフェードアウトしていく のでIE特化アプリは今のうちに何とかしておかないと大変なことになりそう。。。
今後はHTTP/2に対応するか注目 等々
kawadaさん(ふろしきJsのslideshareの紹介もありました。
http://www.slideshare.net/kawada_hiroshi/internet-explorerie
この投稿はいろいろと考えさせられます。
次に後藤さんのHyper-VのTips
Hyper-Vの仮想スイッチの構造の説明から通信の流れの説明、設定方法など聞くことができました。
仮想スイッチの設定ファイル(XMLファイル)は仮想マシン側で持つのでライブマイグレーションした時に通信設定を都度直すといったことがなく便利です。物理スイッチの場合はネットワークの設定が物理スイッチにあるためこの辺都度設定が必要になるんですね。
ポートミラーリングは隣のマシンンおパケットをキャプチャできます。監視対象のシステムにアプリをインストールしなくてもキャプチャができるという便利な機能です。
仮想スイッチのアクセス制御は仮想スイッチのポートを通過させるかさせないか(拒否、許可)の設定ができます。
ファイアウォールのようにポリシーを設定することができますが、個々のポイントはポリシーが設定されていない通信は許可される、要は拒否するリストを作っておかないといけないという点でしょうか。設定はPowerShellですることができます。
あとはQOSのお話。設定は絶対値と重み。これ、設定後、即座に反映してくれてとてもよくできているそうなのでぜひ眠らせておかずに試してみてはいかがでしょうか。
次はこがさかさんのDPMのお話
DPMをあまり使う機会がなくあまり理解していないので詳しくは書けませんが、アプリケーションレベルではまだまだお作法があるように感じました。VMM連携することでさらに自動化できるようになってきているようですがまだ発展途上なのかな(ざっくりしすぎですね)ここは私自身もう少し勉強しないといけないです。
次に小澤さんのSQL server Internal(内部の動き)
基本的なクエリでページの内容や動作をDMV等で見せてくれました。基本的なクエリでも充分検証することができるという事がよくわかりました。
テーマはDataStoreとDataAccess
DataStore編
・データはページで持つ(データの格納単位はページ(8KB)です)
Selectで取得した際には必ずしも取得した行、列のデータだけではない。また1ROWとも限らない。取得した行列を含むページで取得している。
・データの密度
密度が高いとは1ページにはいるレコード数が多い。密度が高ければIOが一度で済むのでIO効率が良くなる。じゃあ圧縮っしたらIO効率さらによくなるけどこの場合展開する分CPU負荷が高くなるのでこのあたりはどちらをとるか要件次第(トレードオフ)
ちなみに圧縮はEnterprise以上じゃないと使いない。
DataAccess編
・ScanとSeek
Table Scanは行を全件見るので遅くなる
・Select Count
テーブル全件見に行くのでさくっとテーブルの概算件数を見たければDMVのsys.dm_db_partition_statsで確認するもあり
ポイントは
データを効率よく格納する
データを効率よく取得する
効率よく格納させるためにはアプリだけでなくテーブルのデータ長などの設計からIOをいかに効率よくさせるか
効率よく取得するにはキャッシュのせるか、キャッシュに効率よくデータ(ページ)を乗せるにはできる限り密度を高める(更新で断片化は注意が必要だけど)とか、ディスクIOがSSDなどで早くなれば今度はコアとメモリをいかに有効に使うかこの辺のバランスが大切。
あれ、ここまで言っていたかな。。。勝手に作ってたら(間違っていたら)すみません。。。
最後にelanlilacさんのSQL serverトラブルシューティング。
他人の失敗に学ぶことで自分が失敗しないようにという思いのこもったSessionでした。elanさんはこころの傷をえぐる思いで資料を作ったそうです。。。
データロスト編
・バックアップ命
・バックアップは大切なデータを守るための究極の手段(名言)
・論理ドライブにバックアップを取っていないか注意してね。
パフォーマンス編
・TempDBは分割してますか?OSの設定メモリのロック権限を許可してますか?
サイジング編
・CPUコアと物理メモリのバランス、HDD容量だけでなくIOを考慮したサイジングを
テスト編
・ピークテストが甘くなりがちで実運用が始まったときに問題が起こることも
・テストは余裕をもって複数回本番さながらの環境でやりましょう
他にもありますが色々なトラブルについて何が原因でどのように対処したらよいかまでざっくりと話してくれたのでとてもイメージがし易かったです。
過去にピークテストの甘さで痛い思いをしたのを思い出しました。実際にロックエスカレーションをトレースで見たときは気持ちよかった(なんか違う)。。。
なんて冗談はおいといて、当たり前の話ですが私の投稿よりは各スピーカーさんのSession資料が一番よくまとまっているわけで、ぜひ公開されている資料やサンプルスクリプトを試してみると色々な発見があるかもしれません。
ばばっと書いているので表現が誤っているなどあればご指摘いただければ幸いです。なるはやで修正させていただきます。
私も少しづつほかの会場のSession資料を確認していきたいと思います。