SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

Archive for 8月, 2010

Tech・Ed Japan 2010 2 日目 参加レポート

leave a comment

本日の参加セッションはこちら。

[本日の参加セッション]

  1. [T4-305] スケールしないシステムにおける開発者の過ち ? SQL Server の場合 ?
  2. [T1-301] 企業内 PC の運?を変える Windows Intune
  3. [T1-312] クラウド時代のデータベース、ベスト プラクティス ? 企業情報システムをクラウドへ移せ ?
  4. [TH-403] SQL Server 現役サポートエンジニア直伝 ? SQL Server トラブル シューティング実践編 ?
  5. [T4-401] SQL Server による?規模 Mission Critical システムの展開

?

■[T4-305] スケールしないシステムにおける開発者の過ち ? SQL Server の場合 ?

クラウドではなく、レガシー SQL Server のセッション
ロック待ちへの対策 / SQL の書き方の問題

スケールしないシステム

開発 / テスト環境では問題がなかったのに本番環境だと性能が出ない
→ テスト環境では 1 ユーザーでのみ動作検証をしていない。(多重度を考慮した負荷テストを実施していない)
  複数ユーザーで実施しないとロックの問題に気付きづらい

検索結果のレスポンスはミリ秒 / マイクロ秒を意識する。
→ 1 秒は速いわけではない。

ピークタイムに耐えられない
→ 通常は問題ないが、ピーク時に問題が発生

?

スケールしないシステムへの対策

  1. DB 設計時の対策
  2. アプリケーション開発時の対策
    →今回のセッション内容
     ロック待ちへの対応
     SQL の書き方
  3. DBA での対応

?

分離レベルが原因のロック待ち

TransactionScope をそのまま使っていないか?
ADO.NET では既定値は分離レベルが Serializable となっている。
→ トランザクションが終了するまで、共有ロックがかかった状態になる。
  →更新系がブロックされる。

Read Committed を使用することを検討する。

?

Serializable の弊害

Serializable だどデッドロックが簡単に発生

?

デッドロックの監視

プロファイラ (Deadlock Graph / Chain) やトレースフラグ (1222) で監視ができる。
デッドロックが発生すると片側のトランザクションが取り消される。

?

回避策
Serializable を避ける。
ショートトランザクションになるようにする。

楽観的同時実行制御を利用する。

デモでは、Read Committed に分離レベルを変更してデモを実施。

?

ロックエスカレーションによる待ち

獲得するロック数が多い場合に、エスカレートする機能
ロックエスカレーションは言われているほど発生しない。

ロックエスカレーションは トレースフラグ 1211 でサーバー全体で禁止できる。
SQL Server 2008 以降はテーブル単位で禁止できる。

?

テーブルスキャンによるロック待ち

SQL Server で最も注意すべき内部動作

?

回避策

Serializable 分離レベルを避ける。
ショートトランザクションにする。
Index Seek になるようにする。
→ インデックスをつける。
  必要に応じて、FORCESEKK ヒントを検討

?

Index Scan によるロック待ち

Index Scan は、インデックスの全スキャン。
Index Seek は該当データをピンポイント検索。

?

Index Scan になりえるケース

LINE ‘%aaaa’ : 後方一致 (FORCESEEK をつけるとエラーになる)
列名 + “AAA” = “TESTAAAA” : 列に対して演算 (左辺)
LEFT(列名,1) = “1” : 列に対して関数 (左辺)
<> : 否定演算
異なる照合順序で検索

回避策

前方一致になるように UI を工夫
列データに対する計算処理を止める (右辺に移動できないか)
列データに対する関数処理への対策
ダーティ リードに注意して NOLOCK ヒントを利用する
Read Committed Snapshot を利用する
計算、関数、照合順序の変更をしなくて済むようにデータ格納時に加工する。
Visual Studio 2008 の LINQ to Entities は CHARINDEX 関数に変換されてしまうので注意

ユーザー定義関数の注意

列データに対して、ユーザー定義関数を利用する場合も Index Scan が発生することに注意

?

暗黙の型変換に注意

varchar 列に、nvarchar のパラメーターに注意
実行プランで、CONVERT_IMPLICIT が出力されていたら注意。
LINQ では、一部のメソッド (StartsWith) が nvarchar へ変換される。
暗黙の型変換により、かなりの性能差が出ることもある。

?

プロシージャキャッシュの確認

dm_exec_cache_plan で確認
AddWithValue の場合は、パラメーターのサイズ指定ができないので、パラメータの文字列の長さが、
変更される度に別プランとしてキャッシュされてしまう。
VS 2010 では改善されている。 (nvarchar(4000) または、 nvarchar(8000) に変換される。)

?

大量 Insert 時は SqlBulkCopy!

大量データのインサートには、SQLBulkCopy クラスや BULK INSERTを使用する。

?

?

■[T1-301] 企業内 PC の運?を変える Windows Intune Windows Intuhe とは?

Windows Intune
→ System Center の流れをくんでいる。

クラウド型の管理サービス
アンチウイルス / アンチマルウェアを含む
最新 OS で標準化 (Windows 7 EE SA 付き)
ライセンスもクラウド型 = サブスクリプション $11/ 月
MDOP (オプション) $1/月

運用管理ツールの運用管理を止めましょう。
→ 契約をするとクラウド上の運用管理サービスを使えるようになる。

?

Windows Intune 管理サービスの利用

サインインをすると管理画面にいける。
→ Federation は現在対応していないが、今後 拡張される予定らしい。

自前サーバーなしでの運用管理サービス。
→複数ユーザーの状態をひと目で確認
 サーバー不要で能動的な管理サービス

SaaS 型のコンピューター管理機能

  • 資産管理
    ハードウェア / ソフトウェアインベントリ
    ライセンス
  • 更新管理
  • マルウェアからの保護
  • 稼働監視
    → OpsMgr のエージェント相当が導入される。
  • ポリシーと構成管理

?

利用手順

  1. Windows Live でログオン
  2. クライアントソフト ()x86 / x64) のダウンロード
  3. ダウンロードしたモジュールをクライアントソフトのインストール
  4. コンピューターを Intune の管理コンソールでグループ化
  5. 管理

?

インストールのデモ

クライアントモジュールのインストールはインストーラーを実行するだけで完了する。
→クライアントモジュール自体に署名等が埋め込まれている。
 自社の Intune で管理されるようにするためのインストーラーなので、モジュールの取り扱いには注意する。

インストール後、Windows Update を経由して 11 個のモジュールがダウンロードされる。

?

ライセンス
接続クライアントライセンス

管理
管理コンソールを使うためには、Silverlight 3.0 が必要になる。
XP SP2 を管理する場合、別途 2 つのモジュールをダウンロードする必要がある。

?

コンピュータのグループ化
管理しやすいようにグルーピングする。

?

Windows Intune 管理サービス解説

デモ中心のセクション
現在は Beta 版

機能ごとに管理者のアカウントを設定することが可能になっている。

アラートをトップ画面のダッシュボードから確認することができる。
→ブラウザ上の管理コンソールであるが、画面の繊維はシームレスに行われる。

アラートに対してのヘルプも用意されている。
→ アラートは 606 種類ある。
  アラートをメールで連携することも可能。

マルウェア対策は ForeFront 相当のエンジンが実装されている。
→テストウィルスを使ったマルウェア対策のデモ

ライセンス管理も、管理コンソールから実施できる。
→ 仮想マシンも含めて管理できるので、最終的にはライセンス管理は物理 / 仮想を分けて管理できるはず。
  (仮想はライセンスの考え方が異なるため)

ハードウェア情報でモデルが Virtual Machine となっている場合は、仮想マシン

ソフトウェアは App-V で配信されているかも確認することが可能
→ AppV Cache ?? を見ているらしい。

Intune のグループと AD の OU は別。
グループのネストは 7 つ ? まで可能。

WSUS 相当の機能が含まれているため、更新プログラムの承認 / インストールするグループの設定が可能。
→ 自動承認機能もある。

ポリシーの機能も備えている。
ポリシーをテンプレート化して、使ってもらえるポリシーの設定を目指している。

ソフトウェアのインストール状況はコンピュータ単位、全台を対象とした管理をすることができる。
CSV / Excel でデータをエクスポート可能。

ボリュームライセンスの管理も Intune 上で実施できる。
→ CSV / HTML?? でエクスポート可能

?

資産管理

ソフトウェア インベントリは App-V にも対応している

  1. MSI ソフトウェア リポジトリ
  2. プログラムの追加と削除
  3. App-V キャッシュ

から情報を取得

?

ライセンス管理

既存の契約情報をアップロードし、Windows Intune にアップロード可能

?

マルウェア対策

既存のマルウェアソフトを活かすこともできる。
→ ポリシーで Intune のマルウェア対策を無効にする。

?

稼働監視
現在のバージョンは、サーバー OS にもインストールできる。

?

ポリシーと構成管理
SCVMM VNext の DCM に基づいた構成になっている。(次世代ポリシー基盤)

グループ階層の一番下のレベルのポリシーが適用される。
→ AD の GPO は優先される。

サンプルのMOFの先頭に? [#pragma autorecover] が必要

MOF COMP をたたくと WMI クエリの名前空間に [rootWindowsIntune] を選択できるようになる。

SCO (System Center Online) という表記になっている個所もあるかもしれない。
→ 旧バージョンの名称

新しいポリシー基盤 ”Lantern”

Active Directory 非依存の共通ポリシー基盤の確立
→ SCCM VNext DCN / Windows Intune → クラウド時代のポリシー管理になるか?

今回のポリシー基盤には、SML が使われているはず (確定情報ではない)

?

サービスステータスの確認

現状のサービスの提供状況を確認する、ポータル画面が用意されている。

?

リモートアシスタンス

Microsoft Easy Assist を使って、クライアントからリモート アシスタンス要求をだせる。
→モジュールは Intune をインストールすると導入される。

?

まとめ

企業内の利用シナリオ

Windows 7 EE の機能 / 2008 R2 と連携

  • BitLocker
  • ダイレクトアクセス / ブランチキャッシュ
  • AppLocker
  • MDOP

SA 付きなので必要なバージョンへのダウングレード権がある。

9/3 夕方に新宿で Windows Intune の Tech Fielders セミナーがある。

?

■[T1-312] クラウド時代のデータベース、ベスト プラクティス ? 企業情報システムをクラウドへ移せ ?

SQL Azure の活用について

SQL Azure 概要

Relational Database as a Service
自動化された管理
→物理サーバーや仮想マシンの管理が不要 (DB の管理が不要ということではないはず)

スケーラビリティ

開発しやすさ

?

SQL Server と SQL Azure の関係

同一アーキテクチャを採用
同一の管理ツールで管理できる

SQL Azure Service Update 4

2010 / 8 / 25 更新

同一サーバー / 別サーバーにデータベースをコピー
CREATE DATABASE に COPY OF を設定する。
master データベースで実行する。

Northwind データベースをコピーするデモの実施。
ステートメントの実行は瞬間的に完了するが、非同期処理でコピーされている。

?

データベース ノード

1 サーバーに 1 物理データベース
データベースファイルとログファイルは、すべての論理データベースにて共有
master データベースはシステムデータベースではない

?

SQL Azure の運用

ファイルグループがない
ネットワーク遅延 (サーバーが遠隔地にある)
すべてが高可用性構成
SQL 認証のみ
データベース暗号化が未サポート
SQL Agent がない

?

Project ”Houston” CTP 1

クライアント環境にとらわれない DB 管理
現時点では master データベースにうまく接続できないことがある。
Update されたことにより、場所を選択する画面が増えた

Houstonを使うと 1433 のルール追加が不要になる。(443 で通信)

?

データベースの移行ステップ

スキーマ移行
データ移行
→ 移行したデータを戻すこともできる。

?

SQL Azure Migration Wizard

MS の公式サポート ツールではないが良くできている。
→ CodePlex で公開されている。

SQL Azure では、クラスター化インデックスが必要。
→ツールでクラスター化インデックスを作ってくれる

英語環境を意識して作られているため、日本語を使用するためには config を書き変える必要がある。

?

SQL Server Management Studio

SQL Server 2008 R2 の SSMS を使用する。
SQL Azure データベース用のスクリプトを作れる。

?

DAC

SQL Azure では DAC (データ層アプリケーション) も使える。
→ スキーマ情報しか扱えない。

?

インポート / エクスポートウィザード

SQL Azure 上に DB を事前に作っておく。

?

異なる RDBMS から 移行

SSMA
SSMA for MySQL 1.0
SSMA for Oracle / Sybase / Access

SSMA は SQL Azure に直接接続できる。
→ SQL Azure 接続時は暗号化接続が有効でグレーアウトしていた。

スキーマ移行とデータ移行が可能

?

ネットワーク パフォーマンス

遅延 / 帯域幅 / 接続性
インターネット経由で長距離間のデータ転送をする必要がある。

?

BCP 1GB データ転送検証

ストリームの数を増やすと比較的早く転送が終わる。
→マルチストリーム転送は極めて有効

?

Azure to On-Premise のデータ連携

SQL Azure Data Sync サービス
SQL Azure ? オンプレミス (SQL Azure Data Sync Tool)
SQL Azure ? B2B (SQL Azure Data Sync Tool)
SQL Azure 内 (SQL Azure Data Sync Service) (データセンター間も対応)
SQL Azure – オフライン端末 (Sync Framework)

設定は、SQL Azure のポータルサイトから

  1. Add Hub で起点を設定
  2. Add Member でメンバーを追加
  3. テーブルを選択

?

データ競合時の設定はない。

?

Blob データを含めての移行シナリオ

Blob は Windows Azure Blob に移行するというシナリオも考えられる。

?

今後提供が予定される機能

Reporting / Business Analytics
Data Sync (CTP) / OData (CTP) → データのやり取りを HTTPS で可能。(Anonymous User Access の設定がでいる。)

PDC で発表があるかも知れない更新
DB おける複数 Collation
操作レポート
フルテキストサーチ
スケールアップ

?

■[TH-403] SQL Server 現役サポートエンジニア直伝 ? SQL Server トラブル シューティング実践編 ?

SQL Server の障害をどのように切り分けていくか

資料の確認 11 / 17~ 19 / 21 / 28 / 41 / 53 / 59 / 60 /69

エラー発生
一時的 / 継続的なエラー

処理完了までの時間が長い
処理が止まっている / 遅い

メモリ不足

バッファプール
ページ (8KB) 単位で管理
max server memory で定義可能

非バッファ領域
32bit 環境 : 環境ごとにプロセッサに応じて自動定義
64bit 環境 : 制限なし

フリーページ
lazy writer スレッドで確保される
→ 参照頻度が低いページをフリーにする

OS からメモリ不足の通知を受けても SQL Server はメモリを解放しつつ正常に動作可能
→min server memory まで解放
他プロセスから大量のメモリ要求が続いたら
→フリーページ確保、解放が頻繁に発生
 メモリがページアウトされる。
 ページングによりフリーページを確保しにくい

メモリ不足は、ERRORLOG に記録される。

対処法
メモリを増設
→ 他のアプリケーションもメモリを使用する。
max server memory を設定
→ SQL Server のメモリ上限を設定

非バッファ領域
max worker thread は 2005 移行は CPU の数によって自動チューニングされる
-g オプションの部分も含まれる。

?

ワーカースレッドの枯渇
SQL Server が管理するスレッド
一般的に最大数に達する状況は、根本的な原因を解決しないと最大値を増やしても達してしまうことがありえる。

ワーカースレッドはプールされ、再利用される
→ 過度のブロッキング / 並列度の高いクエリの多数同時実行で枯渇の可能性がある。

最大数に達した場合
スレッドがアイドルになるまで待機、もしくはタイムアウトで処理が失敗
→ Deadlocked Schedulers が ERRORlOG に出力される。

並列クエリの場合、ワーカーは複数アクティブ
同時実行によりワーカーが増加

?

過度のブロッキング
ショートトランザクションにする。
データ参照 / 更新範囲の重複をなくす (Scan 操作をなくす)
分離レベルの変更

並列度の高いクエリの多数同時実行
並列度を制限
→MAXDOP (OPTION 句の MAXDOP がサーバーレベルより優先される)

sys.dm_os_tasks と sys.dm_os_workers を Join して並列度を確認
→ ワーカーが枯渇している場合は DAC で接続

?

サービス停止時間を短くするために

死活監視
select @@servername
ワーカーが枯渇している場合、@@versionを実行できないのでフェールオーバーしてしまう。

デッドロック

ロールバックコストが低い方をロールバックする。

デッドロックの発生状況の確認

  • トレースフラグ
    1222 (1204)
  • Profiler イベント
    Deadlock Graph
    Lock: Escalation → エスカレーションのきっかけになったクエリを取得できる。
  • ?

    サイクルデッドロックの一般的な対処方法

    リトライ処理
    ロックエスカレーションの回避、防止
    → Scan 操作を Seek になるようにす

    サーバー全体で、エスカレーションを禁止した際のメモリ不足対応のため、2008 ではテーブル単位の
    ロックエスカレーションの禁止が実装された。

    fn_trace_gettable でトレースファイルをインポート

    ?

    システムデータベースの破損

    破損する DB によって、SQL Server / Agent サービスが起動できなくなる。
    対処の基本はバックアップからの復元
    →破損しているバックアップを戻しても破損した状態になる。

    定期的な DBCC CHECKDB によるデータベースの整合性チェック

    バックアップファイルの整合性チェック
    →RESTORE VERIFYONLY

    バックアップファイルがない場合
    システム DB の再構築 (全システム DB が再構築)

    ?

    管理者のロックアウト 

    2008 以降は、BUILTINAdministrator は既定で管理者ではない
    BOL にロックアウト時の解決策が掲載されている。

    ?

    SQL Server へ接続できない

    OS レベルのセッション確立
    F/W の例外設定が意外と多い
    接続プロトコル
    DNS
    SQL Browser サービス
    ローカルから接続できるか

    SQL Server の認証
    認証方式
    ドメイン / ローカルアカウント
    特定のログインだけか

    ?

    データベースアクセス
    AUTO_CLOSE 設定
    master に接続できるか
    特定のデータベースだけ

    ?

    クライアントのエラーメッセージ / 時間 / SQL Server の ERROLOG が必要

    ?

    ログファイル拡張

    ログ自動拡張のタイムアウト
    ログファイルがいっぱいでレコードが書き込みできない

    データベース復旧モデル も要確認

    2008 のログ切り捨ては、復旧モデルを単純にする
    →no_log / truncate only が2008 以降ではないため。

    ?

    ブロッキング

    DMV / DMF / DBCC から調査することができる。

    ?

    処理の中断

    ロールバック時間を考慮する。

    ?

    チューニング

    Web Cast で 5 minute を公開中

    ?

    ■[T4-401] SQL Server による?規模 Mission Critical システムの展開

    4 ソケット 32 コア 128 MB のメモリのマシン
    # 8 ソケット 64 コアマシンも後で登場

    バランスドシステムという考え方

    トランザクション処理設計

    トランザクションの境界
    暗黙的な宣言と、明示的な宣言 (BEGIN TRAN)

    ブロッキング防止
    NOLOCK / RCSI (Read Committed Snapshot Isolation)

    デッドロックへの考慮
    変換デッドロック発生の防止
    更新順序の統一化と回収処理 (リトライ処理をアプリケーションで実装)

    クエリ実行時の考慮
    アドホッククエリとパラメーター化クエリ
    適切なフィルタリングによる結果セットサイズ

    ?

    データベース物理設計

    データファイルの分割と配置
    非クラスター化インデックスをファイルグループをつかうと、分離格納が可能
    tempdb は CPU コア数と同じファイル数に分割する

    ?

    データファイルの配置
    ファイルグループは異なる LUN に配置

    ?

    領域サイズの見積もり
    将来のデータ量も見込んでおく
    増分はあくまでも保険
    → 拡張中は、トランザクションが停止する。

    ?

    ログファイルの配置
    ユーザーデータベースごとに一つ必要
    RAID 1+ 0 の独立した LUN に配置
    シーケンシャルな書き込み処理のみが発生
    I/O 帯域がサーバー上の処理能力を左右する (先行書き込み)

    定期的なログのアーカイブにより肥大化を防ぐ。

    ?

    データパーティショニング
    分割をするためのキー項目が必要になる
    クエリは複数のパーティションを透過的にアクセス可能

    スライディングウィンドウズ機能

    インデックスの役割
    テーブルにはのクラスター化インデックスを定義する

    発生するデータの特性を理解する
    → インデックスをどの列に設定すればよいかに影響する。

    クラスター化インデックスはキーの内容が変更されない列に設定する。

    再構築と再構成

    2008 ではオンラインで再構築が可能
    → 再構築前、後のデータを使うため、データサイズの見積もりに影響する。

    ページ分割
    Update Inprace : 更新処理でもページ分割が発生する (同一領域に格納できない場合に発生)
    FILLFACTOR を設定する。

    統計情報
    データ作成時に作成される (自動作成有効の場合)
    新は一定の閾値を超えた場合に実行される。
    INDEX の REBUILD 時にも更新される

    手動更新で統計情報を更新することも重要。

    ?

    バランスドシステムとは

    SQL Server リレーショナルエンジンに最適化された H/W 構成
    専用サーバー上に配置する (インスタンスも一つにする)

    プロセッサ
    主流は x64
    NUMA 対応 CPU
    4 ソケット以上の NUMA 対応 CPU を推奨

    メモリ
    x64 64 ビットアドレス方式が主流
    NUMA ノードあたり、8-16 GB を推奨
    SMP の場合 コア辺り 4GB をスタートラインに
    OLTP の場合ユーザー DB の10% は目安

    ストレージ
    HBA 経由ファイバー
    → 複数の HBA で MPIO
    iSCSI
    DAS

    トランザクション処理には複数の高回転デバイスを利用

    SQL Server 2008 / R2 のベンチマークテストの比較

    トランザクションミックスで負荷テストを実施

    SQL Server 2008 → R2 で性能は向上している。
    2008 は HT を有効にすると 10% 程度、過負荷状態の処理効率が向上している

    Runnable Queue から CPU の待ち行列を確認
    PAGELATCH でページ分割の待ち事象を確認

    ?

    サプライズ

    8 ソケット 64 コア / SQL Server Datacenter Edition
    # HT を有効化すると 128 コア

    ?

    設定関連
    Lock Page in Memory が有効になっていると LOG に Large page Extensions が表示される。

Written by Masayuki.Ozawa

8月 25th, 2010 at 10:47 pm

Posted in セミナー

Tech・Ed Japan 2010 1 日目 参加レポート

leave a comment

本日から、三日間 Tech・Ed Japan 2010 に参加しています。
勉強メモも兼ね、セミナーレポートを適宜投稿していきたいと思います。

[本日の参加セッション]

  1. Keynote
  2. Windows Azure スペシャル セッション
  3. [T2-301] ついに登場! RemoteFX で実現する強化された MS VDI のアーキテクチャ
  4. [H-321] Windows Azure アプリケーション開発体験 ? Windows Azure 管理/監視編 ?
  5. [TH-203] 都市伝説のウソを暴く ? みんなで語ろう SQL Server の真実を ?

?

    ■Keynote

    現実解としてのクラウドを支える最新テクノロジ

    1. S+S 構想の発表 → Ray Ozzie メモ
    2. Azure 発表 → PDC 2008
    3. Azure サービス開始 → Tech Days 2010
    4. 現実解としてのクラウド → Tech・Ed 2010

    ?

    • 本格化しつつあるクラウドの活用
    • クラウドの進化を加速するテクノロジ
    • クラウド時代に求められる IT 技術者の役割

    ?

    本格化しつつあるクラウドの活用

    Opening Demo

    • リアルタイムストリーミング
      KeyNote の配信は IIJ さん協力で配信
      今年の甲子園を Silverlight で配信
      DMM.com でも Silverlight を利用
    • ビジュアル検索
      Netflix の Pivot View of Netflix Instant Watch Movies
      →DVD のジャケットを一覧でみたり、年単位でグラフで表示することもできる。
       年代だけでなく Rating で検索することも可能
    • 電子書籍 / 出版
      東芝リブレットの 25 周年記念モデルを使った WPF の電子書籍リーダーの Demo

    クラウドを活用した電子出版プラットフォーム
    Windowz Azure 上
    →書蔵 / CDN データキャッシュを使用sている。

    ?

    株式会社バンテック様
    BPOS と Azure の活用によるセキュアなコラボレーション環境のビデオ
    Exchange Online を導入
    # BPOS と Azure を組み合わせている (LDAP 連携)

    Office 製品との親和性を考慮 (ユーザーが使いやすい)

    ポータルの統合もクラウドサービスで検討

    ?

    加速する BPOS 利用
    株式会社リクルート様
    UQ コミュニケーションズ株式会社様
    株式会社内田洋行様

    ?

    株式会社パソナ様
    プロジェクト案件の予実算管理システムのビデオ
    Windows Azure を利用
    プロトタイプのシステムは稼働中
    評価の中で良かったのは想像以上にスムーズに動いた
    (数十万件のデータでもスムーズに動いた)

    セキュリティ面の対策
    データセンターの安全性、通信の設計によって問題なく使えると判断

    ?

    ブルーオーシャンシステム様の講和
    介護、医療、支援、保育のサービスの利用を管理するシステムでクラウドを活用
    # Windows Azure / SQL Azure Silverlight

    キーボードでなく、タッチスクリーンを使う事で職員の方もスムーズに利用できる。
    IT 化により手書きが無くなると、手書きにはなかなか戻れない。
    現場に合わせたハードを選択

    Bingmap とも連携をしている。
    # 画面はすべて Silverlight で実装しているのかな??

    デザインは Azest 様が作成。

    健康管理の情報がグラフ、表で見ることができる。

    BizSpark を使用している。

    ?

    日本電子計算株式会社様の講和
    2003 年から ASP サービスを銀行様に提供している。

    CP Communicator
    クラウドを利活用した、日本最初のサービスモデル。
    Windows Azure? / SQL Azure AppFabric が使われている。
    Private Cloud とも連携

    企業 1 に対して金融機関 n での取引で使われる。

    ハイブリッドクラウドになっている。
    SQL Azure でデータ同期を行っている。

    ?

    Azure 利用の拡大
    過去半年の機能強化ポイント
    SQL Azure のデータベースサイズ拡大
    .NET Framework 4
    Visual Studio 2010
    Windows Azure OS 1.5

    ?

    クラウド実装の多様化

    • 従来型 IT
      変更管理の自由度
      容易なシステム拡張
      きめ細かな運用管理
      ?
    • パートナークラウド
      システム構築のノウハウ
      顧客 / 地域密着型サービス
      多様なソリューション

      サービス事業者様向けライセンス
      → Saas / Pass 提供のためのライセンス体系の整備
      クラウド環境を構築/運用する製品群
      → DDTK, Hyper-V, System Center
      Windows Azure platform appliancd

    • パブリッククラウド
      スケールでの低コスト追求
      グローバル展開
      画一的なサービス

    ?

    NTTコミュニケーションズ株式会社様の講和
    Biz ホスティング エンタープライズ
    クラウド間ネットワーキングの力で、孤立したクラウドモデルの一歩先へ

    お客様の仕訳に従い、オンプレミスと業務用途に合ったクラウドをネットワークを介して接続
    オンプレミスとパブリッククラウドの連携

    Biz ホスティングエンタープライズ (プライベートクラウド)
    Microsoft Azure (パブリッククラウド)
    上記のサービス連携 (ID 連携 / サービスバス連携等) と、監視連携を実現 (System Center による監視連携)

    ?

    Windows Azure platform appliance
    WPC 2010 で発表

    富士通様との協業
    Azure Base のサービスが富士通のデータセンターによりグローバルに提供
    グローバルで 5,00 名の Azure 技術者を育成

    ?

    クラウドの進化を加速するテクノロジ

    2011 年以降の追加内容

    信頼できるクラウドプラットフォーム
    Dallas
    大規模並列処理 on Azure

    ユーザーエクスペリエンス
    IE 9
    WP 7

    設計 / 開発ツール
    VS LightSwitch

    ?

    Dallas のデモ
    現状は CTP のため Price 0$
    NASA Selected NASA Mars Exploration Rover 3D Images ? NASA (CTP2)
    DisclosingJapan Trial Offer

    みんなの会社情報
    → Windows Azure + Silverlight
    Dallas で配信されたデータを使っている。

    自前では持てないようなデータを使用することができるようになる。

    ?

    Windows Azure が可能にする大規模並列処理のデモ
    High Performance Computing on Azure

    ジョブマネージャー
    入力キュー (ワークアイテム)
    出力キュー (処理済みアイテム)
    Worker ロール (複数のワーカーロール)

    株価のシミュレーションを使用したデモ
    Excel のアプリケーションを使用してデモ
    → ローカル PC 上でワーカーロールを 11 個起動している。

    テクニカルセッションでは 15 個のワーカーロールを使用したデモを実施。

    ?

    Internet Explorer 9
    HTML 5 / CSS / SVG をサポート
    新しい? JavaScript エンジン Chakra を実装

    SunSpider を使用したベンチマークテストの紹介
    Acid 3 は 95/100

    他社ブラウザと IE 9 CTP? のキャンパスタグを使ったレンダリングの比較
    amazon のサイトを使用した HTML5 のデモ
    Hamster Dance Revolution

    9/15 (日本時間 9/16) Beta 版が提供される

    ?

    Winodws Phone7
    Cloud Service
    Application Platform
    Developer Tool

    Twitter クライアントを作成するデモ (Tech Edtter 7)
    Silverlight なので非同期処理となる。
    Expression Blend 4 でSampleデータを使用して画面デザインを作成。
    →サンプルデータを作ってドラッグアンドドロップ

    WP7 の実機を使ったデモ
    作成した Tech Eddter 7 と Tech Ed Viewer 7 を実行。
    # Tech Ed Viewer 7 はいいな~。

    ?

    Visual Studio LightSwitch
    電気のスイッチをオンにしたらアプリケーションを開発できる。
    テンプレートベースの開発。
    簡易、迅速、柔軟な開発。

    ビジネスデータを活用したリッチなアプリケーションを簡単に開発できる。

    開発は以下の 2 段階

    1. データソースの定義
    2. 画面レイアウトの定義

    画面レイアウトはテンプレートがいくつか用意されている。
    データソースの定義時に Validation も設定できる。

    実行時に画面を変更することができる (Customize Screen)
    →列の並び順の変更、リスト形式の変更、ボタンの削除等が実施できる。

    ?

    クラウド時代に求められる IT 技術者の役割

    クラウド時代
    コンピューティングリソースのコモディティ化
    より使いやすく、ニーズの変化に素早く対応
    より高度な IT 全体設計
    IT 技術者の進化がクラウド実装のカギ

    ?

    クラウド技術者コミュニティ支援
    Azure コミュニティ
    Azure 無償利用プログラムの提供
    アーキテクト 育成道場
    MS 本社 シニアアーキテクトとの交流会
    PDC10 最新技術コンテンツ配信とオフ会の実施

    ?

    技術情報強化、スキルアップ支援
    MSDN / Tech Net オンラインの改善
    コードサンプルの提供拡大
    ハンズオンセミナー (新宿と品川で実施)

    ?

    ■Windows Azure スペシャル セッション

    クラウドの今と未来

    20 世紀末 ? 21 世紀初めの IT 企業
    Main Frame → Down Sizing → Server Client → Internet → Cloud

    ?

    クラウドの現在
    クラウドの進化は止まらない。
    ?

    クラウド受容の現在の課題
    仮想化によって物理サーバーの数を減らしコストを削減するだけでは不十分
    SIer にとっては、H/W が売れなくなるためあまり魅力的ではないのでは

    コストカットの対象だけではなく、企業の生産性、ビジネスの価値と競争力を高めるために利用するという視点が不可欠。

    サーバーを管理するのか?
    サービスを管理するのか?
    →サービスとしてのビジネスの価値を高める。(クラウドの時代には必要)

    クラウドへの現実的なアプローチ
    利用者側
    クラウドのメリットをどう取り入れることができるか

    提供者側
    クラウド利用のシナリオの具体化
    現実的利用アプローチの採用

    Google App Engne から Googpe App for Enterprise への組み換え
    Spring
    java
    Eclipse
    Enterprise Java の愛発モデル
    RDB の利用

    ?

    VMware のクラウド参入
    Google App Engine for Business / VMForce はいずれも VMware とじの協業
    Private クラウドでの vCloud への動き

    ?

    パブリッククラウドの日本上陸
    Amazon / Salesforce のデータセンター
    Windows Azure Platform Alliance

    ?

    Windows Azure Platform Alliance
    館林でサービスが提供される
    無制限のスケールとマルチテナント

    ?

    Azure の現在と近未来

    Server AppFabric
    Cloud 上のサービスと、オンプレミスのサービスを自然な形でつなぐ
    Hybrid-Cloud には必須な技術
    Azure / SQL Azure と並んで 3 本柱

    SQL Azure Federated Database
    データの分割を RDB で実現できる。

    ?
    VM Role
    Web Role / Worker Role に続く第三の Role
    柔軟。Apache VM を定義可能
    EC2 での AMI と同様のものと思っていい。
    OSの設定、Config が必要
    ?

    Azure is Open
    php / Java /Ruby も動く
    開発環境として Eclipse を使える。
    ?

    デモ:Java in Azure

    Windows Azure & Java
    Azure 上の Tomcat で動作する Java Web? アプリケーションでテーブルストレージにアクセス
    ?

    ビルドに使用するコマンド
    buildme.cmd
    runme.cmd
    packme.cmd

    ?

    Windows Azure SDK for Java


    AppFabric
    AppFabric SDK for Java Developers
    ?

    SQL Azure
    JDBC アクセス
    Restlet Extension for ADO.NET Services

    VM Role (Coming)

    ?

    クラウド利用の多様性と可能性

    クラウド利用のスペクトラム
    企業内 IT 共通基盤
    開発/テスト環境としての一時的な利用
    ディザスターリカバリー

    ?

    社内 IT 共通基盤へのクラウドの導入
    Google Apps vs MS Online vs Lotus Live
    クラウドのもう一つのホットな戦線。

    ?

    Business Productivity
    ビジネス価値と競争力を高めるために、Public / Private のクラウドサービスを利用するという視点が重要
    Office の Online 化

    ?

    例えば、Excel
    ブラウザ上のExcel をターゲットとしたアプリの開発は新しいスタイルの Web アプリとして大きな意味を持つ。
    SharePoint を単なるポータルサイトと思ってはいけない。
    Excel 上の PowerPivot はデータマイニング、可視化で BI の強力な武器。

    ?

    クラウドとビジネスの未来

    サービス化のさらなる進展
    パッケージからサービスへ。
    サービスプロバイダとしてシステムを考える。
    Office Family のオンラインサービス化。
    データベース / ストレージのサービス化。

    特定のユーザーを対象とした、受託開発モデルの収益と競争力の低下。
    クラウドになっても開発は無くならない。

    ?

    コンシューマ中心の経済へ
    プラットフォームのクラウドデバイスのシフト

    コンシューマ中心のビジネスモデルが必要
    BtoC ではなく、CfromBとでもいうべきもの

    コミュニケーションと情報の共有
    IT は個人と個人の個ミューにケー所んと情報共有への欲求が最大のドライビングフォース

    ?

    ネットワーク上のマーケットの成熟
    情報の流通だけでない物流ともリンクしたネットワーク上の経済が拡大する。

    ?

    ■[T2-301] ついに登場! RemoteFX で実現する強化された MS VDI のアーキテクチャ

    Windows Server 2008 R2 /? Windows 7 の SP1 で実装される機能
    現在は Public Beta 版。

    RemoteFX

    RemoteFX とは?
    リモートデスクトップの機能拡張
    SP1 では仮想化の機能を強化している。
    GPU の仮想化
    → 3D グラフィックレンダリング / 動画の再生支援 / Silverlight / Flash
    RDS / VDI が苦手としてきた領域をカバー
    →RDP 7.1 へアップグレード
    グラフィック強化により、CAD アプリへの対応も

    GPU の仮想化により、実環境と相違のない、UX を提供
    USB デバイス リダイレクション

    ?

    システム要件
    RDP 7.1 が使えればシンクライアントでも利用可能
    VDI のマシンは Win 7 EE / Ultimate SP1

    Hyper-V サーバー
    SLAT に対応したCPU
    DirectX 9.0c 10.0 対応の GPU
    現時点では LAN 環境ベースのシナリオに最適化

    1GPU あたり、12台の仮想マシンを割り当て (Public Beta)

    ?

    RemoteFX 関連コンポーネント
    RemoteFX 専用の H/W に処理を移管することで信頼性が向上 (オプション)
    Virtual Channels → RemoteFX Decode Abstraction Layer →Software or Hardware Decode Driver

    ?

    展開のポイント
    パフォーマンスとサイジングについては SP1 RTM に合わせてガイドを公開予定
    既存環境からの移行は厳しい
    → H/W 構成が大きく異なるため
    Live Migration のサポート
    →移行対象で同一 GPU を使用する。

    ?

    RemoteFX のデモ
    RemoteFX はリモートデスクトップ仮想化ホストの役割に含まれる
    ハードウェアの追加で RemoteFX 3D ビデオアダプターを追加

    DirectX 診断ツールを使うと RemoteFX 3D ビデオアダプターが有効になっているかわかりやすい
    Ultimate の Chess Titans は 3D を使っているゲーム。
    →RemoteFX 3D ビデオアダプターのテストに使える。

    SP1 をインストールすると、Remote Desktop ? User Mode というF/W ルールが追加される。
    →接続時の注意事項
     SP1 適用前にリモートデスクトップを有効にしていると、ルールがオンにならないので手動で再設定か、
     リモートデスクトップのラジオボタンを再設定。

    RemoteFX を有効にすると、VMConect からはつながらなくなる。
    → リモートデスクトップを事前に有効にしておいてから、3D ビデオアダプターを追加する。
    ? Remote Desktop ? User Mode の F/W ルールが許可になっているかも確認

    図脳RAPID3DPRO を使った CAD ソフトのデモ
    →拡大、回転等がスムーズに動く

    ?

    RemoteFX USB Device Redirection

    ローカルとリモート間の環境差をなくす
    デバイスドライバは仮想 OS 側に必要
    → デバイスを接続している端末にはデバイスドライバは不要。

    RemoteFX Device Redirectionの利用ケース
    → スキャナー / バイオメトリクス認証 / Isochronous デバイス

    ?

    USB デバイスの認識
    RemoteFX USB Hub Filter を通じでデバイスが認識される。
    →デバイスマネージャーから存在を確認できる。
    クライアントマシンが巨大なハブになって仮想マシンと連動する。

    ?

    RemoteFX USB デバイスリダイレクトのデモ
    必須ではないが、RDP データの圧縮アルゴリズムを設定するのポリシーは注目
    USB デバイスリダイレクト用のグループポリシーがある。
    → セッションホストでポリシーを有効にする。

    RDP ファイルに USB デバイスリダイレクト用の設定項目がある。

    XBOX 360 のコントローラーをリダイレクト。
    → Halo 2 を VDI 環境で実行して使ってみる。

    リモートセッションを切ったタイミングでデバイスのリダイレクトが解除される。
    → 機器の取り外し音が鳴る。接続時には接続音も。

    USB デバイスリダイレクトは 1 セッション。
    → リダイレクトしているデバイスは選択できない。

    USB ミサイルと MS の Web Cam を利用した複数デバイスのリダイレクト
    →輪ゴムで二個一 にしていました。

    ?

    Thin Client のデモ
    ASIC のチップが入った RemoteFX に対応したシンクライアントを利用
    →Linux の Embedded OS (数千円ぐらいで購入できるかも)?

    RemoteFX USB デバイスリダイレクトで使用できるデバイスに関しては RTM 後のドキュメントに期待です。
    ?

    ■[H-321] Windows Azure アプリケーション開発体験 ? Windows Azure 管理/監視編 ?

    時間的に全部終わらせるのはきついボリュームでした…。
    ステージング環境にデプロイした後に、Ready になるまでの時間と、ロールのインスタンス数の増加が完了するのにちょっと待ち時間があって、
    その辺で、時間を消費してしまいました。

    ハンズオンの内容としては、

    1. ステージング環境への配置
    2. 配置後にアプリケーションを実行
    3. ステージングからプロダクション環境に移行
    4. ロールのインスタンス数を追加
    5. 診断データの取得
    6. 診断データをストレージサービスに転送

    この一連の流れを PowerShell を使用して実行するという形でした。
    この辺りはハンズオン資料と Winodws Azure 実践クラウド・プログラミングを見直して再度勉強したいと思います。

    途中までした終わらなかったのですが、Azure を PowerShell で操作するとき作業イメージがつかめたのでよかったです。

    ?

    ■[TH-203] 都市伝説のウソを暴く ? みんなで語ろう SQL Server の真実を ?

    珍しいチョークトーク形式のセッション
    スピーカーと受講者の対話形式セッション。

    行レベルロックの真実

    知られざる SQL Server の行レベル ロックの実装
    何を持って完全な行ロックなのか?

    キー値を使ったロック (クラスタ化インデックス あり)
    RID を使ったロック?? (クラスタ化インデックス なし : ヒープ)

    100 万件データを使った、ロック待ち、ロックエスカレーションのデモ
    → LOCK_TIMEOUT でロックのタイムアウトを指定

    対象テーブルが更新中かどうかで、ロックエスカレーションの動きも変わる。
    →誰もテーブルを使っていない場合は 5000 という閾値が働く。
     対象のテーブルが更新中の場合、ロックエスカレーションをしない。
     インテントロックを使用して、エスカレーションできるかをチェックしている。
     (インテントロックがあるという事は他者がロックを取得している)

    ロックエスカレーションは、パフォーマンスモニタで取得可能。
    →DMV から取得できる。

    ROWLOCK オプションを指定しても、ロックエスカレーションは発生する。
    トレースフラグまたは、LOCK_ESCALATION = DISABLE することで、ロックエスカレーションを禁止できる。
    → 2005 ではトレースフラグ / 2008 は SET で指定できる。

    行ロックをするときは、ハッシュ関数を使用してメモリリソースを使用しないように考慮されている。
    → キー値をそのままメモリに確保するのではなく、ハッシュ値にすることで長いキー値でも最小限のロックメモリで
      象を識別できる。

    ?

    読み取り一貫性の真実

    読み取り一貫性ってそもそも何?
    ANSI の定義にさかのぼろう

    読み取り一貫性は管理者 / 開発者が選択できる。
    → SQL Server の考え

    Read Commited Snapshot のーバーヘッド
    → 実行時間の比較では、数 % のオーバーヘッド (数ミリ秒)

    tempdb を適切な構成にすることでオーバーヘッドをさらに削減することができる。
    → CPU コア数にファイルを分割。配置するディスクにも注意する。

    ?

    チューニングの真実

    SQL Server は自動でここまでチューニングする!!
    SQL Server は本当に細かな制御ができないのか!?

    クラスター化インデックスは重要。
    SQL Server に適した (SQL Server のお作法の) の物理設計をする。

    インデックスのリビルドと統計の更新
    tempdb の分割と MDOP
    SQL Server のサービスアカウントの Lock Page in Memory のポリシー

    ?

    SQL Server の運用管理の真実

    SQL Server におけるログ ファイルの管理
    SQL Server におけるバックアップの管理

    ログのバックアップは SQL Server の基本
    →ログファイルは二重化できないので保護されたディスクに置いてもらいたい。

    ログはシーケンシャルの Write で書きこまれる。
    複数のファイルを準備したとしても、並列には書きこまれない。
    → RAID の切り方は重要

    ?

    Written by Masayuki.Ozawa

    8月 24th, 2010 at 10:56 pm

    Posted in セミナー

    SQL Azure のインデックス関連で使用できる T-SQL について

    leave a comment

    先日は統計情報関連で使用できる T-SQL について投稿したので、今回はインデックス関連について。

    今回も以下の技術情報を元にしています。
    Transact-SQL Reference (SQL Azure Database)

    ■システムストアドプロシージャ

    sp_helpindex テーブルまたはビューのインデックスに関する情報をレポートします。

    ?

    ■システムビュー

    sys.index_columns sys.indexes インデックスまたは順序付けられていないテーブル (ヒープ) の一部である列ごとに 1 つの行を含みます。
    sys.indexes テーブル、ビュー、テーブル値関数など、テーブル オブジェクトのインデックスまたはヒープごとに 1 行のデータを格納します。

    ?

    ■T-SQL ステートメント

    ※ SQL Azure では、オンプレミスの SQL Server と構文 (使用できるオプション) が異なります。

    ALTER INDEX インデックスの無効化、再構築、再構成によって、またはインデックスに関するオプションの設定によって、既存のテーブルやビュー インデックス (リレーショナルまたは XML) を変更します。
    CREATE INDEX 指定のテーブルまたは指定のテーブルのビューに、リレーショナル インデックスを作成します。
    CREATE SPATIAL INDEX 指定したテーブルと列に空間インデックスを作成します。
    DROP INDEX DROP INDEX ステートメントを使用すると、現在の SQL Server データベースからインデックスを削除できます。

    ?

    ざっと技術情報を見たところではこの辺がインデックス関連で使用できる T-SQL になるようですね。

    [T-SQL ステートメント] に関しては、SQL Azure ではオンプレミスの SQL Server とは使えるオプションが異なっています。

    いくつか見落としがあるかもしれませんが、インデックスに特化したものはそれほど数はないみたいですね。

    Written by Masayuki.Ozawa

    8月 23rd, 2010 at 12:50 pm

    Posted in SQL Server

    Spotlight on SQL Server で SQL Azure に接続

    one comment

    今日は外出時の移動の際に [Windows Azure実践クラウド・プログラミングfor C#/Visual Basic/PHP] を読んでいました。
    書籍の中に、[アプリケーションの監視 / ロギング – 診断モニタ ?] という章があり、その中にパフォーマンスモニタについての
    記載があります。
    移動中にこの章を読んでいました。

    最近、SQL Azure を少しずつ触っているのですが、SQL Azure のパフォーマンス情報はどのように取得すればよいのだろうと
    ふと思いました。

    そういえば Spotlight on SQL Server は SQL Azure にも対応していたな~と思いさっそく試してみました。

    ?

    ■Spotlight on SQL Server の入手

    Spotlight on SQL Server の提供元である Quest 社のホームページから 30 日のトライアル版を入手することが可能です。
    SpotlightR on SQL Server Enterprise

    ?

    ■Spotlight on SQL Server のインストール

    Spotlight on SQL Server ですが、実行する端末または他の端末に情報収集用のデータベースを作成する必要があります。
    # 昔のバージョンだと、空のデータベースがあれば良かったはずなのですが、現在の Spotlight on SQL Server は診断サーバー用の
    機能をインストールして情報収集用のデータベースを作成する必要があるようです。

    今回は Spotlight on SQL Server をインストールする端末として、

    • Windows 7 x86 Enterprise Edition
    • SQL Server 2008 R2 Developer Edition

    がインストールされている環境を用意しました。

    SQL Server 2008 R2 Developer Edition ではデフォルトで [TCP/IP] が無効になっているので、TCP/IP での接続を許可するよう
    SQL Server 構成マネージャーで設定をしておきます。

    image

    それでは、Spotlight on SQL Server のインストールを開始します。

    1. Spotlight on SQL Server のインストーラーを実行します。
      image
    2. [Typical] を選択します。
      ?image
    3. [Install Spotlight Client] と [Install Diagnostic Server] を選択 (デフォルト) して、[Next] をクリックします。
      image
    4. [I accept the license agreement] を選択して、[Next] をクリックします。
      image
    5. [Install Diagnostic Server on this computer] を選択 (デフォルト) して、[Next] をクリックします。
      image
    6. 診断サーバーのサービスアカウントを指定し、[Next] をクリックします。
      今回は [Use the local System account] を選択して、ローカルシステムアカウントでサービスを起動します。
      image
    7. 管理者とユーザーアカウントについては、デフォルトの状態にして、[Next] をクリックします。
      デフォルトだと両設定にインストーラーの起動アカウントが設定されるようです。
      image
    8. [Create] をクリックします。
      image
    9. [Create] をクリックします。
      image
    10. [OK] をクリックします。
      image
    11. 今回はローカルインスタンス上に過去データ用のデータベースを作成していますので [Instance] に [localhost] を設定して、
      [Next] をクリックします。
      image
    12. [Next] をクリックします。
      image
    13. [Start] をクリックして、インストールを開始します。
      image
      image?
    14. [Finish] をクリックしてインストールを完了します。
      image

    以上でインストールは完了です。

    ?

    続いて本番、SQL Azure に接続をしたいと思います。

    SQL Azure には、[SQLAzure] というデータベースを作成してあります。
    image
    Spotlight on SQL Server から接続ができるように SQL Azure のファイアウォールも設定済みです。
    image

    ?

    ■Spotlight on SQL Server で SQL Azure に接続

    それでは、Spotlight on SQL Server を使用して SQL Azure に接続をしてみたいと思います。

    1. Spotlight on SQL Server を起動します。
      image
    2. [SQL Azure] を選択して、右クリック → [Connection manager] をクリックします。
      image
    3. [Add new connection] をダブルクリックします。
      image
    4. 準備した SQL Azure への接続情報を入力して、[OK] をクリックします。
      # ユーザー名は [@サーバー名] で修飾せず、ユーザー名だけ入力すれば問題ありません。
      image
    5. コネクション設定が作成されますので作成された設定をダブルクリックします。
      image

    以上で、SQL Azure への接続は終了です。
    SQL Azure に接続をすると以下のような情報を取得することが可能です。
    image

    こちらが、SQL Server 2008 R2 の情報を取得した画面になります。
    image

    Spotlight on SQL Server で取得できる情報ですが、オンプレミスの SQL Server と比較するとかなり少ない情報になっているようですね。

    どのような情報が実際に取得できるかは別の機会にまとめてみたいと思います。

    Written by Masayuki.Ozawa

    8月 22nd, 2010 at 10:22 pm

    Posted in SQL Server

    SQL Azure の統計情報関連で使用できる T-SQL について

    one comment

    Tech・Ed で Azure コミュニティの話もあるので最近は SQL Azure の勉強などをちょくちょくしています。

    今日は SQL Azure の統計情報関連で使用できる T-SQL について調べてみました。
    以下の技術情報を元にしています。
    Transact-SQL Reference (SQL Azure Database)

    ?

    ■システム関数

    STATS_DATE テーブルまたはインデックス付きビューの統計の最終更新日を返します。

    ?

    ■システムストアドプロシージャ

    sp_autostats インデックス、統計オブジェクト、テーブル、またはインデックス付きビューの自動統計更新オプション (AUTO_UPDATE_STATISTICS) を表示または変更します。
    sp_createstats CREATE STATISTICS ステートメントを呼び出して、統計オブジェクトの最初の列になっていない列の統計を 1 列ずつ作成します。
    sp_helpstats 指定したテーブルの列およびインデックスに関する統計を返します
    sp_statistics 指定したテーブルまたはインデックス付きビュー上にあるすべてのインデックスおよび統計の一覧を返します。
    sp_updatestats 現在のデータベース内にあるすべてのユーザー定義テーブルと内部テーブルに対して UPDATE STATISTICS を実行します。

    ?

    ■システムビュー

    sys.stats U、V、または TF 型の表形式オブジェクトの統計ごとに 1 行のデータを保持します。
    sys.stats_columns sys.stats 統計の一部である列ごとに 1 行のデータを保持します。

    ?

    ■T-SQL ステートメント

    CREATE STATISTICS テーブルまたはインデックス付きビューの 1 つまたは複数の列で、クエリの最適化に関する統計 (フィルター選択された統計情報を含む) を作成します。
    DBCC SHOW_STATISTICS テーブルまたはインデックス付きビューについての、現在のクエリの最適化に関する統計を表示します。
    DROP STATISTICS 現在のデータベースの指定されたテーブル内で、複数のコレクションの統計を削除します。

    ?

    ■データベースプロパティ (DATABASEPROPERTYEX)

    IsAutoCreateStatistics 初期値:1 (TRUE) クエリのパフォーマンスを向上させるために、クエリ オプティマイザーが必要に応じて 1 列ずつの統計を作成します。
    IsAutoUpdateStatistics 初期値:1 (TRUE) クエリで使用される既存の統計が古くなっている可能性がある場合、クエリ オプティマイザーによって更新されます。

    ?

    統計情報関連としてはこれらを利用することが可能となっているようです。

    STATS_DATE 関数が使えるので、統計情報が更新されたタイミングがわかるかな~と思ったのですが、SQL Azure では、NULL に
    なってしまって更新日がうまく取得できませんでした…。
    統計情報の自動更新はデフォルトで有効になっているのですが、データのサイズによっては実データとの乖離が発生する可能性が
    ありますので、統計情報がいつ更新されたかが取得できるとデータベース管理者としてはうれしいのですけども。

    SQL Azure も SQL Server 2008 R2 とベースは同じですので、最適なクエリの実行プランを選択するためには
    統計情報は重要になってくると思いますので必要に応じた定期的な統計情報のメンテナンスは実施する必要があります。

    SQL Azure には SQL Server Agent サービスがないので、SQL Azure 以外の機能で定期的にメンテナンスする必要がありますが。
    # 開発をやらないのでこの辺のスキルが薄い…。

    こういう情報調べるのって楽しいです♪

    Written by Masayuki.Ozawa

    8月 21st, 2010 at 2:09 pm

    Posted in SQL Server