উত্তর:
STATISTICS IO
কমপক্ষে টেম্পডিবিতে সংস্করণ স্টোরের জন্য সংস্করণ স্টোরের পাঠগুলি অন্তর্ভুক্ত করে না।
প্রমাণের জন্য এখানে একটি ডেমো রয়েছে:
--setup script
USE master
GO
CREATE DATABASE TestDB
GO
ALTER DATABASE TestDB
SET ALLOW_SNAPSHOT_ISOLATION ON
GO
USE TestDB
GO
DROP TABLE IF EXISTS dbo.Test
GO
CREATE TABLE dbo.Test (ID int identity PRIMARY KEY, junk int)
INSERT dbo.Test
SELECT TOP (100000) 1
FROM master.dbo.spt_values a
CROSS JOIN master.dbo.spt_values b
একটি এসএসএমএস ট্যাবে 30 এর আপডেট লুপটি শুরু করুন
--UPDATE loop
SET NOCOUNT ON
DECLARE @stop datetime = DATEADD(SECOND, 30, GETDATE())
WHILE GETDATE() < @stop
BEGIN
BEGIN TRAN
UPDATE dbo.Test
SET junk += 1
COMMIT
END
UPDATE dbo.Test
SET junk = 1
এবং যখন লুপ যাচ্ছে, দুটি অভিন্ন প্রশ্নের চালানোর SNAPSHOT
সঙ্গে STATISTICS IO ON
, -15 দ্বারা পৃথক স্তূপাকার সংস্করণ অনুমতি দেয়।
USE TestDB
SET STATISTICS IO ON
GO
SET TRANSACTION ISOLATION LEVEL SNAPSHOT
BEGIN TRAN
SELECT MAX(junk)
FROM dbo.Test
WAITFOR DELAY '00:00:15'
SELECT MAX(junk)
FROM dbo.Test
COMMIT
আইও পরিসংখ্যানগুলি অভিন্ন পাঠ দেখায়:
সংস্করণ স্টোরটি পড়ার কারণে প্রকৃত বাস্তবায়ন পরিকল্পনায় দ্বিতীয় ক্যোয়ারির জন্য অনেক বেশি সময় নিয়ে স্ক্যানটি দেখানো হয়েছে।
নিজেকে প্রমাণ করার জন্য যে এই ক্যোয়ারির ফলস্বরূপ টেম্পডিবির পাঠ ঘটে, আপনি এই প্রসারিত ইভেন্টস সেশনটি ব্যবহার করতে পারেন (যা প্রকৃতপক্ষে প্রোফাইলারের চেয়ে ভাল), যে সেশনটিতে পড়ার প্রশ্নগুলি চলছে তা ফিল্টার করে:
CREATE EVENT SESSION [file_reads] ON SERVER
ADD EVENT sqlserver.file_read_completed(
ACTION(sqlserver.session_id,sqlserver.sql_text)
WHERE ([sqlserver].[session_id]=(52)))
ADD TARGET package0.event_file(SET filename=N'file_reads')
GO
ডেমো চলাকালীন সেই XE সেশনের জন্য "লাইভ ডেটা" দেখে আপনি দেখতে পাবেন ডাটাবেস আইডি 2 (টেম্পডিবি) এর বিপরীতে, এবং এটি আমাদের পঠিত ক্যোয়ারির ক্যোয়ারী পাঠ্যটিকেও ধারণ করে:
পল হোয়াইটকে এই বিষয়টি স্ট্যাটিস্টিকস আইও-র সাথে আনার জন্য বিশেষ ধন্যবাদ।