SQL Azure Team Blog

Improving Your I/O Performance – SQL Azure Team Blog – Site Home – MSDN Blogsを簡単に翻訳したエントリーです。

SQL ServerのI/Oパフォーマンスを改善する場合、通常はストレージを調整し、RAIDを構成し、tempdbのファイル数を増やしたりします。しかし、SQL Azureのようにファイルストレージを変更できない場合、I/Oパフォーマンスをどのように改善したら良いのでしょうか、クエリを改善しI/Oを減らすことに集中することになります。I/O数の高いクエリを探し、I/Oパフォーマンスを改善する方法を説明します。

 

I/Oの使用が高いクエリを探す

 

次のTransact-SQLは、遅いクエリを25個取得します。

SELECT TOP 25
    q.[text],
    (total_logical_reads/execution_count) AS avg_logical_reads, 
    (total_logical_writes/execution_count) AS avg_logical_writes, 
    (total_physical_reads/execution_count) AS avg_phys_reads, 
     Execution_count
FROM sys.dm_exec_query_stats   
    cross apply sys.dm_exec_sql_text(plan_handle) AS q 
ORDER BY
 (total_logical_reads + total_logical_writes) DESC

クエリの実行結果は次のようになります。

 

最も大量にデータを読み込むクエリ

 

データを読み込むクエリでI/Oga大量に発生するもので、あなたが使用すべきでない代表例が下のクエリです。

SELECT * FROM [Table]

このクエリは、[Table]から全ての列と全ての行を読み込みます。これは、次のようにして改善することができます。

  • where句を使用して、クエリの使用目的に応じた必要な行のみを読み込むようにします。
  • テーブルから必要な列のみを取得するように、明確に列名を指定するようにします。

カバードインデックスを作成する

 

カバードインデックスを使用することでI/Oを減らせます。

カバードインデックスとは、where句とselect使用としているカラムを、非クラスタインデックスに含んでいるインデックスです。

複数テーブルを結合している場合に威力を発揮します。

 

まとめ

 

I/Oを改善するには、クエリのパフォーマンスを向上させることに集中させます。SQL Serverのクエリの最適化に関するMSDNに掲載されているテックニックを参考にできます。

ストレージ部分はマイクロソフトが最適化をしていますので、ユーザはクエリの改善に集中することになります。

SQL Azure Team Blog

Getting Started With Project Houston: Part 1 – SQL Azure Team Blog – Site Home – MSDN Blogsを簡単に翻訳したエントリーです。

マイクロソフトのプロジェクトコードネームHoustonは、SQL Azureのライトなデータベース管理ツールです。Houstonは、クエリの作成・実行、データベーススキーマのデザイン・編集、テーブルデータの編集のような基本的なデータベースの管理タスクを行うことができます。
現在、Houstonは最初のコミュニティテクノロジー・プレビュー(CTP)です。このエントリでは、HoustonのCTO版の紹介とスクリーンショットをお見せします。Houstonの利用方法をお見せします。

HoustonはwebベースのSilverlightアプリケーションです。つまり、インターネット接続ができる様々な場所から、Silverlightをサポートしている様々なブラウザ(ブラウザ一覧)でアクセスし使用することができます。Houstonはインストールをするソフトウェアではありませんが、Silverlihtはインストールするソフトウェアです。まだインストールしていない場合は、初めてHoustonにアクセスしたときにインストールをする為のダイアログが表示されます。

https://manage.sqlazurelabs.com/にアクセスすることでHoustonの利用を始めることができます。SQL Azureラボは、CTP版のプロジェクトや先進的なものを配置します。リリース後には、URLが変わります。

 

ログインをする

 

現在のCTP版では、ログインする時にSQL azure Server、データベース、管理者ID、パスワードを入力する必要があります。

2860.clip_image001_34323C9F

HoustonはSilverlightアプリケーションなので、あなたのPC上のローカルクライアントで動作します。WEBアプリケーションでは無いが、Windows Azureにホストされたwebサービスと通信をします。

 

スタートページ

 

ログインすると、中央にスタートページが表示されます。スタートページには、アクセスするデータベースを選択する為の情報が表示され、ぐるぐる回転します。Houstonは、一つのブラウザで一つのデータベースを管理することができます。もし二つ以上のデータベースを管理したいときには、ブラウザのタブを使用し、もう一つHoustonにアクセスします。

0827.clip_image0016_69D75C2C

 

矢印をクリックすると箱が回転します。回転するとき「oh」、「ah」と言っているのを確認してください。

 

4578.clip_image002_113E02CA

 

ヒントページでは、Houstonの機能を確認するためのHoustonのビデオへのリンクが記載されています。

 

2746.clip_image003_5ADCB4ED

 

ナビゲーション

 

アプリケーションの上の方はツールバーです。ツールバーは、メインタブの表示内容に合わせて変化します。

 

8712.clip_image005_6681D652

 

データベースツールバーは下のような内容です。

 

8228.clip_image006_299D2EB3

 

ツールバーは下のように変化します。

 

3441.clip_image007_0DABF9BB

 

メインタブの操作内容に関係無く、アプリケーションの左上のデータベースリンクをクリックすることで、いつでもデータベースツールバーに戻ることができます。
Houstonは、他のタブに移動しても元のタブでの変更を維持しています。テーブルを変更し、保存せず別のタブを開いても変更は失われません。アプリケーションは、タブ内に鉛筆アイコンが表示されている場合、テーブル/タブを保存する必要があることを示しています。

2451.clip_image008_0F9948C4

アプリケーションを終了させようとすると、変更を保存する必要があることを示す警告が表示されます。保存しなければ、操作が失われます。

 

3441.clip_image009_29F93BDB

 

Houstonは、CTP版です。その為、まだプロダクトにはバグがあったり、上のダイアログのようにスペルミスがあります。私は、上のダイアログの件をMicrosoft Connectにすでに報告している。

Feedbackやバグ報告

プロジェクトHoustonは通常のMicrosoftサポートサービスのサポートを受けることはできません。コミュニティベースのサポートは、SQL Azure Labs Support Forumに質問を投稿することができます。プロダクトチームが回答します。

 

バグの登録の仕方

  1. フィードバック | Microsoft Connectに移動する。
  2. すでにフィードバックが報告されていないか検索し確認してください。
  3. まだ報告されていない場合は、ページの一番下に移動し、オレンジの「Submit Feedback」をクリックしてください。
  4. 「Select Feedback」上の、「SQL Server Suggestion Form」をクリックします。
  5. バグフォームで、「Category」=Tools(Houston)を選択します。
  6. 質問を入力します。
  7. マイクロソフトに送信するため「Submit」をクリックします。

フィードバックの仕方

  1. フィードバック | Microsoft Connectに移動する。
  2. すでに問題が報告されていないか検索し確認してください。
  3. まだ報告されていない場合は、ページの一番下に移動し、オレンジの「Submit Feedback」をクリックしてください。
  4. 「Select Feedback」上の、「SQL Server Bug Form」をクリックします。
  5. バグフォームで、「Version」=Houston build CTP 1 – 10.50.9610.34を選択します。
  6. バグフォームで、「Category」=Tools(Houston)を選択します。
  7. 質問を入力します。
  8. マイクロソフトに送信するため「Submit」をクリックします。

まとめ

 

Houston Blogを始めます。

SQL Azure Team Blog

このホワイトペーパでは、SQL Azureで提供されている動的管理ビュー(DMV)のガイドラインについて記載されています。動的管理ビューを使用して、トラブルシューティングする方法が説明されています。

 

Download details: Troubleshooting and Optimizing Queries with SQL Azure

SQL Azure Team Blog

Adding Users to Your SQL Azure Database – SQL Azure Team Blog – Site Home – MSDN Blogsを簡単に翻訳し紹介したエントリーです。

SQL Azure Portalを使用して、SQL Azureサーバを作成したとき、同時にユーザ名とパスワードを作成します。サーバ上の全データベースにアクセスすることができる管理者アカウントです。しかし、サーバ上の全て、もしくは一部のDBに他の人にも、フル権限または一部権限で、アクセスして欲しいと思うことがあります。このエントリーでは、SQL Azureデータベースに対してユーザアカウントを追加する方法を紹介します。

今のところ、SQL Azure Portalで、管理者アカウントを追加することはできません。追加するにはTransact-SQLを使用する必要があります。SQL Server Management Studio 2008 R2を使用してSQL AzureにTransact-SQLを実行します。SQL Server Management Studio 2008 R2はSQL Azureデータベースのユーザとログインを一覧で表示しますが、ユーザとログイン作成のGUIは提供されていません。

一覧には、ユーザーとログインが表示されている。

vs04

 

プロパティ的なメニューが表示されない。GUIでの操作方法を今のところ提供されていない。

vs05

 

ログインを作成する

 

ログインは、パスワードとログイン(ID)ペアになっており、全てのデータベースに同じパスワードでアクセスすることができます。ログインを作成するTransact-SQLは次のようなものです。

CREATE LOGIN readonlylogin WITH password='1231!#ASDF!a';

CREATE LOGINコマンドを実行するには、SQL Azureのマスターデータベースに(SQL Azure Portalで作成した)管理者アカウントで接続しなければなりません。

 

ユーザを作成する

 

ユーザは、データベスに対して作成し、ログインと紐付けます。ユーザを作成するデータベースに対して接続しなければなりません。多くの場合、マスターデータベース以外に接続することになります。ユーザを作成するTransact-SQLは次の用になります。

CREATE USER readonlyuser FROM LOGIN readonlylogin;

 

ユーザ権限

 

ユーザを作成した直後は、データベースに接続する権限はありません。アクセスする為の権限を付与する必要があります。次のTransact-SQLは、ユーザ「readonlyuser」に対して、データベース読み取り権限をdb_datareaderロールを使用して付与します。

EXEC sp_addrolemember 'db_datareader', 'readonlyuser';

 

ユーザとログインを削除する

 

幸い、SQL Server Management Studio 2008 R2はユーザとログインを削除することができます。オブジェクトエクスプローラーのツリーからセキュリティーノードを見つけます。ユーザまたはログインで右クリックをし、削除を選択します。

vs06

 

補足情報

 

SQL AzureはUSE文を使用することができません。これは、一つのスクリプトで、ログインとユーザを作成することができないことを意味しています。CREATE LOGIN と CREATE USERを実行するにはぞれぞれデータベースに接続詞直さなければなりません。

詳細は、Managing Databases and Logins in SQL Azureを確認してください。

SQL Azure Team Blog

SQL Azureのセキュリティガイドラインが、マイクロソフト ダウンロードセンターにて提供されています。このホワイトペーパーでは、SQL Azureにセキュアに接続する為に、サーバサードとクライアントサイドで必要な基本的な設定について説明されています。

管理者ログインとSQL Azureファイヤーウォールと内部ファイヤーウォールのベストプラクティスを学べます。

 

Download details: Security Guidelines for SQL Azure