SE の雑記

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

SQL Database で SQL Server 2017 の自動チューニングが使えるかもしれない

one comment

SQL Server 2017 の自動チューニングの検証をしていて気付いたのですが、SQL Database でも SQL Server 2017 で実装される自動チューニングが使えるかもしれません。

Automatic tuning に記載されていますが、SQL Database の自動チューニングについては、インデックスの自動設定についての実装となっており、SQL Server 2017 で実装が行われる実行プランの退行を自動検知してのプランの強制については未実装ということになっています。

なっていたんですが、次のクエリを SQL Database に実行してみたら、SQL Server 2017 と同じように動作しました。
特にアナウンスとかは行われていないので、最終的にどうなるかは不明ですが…。

-- 初期化
ALTER DATABASE current SET QUERY_STORE CLEAR ALL
ALTER DATABASE current SET AUTOMATIC_TUNING ( FORCE_LAST_GOOD_PLAN = OFF)
GO
-- 設定
ALTER DATABASE CURRENT
SET QUERY_STORE = ON
GO
ALTER DATABASE CURRENT
SET QUERY_STORE (OPERATION_MODE = READ_WRITE, INTERVAL_LENGTH_MINUTES = 1)
GO
ALTER DATABASE CURRENT
SET AUTOMATIC_TUNING ( FORCE_LAST_GOOD_PLAN = ON )
GO
SELECT * FROM sys.database_automatic_tuning_options
GO

「FORCE_LAST_GOOD_PLAN」が SQL Server 2017 のクエリの退行の自動的な補正のチューニングとなるのですが、SQL Dabase の sys.database_automatic_tuning_options でチューニング項目として認識されており、有効化ができました。

(こそっと、見知らぬチューニングの設定項目もあったりしますが)
image
「FORCE_LAST_GOOD_PLAN」を有効化しなくても、クエリストアを有効にしていれば、推奨情報については取得されますので、次のクエリを実行すると、「Active」となっている情報が取得できるかもしれません。

SELECT
	r.reason,
	score,
    JSON_VALUE(details, '$.implementationDetails.script') script,
    planState.*,
	planForceDetails.*
FROM
	sys.dm_db_tuning_recommendations r
CROSS APPLY OPENJSON (Details, '$.planForceDetails')
WITH (
	[query_id] int '$.queryId',
	[new plan_id] int '$.regressedPlanId',
	[recommended plan_id] int '$.forcedPlanId'
	) as planForceDetails
CROSS APPLY OPENJSON (state)
WITH
	(
	[currentValue] nvarchar(100) '$.currentValue',
	[reason] nvarchar(100) '$.reason'
    ) as planState
GO

image
「Active」となっている推奨については、自動チューニングが有効になっていないため、自動的に実行プランの強制は実行されていないが、退行したクエリの情報となりますので、この情報もチューニングに生かすことができるかと。
SQL Server 2017 の場合、自動チューニングは Enterprise Edition の機能となるのですが、SQL Database では、現時点では Basic でも動作したので、このまま実装されるとうれしいですね。

Share

Written by Masayuki.Ozawa

8月 30th, 2017 at 11:05 pm

Posted in SQL Database

Tagged with

One Response to 'SQL Database で SQL Server 2017 の自動チューニングが使えるかもしれない'

Subscribe to comments with RSS or TrackBack to 'SQL Database で SQL Server 2017 の自動チューニングが使えるかもしれない'.

  1. […] SQL Database で SQL Server 2017 の自動チューニングが使えるかもしれない […]

Leave a Reply