ชุดข้อมูลสถิติ IO- โต๊ะทำงาน / ไฟล์งาน


21

ฉันกำลังดำเนินการแบบสอบถามที่สร้างแผน: ป้อนคำอธิบายรูปภาพที่นี่

สถิติ IO:

Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Workfile'. Scan count 128, logical reads 5952, physical reads 576, read-ahead reads 6080, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Table1'. Scan count 9, logical reads 90450, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

ดังนั้นบางคำถาม

1. เหตุใดสถิติของ IO จึงอ่านได้สูงกว่า Profiler .

สำหรับKB314648มันก็โอเคถ้าหาก Profiler รายงานตัวเลขที่สูงกว่า Statistics IO แต่ Profiler แสดงให้เห็นการ 92283อ่านที่แบบสอบถามอธิบายการดำเนินการเดียวกัน นั่นหมายความว่า Profiler ไม่นับ workfile / worktable ที่อ่าน?

2. อะไรคือความแตกต่างระหว่าง "โต๊ะทำงาน" และ "Workfile"

ฉันได้พบว่า:

  • สามารถใช้ไฟล์งานเพื่อเก็บผลลัพธ์ชั่วคราวสำหรับการรวมแฮชและการรวมแฮช
  • ตารางงานสามารถใช้เพื่อเก็บผลลัพธ์ชั่วคราวสำหรับสปูลแบบสอบถาม, ตัวแปร lob, ตัวแปร XML และเคอร์เซอร์

มีความแตกต่างทางกายภาพบ้างไหม?

3. เหตุใดจึงมี "โต๊ะทำงาน" ในกรณีนี้โดยเฉพาะ?

เหตุใดฉันจึงมีโต๊ะทำงานเลยหากมีการอ่านแบบลอจิคัล 0 มันรวมอยู่ในสถิติ IO เพียงเพราะอาจมีความต้องการมัน (ในกรณีที่ประมาณการไม่ดี)?

คำอธิบายที่พบในtechnetดูเหมือนคลุมเครือ ..

4. "การอ่านทางกายภาพ" ใน Workfile หมายถึงอะไร

หมายความว่ามีหน่วยความจำไม่เพียงพอที่จะให้คิวรีดังนั้นจึงต้องเขียนข้อมูลลงดิสก์ขณะที่คิวรีดำเนินการ (คำเตือนสีเหลืองในการจับคู่แฮช)? ฉันสามารถสันนิษฐานได้หรือไม่ว่าเมื่อใดก็ตามที่ฉันเห็น worktable / workfile ใน Statistics IO ที่มีการอ่านฟิสิคัลมีหน่วยความจำไม่เพียงพอที่จะให้คิวรีได้ และเมื่อใดก็ตามที่ฉันเห็นเฉพาะการอ่านเชิงตรรกะจะใช้ RAM หรือไม่

5. หนึ่ง "workfile" หมายถึงหนึ่งตารางที่ใช้สำหรับจุดประสงค์เดียวหรือไม่

หากมีมากกว่าหนึ่งไฟล์ workfile / worktable ดังนั้นฉันไม่สามารถรู้ได้ว่ามันใช้งานอะไร?


คำเตือนในการแข่งขันแฮชคืออะไร? นั่นคืออุณหภูมิรั่วไหลหรือไม่?
Tom V - Team Monica

@TomV, ใช่ - การรั่วไหลระดับ 1 และการรั่วไหลระดับ 2
Jānis

คำตอบ:


15

1. เหตุใดสถิติของ IO จึงอ่านได้สูงกว่า Profiler

ไม่มีความคิดขอโทษ มักจะมีความแตกต่างเพราะพวกเขาวัดสิ่งต่าง ๆ ตามที่กล่าวถึงในบทความฐานความรู้ ไม่มีเอกสารเพิ่มเติมเกี่ยวกับเรื่องนี้ที่ฉันรู้ คุณอาจสามารถสรุปบางสิ่งผ่านการทดสอบอย่างละเอียด แต่ไม่มีอะไรรับประกันได้ว่าสิ่งที่คุณพบจะยังคงสอดคล้องกันในทุกเวอร์ชันและงานสร้าง ลักษณะการทำงานที่ตั้งใจจะไม่สอดคล้องกันพอก่อนที่จะคิดเป็นข้อบกพร่องที่เป็นไปได้

2. อะไรคือความแตกต่างระหว่าง "โต๊ะทำงาน" และ "Workfile"

ทั้งสองเป็นวัตถุภายใน ไม่อย่างนั้นจะเป็นชื่อที่แนะนำ: ตารางการทำงานมีโครงสร้างเหมือนตาราง, ไฟล์งานเป็นไฟล์ ไม่สามารถมองเห็นโครงสร้างที่มีรายละเอียดได้แม้จะมีคุณสมบัติบางอย่างที่สามารถแยกแยะได้โดยการตรวจสอบวิธีการของพวกเขา

3. เหตุใดจึงมี "โต๊ะทำงาน" ในกรณีนี้โดยเฉพาะ?

จำเป็นต้องใช้ตารางงานสำหรับการดำเนินการแฮช (โหมดแถว) เสมอ มันถูกใช้ภายในในการกระจายอินพุตไปยังพาร์ติชันแฮช (คำที่โอเวอร์โหลดไม่เกี่ยวข้องกับการแบ่งพาร์ติชันของตาราง) และเพื่อติดตามสถานะ ฉันไม่เคยเห็นตารางการแปลงแป้นพิมพ์รายงานอะไรนอกเหนือจากศูนย์ในผลลัพธ์ทางสถิติ แต่จากนั้นฉันก็ไม่เคยดูเลย

4. "การอ่านทางกายภาพ" ใน Workfile หมายถึงอะไร

ไฟล์งานเป็นส่วนหนึ่งของกลไกที่ใช้งานเมื่อพาร์ติชันแฮชหก แม้ว่าจะไม่ได้บันทึกไว้ แต่ฟิสิคัลและการอ่านล่วงหน้าจะเกิดขึ้นเมื่อเอ็นจินการเรียกใช้งานดึงพาร์ติชันแฮชที่หกออกจากไฟล์งาน

5. หนึ่ง "workfile" หมายถึงหนึ่งตารางที่ใช้สำหรับจุดประสงค์เดียวหรือไม่

ตามที่ฉันจำได้อาจมีหลายครั้ง ไม่มีวิธีที่ฉันรู้เกี่ยวกับการเชื่อมโยงSTATISTICS IOบรรทัดเฉพาะกับวัตถุหรือโหนดแผน นี่เป็นข้อ จำกัด ที่ยาวนาน อาจมีการเปลี่ยนแปลงสิ่งนี้ใน SQL Server 2016 แต่ฉันไม่ได้ทดสอบว่ามันใช้กับวัตถุชั่วคราวภายในหรือไม่

ท้ายที่สุดมันไม่มีประโยชน์อะไรมากมายที่จะเรียนรู้จากSTATISTICS IOผลลัพธ์สำหรับไฟล์งานและตารางการทำงานที่นอกเหนือจากที่คุณสามารถเรียนรู้ได้โดยการดูข้อมูลอื่น ๆ ในแผนปฏิบัติการหลังการดำเนินการ (หรือผ่าน DMVs, Extended Events ฯลฯ ) ฉันขอโทษสำหรับคำตอบที่ไม่สมบูรณ์ แต่มันเป็นสิ่งที่ดีที่สุดที่ฉันสามารถทำได้จากหัวของฉัน

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