2016年3月18日金曜日

HDInsightクラスタ(Windows)でヘッドノードに管理者権限を付与できない件について

HDInsightクラスタに紐づいたストレージ間でAZCopyでデータコピーをしようという要件がありそうなのですが、これは第3者のVMを経由しないとだめなようです。
AZCopyをインストールするにはWindowsの管理者権限が必要なのですが、これが不可とのことです。

参考:Administrator Privileges on Headnode of HDInsight-Cluster

2016年3月14日月曜日

Azure SQL DatabaseでSQLの実行時間を図る方法

SQL文の実行時間を測定したい場合は
set statistics time on
をSQL文の前に実行します。
例えば
set statistics time on;
go
select * from saleslt.Customer;
go
といったSQL文を実行すると
SQL Server parse and compile time: 
   CPU time = 0 ms, elapsed time = 1 ms.

    (847 row(s) affected)    

 SQL Server Execution Times:
   CPU time = 16 ms,  elapsed time = 8 ms.
といった実行時間の情報が得られます。

また、平均CPUに基づいて上位N位のSQL文を取得したい場合には、動的管理ビュー「sys.dm_exec_query_stats」を使います。
例えば上位5位までのSQL文を取得したい場合には
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 Datawarehouseでは使用できないようです。

参考:https://technet.microsoft.com/ja-jp/library/gg457940.aspx