ค่าในช่วงเวลาของ sql server อาจจะไม่ถูกต้องเมื่อคุณใช้โปรแกรมอรรถประโยชน์หรือเทคโนโลยีที่เปลี่ยนแปลงความถี่ที่ CPU

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 931279 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

สรุป

Microsoft SQL Server 2005 ใช้ตัวตรวจนับ CPU high-resolution เพื่อให้มีความสามารถในการกำหนดเวลา microsecond แบบ microsecond คือ millionth หนึ่งของวินาทีที่ (หรือ thousandth หนึ่งของ millisecond แบบ) อย่างไรก็ตาม ค่าช่วงเวลาของเซิร์ฟเวอร์ SQL อาจไม่ถูกต้องถ้าคุณใช้เทคโนโลยีที่เปลี่ยนแปลงความถี่ที่ CPU ตัวอย่างเช่น ปัญหานี้อาจเกิดขึ้นเมื่อคุณใช้ใด ๆ ของเทคโนโลยีต่าง ๆ ต่อไปนี้:
  • CPU stepping
  • Cool'n AMD ' Quiet เทคโนโลยี
  • ชุดรูปแบบพลังงานแตกต่างกัน
บทความนี้ประกอบด้วยวิธีการและข้อมูลเพิ่มเติมเพื่อช่วยให้คุณต้องแก้ไขปัญหานี้

อาการ

เมื่อคุณใช้คำสั่ง SET สถิติ TIME เพื่อแสดงการปฏิบัติการเซิร์ฟเวอร์ แยก และเวลาการคอมไพล์ คุณอาจได้รับข้อความแสดงค่าที่ไม่ถูกต้อง ตัวอย่างเช่น คุณอาจสังเกตว่า เวลาที่ใช้เวลาที่ใช้ SQL Server ดำเนินเป็นมากมากกว่าเวลาของ CPU ปัญหานี้อาจมีผลต่อความถูกต้องของการปรับค่าประสิทธิภาพ ปัญหานี้เกิดขึ้นเมื่อคุณใช้เทคโนโลยีที่ระบุไว้อย่างใดอย่างหนึ่งในส่วน "บทสรุป" บนเซิร์ฟเวอร์

สาเหตุ

ปัญหานี้เกิดขึ้นเนื่องจากมีเปลี่ยนความถี่ที่ CPU เมื่อคุณใช้เทคโนโลยีเหล่านี้ sql Server 2005 ใช้ตัวตรวจนับ CPU high-resolution เพื่อให้มีความสามารถในการกำหนดเวลา microsecond ถ้ามีเปลี่ยนความถี่ที่ CPU เพื่อประหยัดพลังงาน และลดความร้อนผลลัพธ์ ช่วงเวลาที่คำนวณได้อาจจะไม่ถูกต้อง

การแก้ไข

ข้อมูล Service Pack

เมื่อต้องการแก้ไขปัญหานี้ ขอรับ service pack ล่าสุดสำหรับ SQL Server 2005 สำหรับข้อมูลเพิ่มเติม ให้คลิกหมายเลขบทความต่อไปนี้ เพื่อดูบทความในฐานความรู้ของ Microsoft::
913089วิธีการขอรับ service pack ล่าสุดสำหรับ SQL Server 2005
หมายเหตุ:ใน SQL Server 2005 Service Pack 3 และ ในเซอร์วิสแพ็คใหม่กว่า ประทับเวลาของตัวประมวลผลไม่ใช้ SQL Server 2005 รุ่นเหล่านี้ใช้ตัวจับเวลาที่เชื่อถือได้มากที่มีความแม่นยำที่สูงสุดของ 1 millisecond

สถานะ

ปัญหานี้ถูกแก้ไขครั้งแรกใน SQL Server 2005 Service Pack 3

การหลีกเลี่ยงปัญหา

sql Server 2005 จำเป็นต้องใช้จุดข้อมูลที่รู้จัก และเสถียรเพื่อทำการปรับค่าประสิทธิภาพการทำงานที่ถูกต้อง ถ้ามีการปรับปรุงความถี่ของ CPU แบบไดนามิกจะเปิดใช้งานบนเครื่องคอมพิวเตอร์ คุณสามารถปิดใช้งานดังกล่าวเพื่อ cpu รักษาอัตราความถี่ steady ก่อนที่คุณเริ่มการทำงานการตรวจสอบ และปรับแต่งประสิทธิภาพการทำงานของ SQL Server เมื่อต้องการทำเช่นนี้ ใช้วิธีการต่อไปนี้

การตั้งค่าคอนฟิกชุดรูปแบบพลังงานบนคอมพิวเตอร์เพื่อบังคับใช้ cpu จะยังคงอยู่ที่ความถี่สูงสุด

โดยให้ทำตามขั้นตอนต่อไปนี้::
  1. คลิกเริ่มการทำงานคลิกเรียกใช้ประเภท:Powercfg.cplแล้ว คลิกตกลง.
  2. ในการคุณสมบัติตัวเลือกการใช้พลังงานกล่องโต้ตอบ คลิกตรงเสมอในการชุดรูปแบบพลังงานรายการ
  3. คลิกตกลง.
drift อาจเกิดขึ้น drift เป็นแบบ divergence ระหว่างค่าความถี่ของ CPU สำหรับข้อมูลเพิ่มเติม ให้ดูที่ส่วน "Drift" ในกรณีนี้ คุณต้องเริ่มต้นการ Microsoft Windows resynchronize ความถี่ของ cpu ทั้งหมดหลังจากที่คุณเปลี่ยนชุดรูปแบบพลังงาน

ถ้าคุณไม่สามารถเริ่มระบบใหม่ เปิดใช้งานความสัมพันธ์ตัวประมวลผลของ SQL Server เพื่อป้องกันไม่ให้ SQL Server ของผู้ปฏิบัติงานเธรดการย้ายระหว่าง cpu เมื่อคุณทำเช่นนี้ คุณไม่มีการรีสตาร์ทคอมพิวเตอร์แม้ว่าการ divergence ระหว่างค่าความถี่ของ CPU เกิดขึ้น ความสัมพันธ์ตัวประมวลผลของ SQL Server สำหรับ cpu ทั้งหมดบนเซิร์ฟเวอร์การเปิดใช้งาน คุณต้องใช้มาสก์แตกต่างกัน ขึ้นอยู่กับจำนวนของตัวประมวลผลแบบลอจิคัลที่อยู่บนเซิร์ฟเวอร์

ตารางต่อไปนี้แสดงตัวอย่างสถานการณ์
ยุบตารางนี้ขยายตารางนี้
หมายเลขของ CPUเพื่อที่เปิดการใช้งานของความสัมพันธ์ตัวประมวลผล
cpu 02sp_configure exec 'ความสัมพันธ์มาสก์' 0x00000003
ไปยัง
กำหนดค่าใหม่
ไปยัง
04 cpusp_configure exec 'ความสัมพันธ์มาสก์' 0x0000000F
ไปยัง
กำหนดค่าใหม่
ไปยัง
cpu 08sp_configure exec 'ความสัมพันธ์มาสก์' 0x000000FF
ไปยัง
กำหนดค่าใหม่
ไปยัง
cpu 16sp_configure exec 'ความสัมพันธ์มาสก์' 0x0000FFFF
ไปยัง
กำหนดค่าใหม่
ไปยัง
cpu 32sp_configure exec 'ความสัมพันธ์มาสก์' 0xFFFFFFFF
ไปยัง
กำหนดค่าใหม่
ไปยัง
หมายเหตุ:คุณอาจไม่เพียงพอในการปิดการใช้งานคุณลักษณะผันแปรความถี่ของ CPU ในระดับ BIOS โปรแกรมอรรถประโยชน์อื่น ๆ ที่แตกต่างกันสามารถทำการเปลี่ยนแปลงความถี่ที่ CPU บาง implementations เปิดใช้งานการปรับปรุงความถี่แม้ว่า cpu อยู่ภายใต้การตั้งค่าชุดรูปแบบพลังงานสูงสุด ในกรณีนี้ คุณต้องปิดโปรแกรมอรรถประโยชน์ของบริษัทอื่นเหล่านี้เมื่อคุณทำการปรับค่าใน SQL Server 2005 ประสิทธิภาพการทำงาน

ใช้โปรแกรมอรรถประโยชน์อื่น ๆ และไดรเวอร์การซิงโครนัสความถี่ที่ CPU และตัวนับนาฬิกาของ CPU

บน occasions ไม่ค่อยพบ ระบบอาจต้องการปรับปรุงจากผู้ผลิตเพื่อแก้ไขปัญหาความถี่ที่ CPU ควรตรวจสอบระบบสำหรับการปรับปรุง BIOS, microcode และเฟิร์มแวร์รุ่นล่าสุดหากคุณสงสัยว่า ระบบอาจมีปัญหาได้

ข้อมูลเพิ่มเติม

Microsoft SQL Server 2000 และรุ่นก่อนหน้าของ SQL Server ใช้กลไกการกำหนดช่วงเวลาของ Windows กลไกการกำหนดช่วงเวลาที่ใช้ค่าความแม่นยำ millisecond โดยทั่วไป ความแม่นยำนี้คือ 10 ถึง 15 ms. อย่างไรก็ตาม ความแม่นยำอาจจะใหญ่ 55 ms บ่อยครั้งการสอบถาม sql Server ให้เสร็จสมบูรณ์ภายในตัวเลขเดียว millisecond หรือการขยายขอบเขตเวลา microsecond ความแม่นยำนี้จำเป็นต้องใช้ตัวจับเวลา high-resolution ดังนั้น เหล่านี้รุ่นรายงานของ SQL Server ระยะเวลาของการสอบถามบางอย่างเป็น 0 ms. Therefore จะยากต่อการตรวจสอบประสิทธิภาพ และการปรับแต่งประสิทธิภาพการทำงานของ sql server ใน SQL Server รุ่นก่อนหน้า

SQL Server 2005 improves accuracy by using the high-resolution CPU counter to provide microsecond timing capabilities. When you use the technologies that are listed in the "Summary" section, the reported timing values may be incorrect.

This issue may affect the following objects and features:
  • Trace events:
    • กระบวนการAttentionเหตุการณ์
    • Events in the Stored Procedures node
    • Events in the TSQL node
    • Events in the Objects node
    • Events in the Transactions node
  • Dynamic management views:
    • sys.dm_exec_query_stats
    • sys.dm_exec_requests
    • sys.dm_exec_sessions
    • sys.dm_io_pending_io_requests
    • sys.dm_os_ring_buffers
    • sys.dm_os_sys_info
    • sys.dm_io_virtual_file_stats
    • sys.dm_os_wait_stats
  • The SET STATISTICS TIME statement
  • กระบวนการsysprocessessystem table
After you install SQL Server 2005 Service Pack 2 (SP2), SQL Server logs an error message in the error log when SQL Server detects that the high resolution timers are out of sync between the CPUs. The error message indicates that performance timings may not be accurate, and users should use performance data with caution.

The text of the error message resembles one of the following error messages:
ข้อความแสดงข้อผิดพลาด 1:
The time stamp counter of CPU on scheduler id 2 is not synchronized with other CPUs.
เกิดข้อผิดพลาด 2
CPU time stamp frequency has changed from 191469 to 1794177 ticks per millisecond. The new frequency will be used
SQL Server uses the Real Time Stamp Counter (RDTSC) instruction to acquire the 64-bit CPU tick count. You can divide this value by the CPU frequency to convert the value to millisecond values. Timing variations can occur when the CPU frequency changes or drift occurs.

CPU stepping

CPU stepping is defined as a deliberate change in CPU frequency. CPU stepping may also be known as Intel SpeedStep technology or AMD PowerNow! technology. When CPU stepping occurs, the CPU speed may increase or decrease in increments as small as 50 MHz to conserve energy and reduce heat output. CPUs that are within the same non-uniform memory access (NUMA) node do not independently adjust frequencies.

The following table illustrates how CPU stepping changes may affect timing calculations.
ยุบตารางนี้ขยายตารางนี้
การทำงาน (Action)RDTSC TicksTicks per millisecond (Frequency)Wall clock time
Start Batch12000
Frequency Step Down2001001ms
End Batch5003ms
TOTALS5004ms
SQL Server captures the RDTSC ticks at both the start and end RDTSC ticks. Then, SQL Server divides the ticks by the frequency value.

In this example, the following timing calculations occur when you use a frequency value of 200 or 100:
  • Frequency 200:500/200 = 2.5 ms
  • Frequency 100:500/100 = 5 ms
Neither of the timing calculations matches the actual wall clock time of 4 ms.

If this calculation is used in anRPC:Completedtrace event, theระยะเวลาและend timedata columns are reported incorrectly. กระบวนการRPC: เสร็จสมบูรณ์แล้วเหตุการณ์จับเวลานาฬิกาผนังเริ่มต้นและการนับขีด CPU การขอรับการกำหนดช่วงสูงกว่าความละเอียดเวลาเกินกว่าที่ Windows ส่งใน SQL Server 2005,ระยะเวลาและเวลาสิ้นสุดคอลัมน์ข้อมูลในการสืบค้นกลับของ SQL Server ถูกคำนวณ โดยใช้การตรวจนับขีด CPU elapsed กระบวนการเวลาสิ้นสุดคอลัมน์ถูกคำนวณ โดยการเพิ่มระยะเวลาคอลัมน์นี้เวลาเริ่มต้นคอลัมน์ ในตัวอย่างนี้เวลาสิ้นสุดคอลัมน์ถูกคำนวณ โดยไม่ถูกต้องเพิ่ม 2.5 ms หรือ 5 ms จนถึงเวลาเริ่มต้น

drift

drift เป็นแบบ divergence ในค่านาฬิกาของ CPU ระบบที่มีหลาย cpu สามารถผลิตค่านาฬิกา CPU แตกต่างกันสำหรับจุดเดียวกันในเวลา แม้ว่าไม่พบโดยทั่วไป cpu อาจพบนาฬิกา separation เมื่อเวลาผ่านไป

ตัวอย่างต่อไปนี้อธิบายวิธีการเปลี่ยนแปลง drift อาจส่งผลต่อผลลัพธ์ของการระยะเวลาคอลัมน์ข้อมูลในการสืบค้นกลับของ SQL Server ตัวอย่างสันนิษฐานว่า ความถี่ที่ CPU ยังคง steady ที่ ticks 200 ต่อ millisecond ตารางต่อไปนี้แสดงให้เห็นถึงแนวทางที่เหตุการณ์ในสถานการณ์นี้
ยุบตารางนี้ขยายตารางนี้
การทำงาน (Action)windows กำหนดเวลาของ CPUrdtsc cpu 1rdtsc cpu 2เวลาของนาฬิกาผนัง
เริ่มการทำงานของชุดงาน110011000
ชุดงานสิ้นสุด290019004 ms
ยอดรวม4 ms
sql Server จับ ticks RDTSC ที่จุดเริ่มต้นและจุดสิ้นสุด จากนั้น SQL Server divides RDTSC ticks ด้วยค่าความถี่ ในตัวอย่างนี้ Windows กำหนดเวลาเธรดของผู้ปฏิบัติงานของ SQL Server บน cpu ที่แตกต่างกันสอง เธรดของผู้ปฏิบัติงานของ sql server ที่บริการชุดงานรันบน CPU แรก (CPU 1) ก่อน

อย่างไรก็ตาม การดำเนินการชุดงานถูกขัดจังหวะจุดบางส่วน และ SQL Server ส่งการดำเนินการชุดงานลงในคิวที่ค้างอยู่ เมื่อมีการให้ SQL Server ส่งเธรดของผู้ปฏิบัติงานของ sql server ที่บริการชุดงานนี้ลงในคิวที่ runnable อีกครั้ง Windows dispatched เธรดให้รันใน CPU ตัวที่สอง (CPU 2) เธรดของผู้ปฏิบัติงานของ SQL Server เสร็จสมบูรณ์ในการทำงานโดยใช้ CPU 2 เนื่องจากความ CPU drift ค่าขีดสิ้นสุดที่ถูกจับภาพจาก CPU 2 ถูก 1900 แทนการ 900 คุณสามารถหลีกเลี่ยงการทำงานนี้ถ้าคุณเปิดการใช้งานของความสัมพันธ์ตัวประมวลผลของ SQL Server

คำนวณช่วงเวลาต่อไปนี้จะใช้ในตัวอย่างนี้:
  • ค่าไม่ถูกต้อง แต่รายงาน:(1900 100 = 1800) / 200 = 9 ms
  • ค่าที่ถูกต้อง:(900 100 = 800) / 200 = 4 ms
ค่าของการระยะเวลาคอลัมน์นี้RPC: เสร็จสมบูรณ์แล้วเหตุการณ์จะมีรายงานเป็นล้านวินาที 9 แทนการ 4 ms. ผลลัพธ์นี้จะมีมากกว่าสองค่าที่ถูกต้องของ 4 ms

มีเพิ่มข้อความเตือน drift กับ SQL Server 2005 เพื่อบ่งชี้ว่า ผลลัพธ์ของประสิทธิภาพการทำงานที่ระบุไว้ก่อนหน้านี้อาจไม่เชื่อถือได้ ในบางสถานการณ์ uncovered, SQL Server 2005 SP2 อาจรายงานข้อความเตือนเกี่ยวกับข้อความต่อไปนี้:
  • ข้อความเตือน drift เท็จ
  • drift จะสามารถ tens ของมิลลิวินาทีโดยไม่ก่อให้เกิดลักษณะพิเศษของระบบ noticeable
คุณต้องระวังเมื่อคุณประเมินผลที่เกี่ยวข้องกับประสิทธิภาพและเมื่อคุณเปรียบเทียบผลลัพธ์ที่เกี่ยวกับประสิทธิภาพการทำงานกับผนังนาฬิกา timings ถ้าไม่มีสัญญาณของปัญหาประสิทธิภาพการทำงานอื่น คุณสามารถละเว้นข้อความการเตือน drift โดยทั่วไป ตัวอย่างเช่น คุณสามารถมักจะละเว้นข้อความเตือน drift ในสถานการณ์ต่อไปนี้:
  • กระบวนการที่กำลังเรียกใช้ตามที่คาดไว้
  • ไม่มีการทำงานแบบสอบถาม sql Server ในรูปแบบ durational ที่ผิดปกติ
  • คุณไม่เห็นสัญญาณของ bottlenecks อื่น ๆ
อย่างไรก็ตาม ก่อนที่คุณละเว้น drift การแจ้งเตือนข้อความ เราขอแนะนำให้ คุณติดต่อ ผู้ผลิตของคุณเพื่อให้แน่ใจว่า ไม่มีการรู้จัก RDTSC ออกอยู่

คุณสามารถใช้ค่าสถานะการสืบค้นกลับ 8033 (–T8033) เพื่อกลับสู่การทำงานรายงาน ในรุ่นวางจำหน่ายต้นฉบับของ SQL Server 2005 และ SQL Server 2005 SP1 SQL Server 2005 และ SQL Server 2005 SP1 รุ่นแรกที่วางจำหน่ายไม่รายงานข้อความเตือน drift ถ้าคุณกำลังเรียกใช้รุ่นฉบับของ SQL Server 2005 หรือ SQL Server 2005 SP1 โดยไม่มีปัญหา คุณสามารถละเว้นข้อความโดยทั่วไป

เหตุใดงบการหน่วงเวลา WAITFOR งานถูกต้องหรือไม่ สิ่งที่เกี่ยวกับระบบประจำงวดประมวลผลได้อย่างไร

กลไกการหมดเวลาไม่ได้รับผลกระทบจากการออกแบบ high-resolution sql Server ไม่ได้ใช้ตัวจับเวลา high-resolution สำหรับกิจกรรมที่ขึ้นอยู่กับตัวจับเวลา กิจกรรมการหมดเวลาบางอย่างจะขึ้นอยู่กับความละเอียดของการลดตัวจับเวลาที่ใช้ในการGetTickCountฟังก์ชัน กิจกรรมการหมดเวลาเหล่านี้รวมถึงการหมดเวลาล็อก การหน่วงเวลา WAITFOR งบ และตรวจหา deadlock
หากต้องการทราบข้อมูลเพิ่มเติม โปรดคลิกที่หมายเลขบทความต่อไปนี้เพื่อดูบทความใน Microsoft Knowledge Base::
938448A Windows Server 2003-based server may experience time-stamp counter drift if the server uses dual-core AMD Opteron processors or multiprocessor AMD Opteron processors
895980Programs that use the QueryPerformanceCounter function may perform poorly in Windows Server 2003 and in Windows XP
ผลิตภัณฑ์ของบุคคลที่สามที่กล่าวถึงในบทความนี้ ผลิตขึ้นโดยบริษัทที่ไม่ขึ้นอยู่กับ Microsoft Microsoft ไม่รับประกัน ทั้งโดยนัยหรืออย่างอื่นใด เกี่ยวกับประสิทธิภาพหรือความน่าเชื่อถือของผลิตภัณฑ์เหล่านี้

คุณสมบัติ

หมายเลขบทความ (Article ID): 931279 - รีวิวครั้งสุดท้าย: 16 มกราคม 2554 - Revision: 4.0
ใช้กับ
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL 2005 Server Enterprise
  • Microsoft SQL Server 2005 Standard X64 Edition
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
Keywords: 
kbtshoot kbexpertiseadvanced kbsql2005engine kbprb kbmt KB931279 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:931279

ให้ข้อเสนอแนะ

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com