ข้อมูลสถิติ IO ส่งออกรวมถึงที่เก็บเวอร์ชันอ่านหรือไม่?


9

SQL Server มีตัวเลือกSET STATISTICS IO ONที่แสดงจำนวนหน้าตรรกะและฟิสิคัลที่อ่านสำหรับคิวรี สถิติเหล่านี้รวมถึงการอ่านที่เก็บเวอร์ชันสำหรับการสืบค้น SNAPSHOT และ RCSI หรือไม่

คำตอบ:


10

STATISTICS IO ไม่รวมการอ่านที่เก็บรุ่นอย่างน้อยสำหรับการจัดเก็บรุ่นใน tempdb

นี่คือตัวอย่างของการพิสูจน์:

--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 วินาทีในหนึ่งแท็บ SSMS

--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แยกจากกันโดย 15s ที่จะอนุญาตให้รุ่นที่จะสะสม

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

สถิติ IO แสดงการอ่านที่เหมือนกัน: สถิติ IO

แต่แผนปฏิบัติการจริงแสดงการสแกนสำหรับคิวรีที่สองซึ่งใช้เวลานานกว่าเดิมเนื่องจากการอ่านที่เก็บเวอร์ชัน แผนจริง

เพื่อพิสูจน์ตัวคุณเองว่าแบบสอบถามนี้ส่งผลให้อ่าน tempdb คุณสามารถใช้เซสชัน Extended Events (ซึ่งเห็นได้ชัดว่าดีกว่า Profiler) ซึ่งถูกกรองไปยังเซสชันที่มีการเรียกใช้การอ่าน:

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 นั้นในระหว่างการสาธิตคุณสามารถดูการอ่านกับฐานข้อมูล id 2 (tempdb) และจับข้อความข้อความค้นหาของแบบสอบถามที่เราอ่านเช่นกัน:

สกรีนช็อตของเซสชัน XE ที่แสดง tempdb อ่าน

ขอขอบคุณเป็นพิเศษกับ Paul White ที่นำเสนอปัญหานี้ด้วยสถิติ IO

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.