SQL Azure

SQL DatabaseからストレージにデータをエクスポートしているとDTUの上限にまで達してしまうのだけど、どうしたらいい?っとstackoverflowで質問されていました。

DTU Limit

 

回答しては、2015年1月段階では次のような状況とのこと。

トランザクション的にデータをエクスポートするには、バックグラウンド大量のクエリを発行する必要があり、フルバックアップが完了するまではクエリが発行され続ける。大きなデータベースだと、そのクエリが原因でDTUの上限に達してしまう。

この問題の解決策としては2つのアプローチが考えられる。

1つ目は、

  • 一時的に上位のサービス帯にアップグレードし、エクスポートをする
  • エクスポートが完了したら、サービス帯を戻す。

2つ目は、

  • ポイントタイムリストア機能を使用して、最も最近のコピーを新しいデータベースにリストアする
  • 新しいデータベースからエクスポートをする(既存のアプリケーションに影響を与えずにすむ)
  • エクスポートが完了したら新しいデータベースを削除する

2つ目の方法がパフォーマンス上優位な対応。

SQL Azure

Azure SQL Databaseのデータベースの状況をモニタリングするためのアプリケーションを開発したときに、使用するデータベースのログイン(ユーザー)についてのお話です。

モニタリング用なので、データベースからユーザーデータが読めたり、データベースの設定をいじれたりしないように、安心でセキュアで信頼できるように最小の権限で設定したいので、最小にする方法が知りたいですよね?
調べた結果をMSDN Blog「Setting up Logins to monitor Azure SQL Databases」に投稿されていたので紹介します。

手順

手順1:LOGINの作成

Create LOGIN APPLOGIN with password=’abcd123?’

手順2:Msterデータベースにユーザー作成

CREATE USER [APPUSER] FOR LOGIN [APPLOGIN] WITH DEFAULT_SCHEMA=[guest]

手順3:対象データベースにユーザー作成

CREATE USER [APPUSER] FOR LOGIN [APPLOGIN] WITH DEFAULT_SCHEMA=[guest]

手順4:対象データベースのユーザーに権限付与

GRANT VIEW DATABASE STATE TO APPUSER

結論

これで、APPLOGINでログインして上げれば、対象のデータベースの動的管理ビューなどは参照できるけど、ユーザーテーブルは参照できないというミニマム権限のモニタリング用ログイン(ユーザー)が作成できました。

次のようなクエリも流せるよ!

データベースサイズのモニタリング

SELECT SUM(reserved_page_count)*8.0/1024
FROM sys.dm_db_partition_stats;
GO

SELECT SUM(reserved_page_count)*8.0/1024
FROM sys.dm_db_partition_stats;
GO

トップ5クエリの抽出

SELECT TOP 5 query_stats.query_hash AS "Query Hash",
SUM(query_stats.total_worker_time) / SUM(query_stats.execution_count) AS "Avg CPU Time",
MIN(query_stats.statement_text) AS "Statement Text"
FROM
(SELECT QS.*,
SUBSTRING(ST.text, (QS.statement_start_offset/2) + 1,
((CASE statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE QS.statement_end_offset END
– QS.statement_start_offset)/2) + 1) AS statement_text
FROM sys.dm_exec_query_stats AS QS
CROSS APPLY sys.dm_exec_sql_text(QS.sql_handle) as ST) as query_stats
GROUP BY query_stats.query_hash
ORDER BY 2 DESC;
GO

SQL Azure

SQL Server PASS Summitで、Azure SQL Databaseに関する大きな発表がありました。

今年(2014年)中に、Azure SQL Databaseの新しいバージョンのプレビューを始めます。
アプリケーションを簡単にクラウドに移行、拡張できるように次のような機能を提供します。

  • オンラインインデックス
  • 並列クエリ(プレミアム・エディションのみ)
  • テーブルパーティショニング
  • ALTERデータベースコマンド
  • 共通言語ランタイムとT-SQLの改善(Windows関数)
  • XMLインデックス
  • 拡張イベントによるモニタリング、トラブルシューティング
  • インメモリ列ストアへの対応(プレミアム・エディションのみ)

参考情報

Preview for greater SQL Server compatibility coming soon to Azure SQL Database

Microsoft announces major update to Azure SQL Database, adds free tier to Azure Machine Learning

SQL Azure

Azure SQL Database の新しいサービス層の性能を定義するのに使用されているAzure SQL Database Benchmarkツール。一体、どんなツールで、どうやって計測されているのでしょうか?
そんな裏側の仕組みが気になる方は、ぜひ、「Azure SQL Database for Business-Critical Cloud Applications: (04) Azure SQL Database Benchmark」を視聴してください。約1時間にわたって解説してくれています。

 

image

image

image

Azure SQL Database Benchmark ツールで、スループットを計測して、その数字をもとにDTUを決定しています。上記画像が、実際のAzure SQL Database Benchmark ツールのスクリーンショットです。

image

DTUは、ベンチマークパフォーマンスで計測した数字そのものが、使用されていることがわかります。

 

image

Azure SQL Databaseでは、フェイルオーバーしていても性能劣化が表に出にくい。ベンチマークツールで計測中に、フェイルオーバーさせたがグラフ上表れにくい。

 

image

ベンチマークで使用するテーブル構成のお話。

SQL Azure

image

2014年10月4日(土)に、日本マイクロソフト株式会社品川オフィス31FセミナールームAにて、Japan Azure User Group主催で開催する「SQL Server収穫祭」に登壇しました。

SQL Server 収穫祭

食欲の秋、実りの秋、そして SQL Server / SQL Database の秋です。
Azure で SQL Server / SQL Database の利用に興味のある方、
この機会に情報をがっつり収穫してみませんか!!

今回は SQL Server サポートチームの方をお招きし、セッションを実施していただく機会を設けることができました。
Azure MVP / SQL Server MVP にも登壇いただき、SQL Server / SQL Database 尽くしの一日でお送りいたします。

Azure SQL Database 入門 2014年10月版