การปรับปรุงการเกิดพร้อมกันสำหรับฐานข้อมูล tempdb

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

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

อาการ

เมื่อการtempdbheavily ใช้ฐานข้อมูล SQL Server อาจพบ contention เมื่อคุณพยายามที่จะปันส่วนหน้า

จากนั้นsysprocessesผลลัพธ์ของตารางระบบ waitresource อาจแสดงค่าเป็น " 2:1:1 " (PFS เพจ) หรือ " 2:1:3 " (SGAM หน้า) ได้ ทั้งนี้ขึ้นอยู่กับระดับ contention ซึ่งอาจจะนำไปยังเซิร์ฟเวอร์ SQL ที่ปรากฏไม่ตอบสนองสำหรับรอบระยะเวลาที่สั้น


การดำเนินการเหล่านี้ใช้ heavilytempdb:
  • ทำซ้ำสร้าง และการปล่อยของ temporary ตาราง (ท้องถิ่น หรือสากล)
  • ตัวแปรของตารางที่ใช้tempdbสำหรับวัตถุประสงค์ในการเก็บข้อมูล
  • ตารางที่เกี่ยวข้องกับเคอร์เซอร์ที่ทำงาน
  • ตารางที่เกี่ยวข้องกับการอนุประโยคสั่ง BY ใช้งาน
  • ตารางที่เกี่ยวข้องกับการอนุประโยค GROUP BY ใช้งาน
  • แฟ้มที่เกี่ยวข้องกับแฮแผนที่ใช้งาน
ใช้หนา และที่สำคัญของกิจกรรมเหล่านี้อาจนำปัญหา contention

สาเหตุ

ในระหว่างการสร้างวัตถุ เพจที่สอง (2) ต้องถูกปันส่วนจากส่วนขยายที่ผสม และกำหนดให้กับอ็อบเจกต์ใหม่ หน้าเดียวสำหรับดัชนีเป็นแผนผังการปันส่วน (IAM), และที่สองคือสำหรับหน้าแรกสำหรับวัตถุ SQL Server ติดตาม extents ผสม โดยใช้ใช้ร่วมกันสากลการปันส่วนแผนผัง (SGAM) หน้า แต่ละหน้า SGAM ติดตามประมาณ 4 กิกะของข้อมูล

เป็นส่วนหนึ่งของการปันส่วนหน้าจากเนื้อหาผสม SQL Server ต้องสแกนหน้าหน้าว่างว่าง (PFS) เพื่อค้นหาเพที่ผสมกันเป็นไพ่อิสระเพื่อปันส่วน PFS หน้าจะติดตามของเนื้อที่ว่างที่พร้อมใช้งานบนทุก ๆ หน้า และแต่ละหน้า PFS ติดตาม 8000 เกี่ยวกับหน้า การซิงโครไนส์ที่เหมาะสมจะยังคงเดิมเพื่อทำการเปลี่ยนแปลงในเพ PFS และ SGAM และที่สามารถ stall ตัวปรับอื่น ๆ สำหรับรอบระยะเวลาสั้น ๆ

เมื่อ SQL Server ค้นหาเพจที่ผสมจะปันส่วน มันเสมอเริ่มการสแกนแฟ้มเดียวกันและหน้า SGAM ซึ่งผล contention intense หน้า SGAM เมื่อหลาย ๆ ผสมหน้าที่ถูกปันส่วน underway ซึ่งสามารถเป็นสาเหตุของปัญหาได้รับการบันทึกไว้ในส่วน "อาการ" ของบทความนี้

หมายเหตุ:กิจกรรม de-allocation ยังต้องปรับเปลี่ยนเพ ซึ่งสามารถข้องเพื่อ contention ที่เพิ่มขึ้น

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับกลไกการปันส่วนที่แตกต่างกันที่ใช้ โดย SQL Server (SGAM, GAM, PFS, IAM), ให้ดูที่ส่วน "อ้างอิง" ของบทความนี้

การแก้ไข

เมื่อต้องการลด contention ทรัพยากรการปันส่วนสำหรับtempdbที่กำลังประสบกับการใช้งานหนา ทำตามขั้นตอนต่อไปนี้:
  1. สำหรับเซิร์ฟเวอร์ที่รัน SQL Server 2000 Service Pack 3 (SP3), ใช้โปรแกรมแก้ไขด่วน 8.00.0765 หรือการรักษาความปลอดภัยล่าสุดที่แก้ไข 8.00.0818 สำหรับเซิร์ฟเวอร์ที่รัน SQL Server SP2 ใช้โปรแกรมแก้ไขด่วน 8.00.0702

    การแก้ปัญหาเหล่านี้จะพร้อมใช้งานจากตำแหน่งที่ตั้งต่อไปนี้:

    8.00.0765
    814916การแก้ไข: ตัวแทนการผสานสำหรับการประกาศที่ถูกกรองอาจล้มเหลว
    8.00.0818
    http://www.microsoft.com/technet/security/bulletin/MS03-031.mspx
    8.00.0702
    328551การแก้ไข: การปรับปรุงการเกิดพร้อมกันสำหรับฐานข้อมูล tempdb
  2. ใช้ค่าสถานะการสืบค้นกลับ-t1118.

    หมายเหตุ:ค่าสถานะการสืบค้นกลับ-t1118มียังมีอยู่ และได้รับการสนับสนุนใน Microsoft SQL Server 2005 และ SQL Server 2008 อย่างไรก็ตาม ถ้าคุณกำลังเรียกใช้ SQL Server 2005 หรือ SQL Server 2008 คุณไม่จำเป็นต้องใช้โปรแกรมแก้ไขด่วนใด ๆ
  3. เพิ่มจำนวนtempdbแฟ้มข้อมูลเป็นอย่างน้อยเท่ากับจำนวนของตัวประมวลผล นอกจากนี้ สร้างแฟ้มที่ มี sizing เท่า สำหรับข้อมูลเพิ่มเติม โปรดดูที่ส่วน "ข้อมูลเพิ่มเติม"
หมายเหตุ:ขั้นตอนเหล่านี้ยังใช้กับ Microsoft SQL Server 7.0 มีข้อยกเว้นเท่านั้นว่า ไม่มีโปรแกรมแก้ไขด่วนสำหรับ SQL Server 7.0 ดังนั้น ขั้นตอนที่ 1 ไม่สามารถใช้

เกี่ยวข้องกับขั้นตอนที่ 2 การใช้การตั้งค่าสถานะการสืบค้นกลับ - T1118 สำหรับ Microsoft SQL Server 7.0 ก่อนที่จะใช้ค่าสถานะของการสืบค้นกลับ ดูบทความในฐานความรู้ของ Microsoft ต่อไปนี้:
813492การแก้ไข: สร้างดัชนีการล้มเหลวบน SQL Server 7.0 เมื่อมีการใช้ค่าสถานะการสืบค้นกลับ 1118

ข้อมูล Service Pack

เมื่อต้องการแก้ไขปัญหานี้ ขอรับ service pack ล่าสุดสำหรับ Microsoft SQL Server 2000 สำหรับข้อมูลเพิ่มเติม ให้คลิกหมายเลขบทความต่อไปนี้ เพื่อดูบทความในฐานความรู้ของ Microsoft::
290211วิธีการขอรับ service pack ล่าสุดของ SQL Server 2000

ข้อมูลโปรแกรมแก้ไขด่วน

โปรแกรมแก้ไขด่วน 8.00.0702

โปรแกรมแก้ไขด่วนรุ่นภาษาอังกฤษนี้มีแอตทริบิวต์แฟ้ม (หรือแอตทริบิวต์แฟ้มหลังจากนี้) ซึ่งแสดงในตารางต่อไปนี้ วันที่และเวลาของแฟ้มเหล่านี้จะปรากฏในรูปแบบเวลามาตรฐานสากล (UTC) เมื่อคุณดูข้อมูลแฟ้ม ข้อมูลจะถูกแปลงเป็นเวลาท้องถิ่น เมื่อต้องการค้นหาความแตกต่างระหว่างเวลา UTC กับเวลาท้องถิ่น ใช้โซนเวลาแท็บในนั้นวันที่และเวลารายการใน'แผงควบคุม'
   Date         Time   Version         Size       File name
   ----------------------------------------------------------------
   30-Aug-2002  21:08                    786,432  Distmdl.ldf
   30-Aug-2002  21:08                  2,359,296  Distmdl.mdf
   09-Oct-2002  00:54                        544  Drop_repl_hotfix.sql
   02-Jul-2002  15:35  2000.80.650.0     107,088  Impprov.dll      
   19-Jul-2002  16:56                    774,516  Instdist.sql
   08-Oct-2002  23:56                     12,615  Inst_repl_hotfix.sql
   20-Aug-2002  16:24  2000.80.679.0     111,172  Logread.exe      
   07-Apr-2002  02:08  2000.80.606.0      62,024  Odsole70.dll     
   03-Jan-2002  01:59                     18,185  Qfe356326.sql
   20-Aug-2002  16:47  2000.80.679.0     135,748  Qrdrsvc.exe      
   26-Aug-2002  22:49  2000.80.679.0     406,088  Rdistcom.dll     
   04-Oct-2001  01:36                    437,302  Replcom.sql
   20-Aug-2002  16:33  2000.80.679.0     152,136  Replmerg.exe     
   19-Nov-2001  20:36                    993,945  Replmerg.sql
   05-Nov-2002  23:48  2000.80.700.0     221,768  Replprov.dll     
   04-Oct-2001  01:36                    986,906  Replsys.sql
   04-Oct-2001  01:36                    881,228  Repltran.sql
   26-Aug-2002  22:49  2000.80.679.0     283,208  Rinitcom.dll     
   16-Sep-2002  22:31                    390,045  Securityhotfix.sql
   26-Aug-2002  22:49  2000.80.679.0      28,672  Sqlagent.dll     
   26-Aug-2002  18:39  2000.80.679.0     311,872  Sqlagent.exe     
   28-Aug-2002  16:32  2000.80.679.0      49,152  Sqlagent.rll
   26-Aug-2002  22:49  2000.80.679.0      53,824  Sqlcmdss.dll     
   28-Aug-2002  16:40  2000.80.679.0      12,288  Sqlcmdss.rll
   24-Oct-2002  17:37  2000.80.695.0     176,696  Sqlmap70.dll     
   11-Nov-2002  09:52  2000.80.702.0   7,471,185  Sqlservr.exe     
   11-Nov-2002  09:51                 12,633,088  Sqlservr.pdb
   01-Nov-2002  18:56  2000.80.698.0      45,644  Sqlvdi.dll       
   01-Nov-2002  18:00  2000.80.697.0      82,492  Ssnetlib.dll     
   07-Apr-2002  02:08  2000.80.606.0      70,208  Xplog70.dll      
   07-Apr-2002  02:08  2000.80.606.0      53,828  Xpqueue.dll      
   07-Apr-2002  02:08  2000.80.606.0     156,228  Xprepl.dll       
   12-Jul-2002  01:00  2000.80.658.0     279,104  Xpstar.dll       
   16-Sep-2002  23:12  2000.80.686.0      98,872  Xpweb70.dll   
				
หมายเหตุ
  • เนื่องจากการอ้างอิงแฟ้ม โปรแกรมแก้ไขด่วนหรือคุณลักษณะที่ประกอบด้วยแฟ้มล่าสุดอาจประกอบด้วยแฟ้มเพิ่มเติม
  • โปรแกรมแก้ไขด่วน 8.00.0702 เป็นสำหรับคอมพิวเตอร์ที่คุณได้ประยุกต์ใช้ SQL Server 2000 SP2 หากคุณติดตั้ง SQL Server 2000 SP3 ติดตั้ง SQL Server 2000 ที่ SP3 รุ่นยกเลิก 8.00.0765

สถานะ

Microsoft ยืนยันว่าปัญหานี้เป็นปัญหาที่เกิดขึ้นกับผลิตภัณฑ์ของ Microsoft ซึ่งมีการระบุไว้ในส่วน "การใช้งาน" ก่อนมีแก้ไขปัญหานี้ใน Microsoft SQL Server 2000 Service Pack 4

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

วิธีการที่โปรแกรมแก้ไขด่วน 8.00.0702 ลด contention

โปรแกรมแก้ไขด่วน 8.00.0702 แนะนำอัลกอริทึม robin ปัดสำหรับการปันส่วนของหน้าแบบผสม มีโปรแกรมแก้ไข แฟ้มเริ่มต้นในขณะนี้จะแตกต่างกันสำหรับการปันส่วนแต่ละหน้าผสมที่อยู่ติดกัน (ถ้ามีมากกว่าหนึ่งแฟ้ม) นี่ avoids ปัญหา contention โดยการแบ่งอัพรถไฟที่ปหรือผ่าน SGAMs ตามลำดับที่เหมือนกันทุกครั้งที่ มีจุดเริ่มต้นเดียวกัน อัลกอริทึมการปันส่วนใหม่สำหรับ SGAM robin ปัด pure และไม่ honor เติมที่สมส่วนการรักษาความเร็ว Microsoft แนะนำให้ คุณสร้างการtempdbแฟ้มข้อมูลที่ มีขนาดเท่ากัน

วิธีการใช้ติดตามค่าสถานะ - T1118 ลด contention

นี่คือรายการของวิธีใช้-t1118ลด contention:
  • -t1118การตั้งค่าทั้งเซิร์ฟเวอร์ได้
  • รวม-t1118trace flag in the Startup parameters for SQL Server so that the trace flag remains in effect even after SQL Server is recycled.
  • -T1118removes almost all single page allocations on the server.
  • By disabling most of the single page allocations, you reduce the contention on the SGAM page.
  • with:-T1118turned ON, almost all new allocations are performed from a GAM page (for example, 2:1:2) that allocates eight (8) pages (1 extent) at a time to a object as opposed to a single page from an extent for the first eight (8) pages of an object, without the trace flag.
  • The IAM pages still use the single page allocations from the SGAM page, even with-T1118turned ON. However, when combined with hotfix 8.00.0702 and increasedtempdbdata files, the net effect is a reduction in contention on the SGAM page. For space concerns, see the "Disadvantages" section of this article.
หมายเหตุ:When the trace flag 1118 is turned on for your instance of SQL Server 2000, you may not be able to successfully restore a SQL Server 7.0 database.สำหรับข้อมูลเพิ่มเติม ให้คลิกหมายเลขบทความต่อไปนี้ เพื่อดูบทความในฐานความรู้ของ Microsoft::
837938You may receive an error message when you try to restore a SQL Server 7.0 database backup on an instance of SQL Server 2000

Increase the number of tempdb data files with equal sizing

If the data file size oftempdbis 5 GB, and the Log file size is 5 GB, the recommendation is to increase the single datafile to 10 (each of 500 MB to maintain equal sizing), and leave the log file as is. Having the different data files on separate disks would be good. However, this is not required and they can co-exist on the same disk.

The optimal number oftempdbdata files depends on the degree of contention seen intempdb. As a starting point, you can configure thetempdbมีอย่างน้อยเท่ากับจำนวนของตัวประมวลผลที่กำหนดสำหรับ SQL Server สำหรับระบบท้ายสูงกว่า (ตัวอย่างเช่น 16 หรือ 32 proc), หมายเลขเริ่มต้นอาจเป็น 10 ถ้าไม่ได้ลดการ contention ที่ คุณอาจต้องเพิ่มจำนวนของแฟ้มข้อมูลเพิ่มเติม

หมายเหตุ:ตัวประมวลผลแบบ dual-core ถือเป็นตัวประมวลผลตัวที่สอง

sizing เท่าของแฟ้มข้อมูลที่ไม่สำคัญได้เนื่องจากมีอัลกอริทึมการเติมที่สมส่วนจะขึ้นอยู่กับขนาดของแฟ้ม ถ้ามีสร้างแฟ้มข้อมูล ด้วยขนาด unequal อัลกอริทึมการเติมที่สมส่วนพยายามใช้แฟ้มใหญ่ที่สุดเพิ่มเติมสำหรับการปันส่วน GAM แทนที่การปันส่วนระหว่างแฟ้มทั้งหมด งบ defeating วัตถุประสงค์ของการสร้างแฟ้มข้อมูลหลายการแพร่ยัง

auto-grow ของtempdbแฟ้มข้อมูลยังอาจรบกวนอัลกอริทึมการเติมที่สมส่วน ดังนั้น อาจควรปิดใช้งานคุณลักษณะ auto-grow สำหรับการtempdbแฟ้มข้อมูล ถ้าตัวเลือก auto-grow ถูกปิดใช้งาน คุณต้องมั่นใจในการสร้างแฟ้มข้อมูลเพื่อให้มีขนาดใหญ่พอที่จะป้องกันไม่ให้เซิร์ฟเวอร์ประสบไม่มีเนื้อที่ว่างบนดิสก์ด้วยtempdb.

วิธีการเพิ่มจำนวนข้อมูล tempdb แฟ้ม ด้วย sizing เท่าที่ลด contention

ที่นี่คือรายการของวิธีการเพิ่มจำนวนtempdbแฟ้มข้อมูลที่ มี sizing เท่าลด contention:
  • มีแฟ้มข้อมูลเดียวสำหรับการtempdbคุณเท่านั้นมีหน้า GAM หนึ่ง และหน้า SGAM หนึ่งสำหรับแต่ละ 4 กิกะไบต์พื้นที่
  • เพิ่มจำนวนของแฟ้มข้อมูลที่มีขนาดเดียวกันสำหรับtempdbสร้างอย่าง น้อยหนึ่ง GAM และ SGAM หน้าสำหรับแต่ละแฟ้มข้อมูลได้อย่างมีประสิทธิภาพ
  • อัลกอริทึมการปันส่วนสำหรับ GAM ให้ออกจากส่วนขยายหนึ่งในครั้งเดียว (แปดอยู่ติดกันหน้า) จากหมายเลขของไฟล์ในต้องปัด robin ขณะ honoring เติมที่สมส่วน ดังนั้น ถ้าคุณมีแฟ้ม sized เท่าที่ 10 การปันส่วนแรกคือจาก File1 ที่สองจาก File2 บุคคลที่สามจาก File3 และอื่น ๆ
  • contention ทรัพยากรของหน้า PFS จะลดลงเนื่องจากการทำเครื่องหมายหน้าแปดจะไว้เป็นเต็มครั้งเนื่องจาก GAM ถูกปันส่วนหน้ากระดาษ

ข้อเสีย

downside เดียวกับคำแนะนำที่กล่าวถึงก่อนหน้านี้ไม่ว่า คุณอาจเห็นขนาดของฐานข้อมูลเพิ่มเมื่อมีเงื่อนไขต่อไปนี้:
  • มีสร้างวัตถุใหม่ในฐานข้อมูลผู้ใช้
  • ออปเจ็กต์ใหม่แต่ละใช้น้อยกว่า 64 กิโลไบต์ของที่เก็บไว้
ถ้าเงื่อนไขเหล่านี้เป็นจริง คุณอาจจัดสรรกิโลไบต์ 64 (8 หน้า * 8 กิโลไบต์ = 64 KB) สำหรับวัตถุที่กิโลไบต์ที่ 8 ของเนื้อที่ที่จำเป็นต้องเท่านั้น ซึ่ง wasting กิโลไบต์ 56 ของที่เก็บได้ อย่างไรก็ตาม ถ้าวัตถุใหม่ใช้มากกว่า 64 กิโลไบต์ (8 หน้า) มีอายุการใช้งานใน downside ไม่ มีค่าสถานะการสืบค้นกลับไม่ ดังนั้น ในสถานการณ์การ case worst, SQL Server อาจจบอัพการปันส่วนเจ็ด (7) เพิ่มเติมหน้าในระหว่างการปันส่วนแรกเท่านั้นสำหรับวัตถุใหม่ที่ไม่ต้องขยายเกินหนึ่ง (1) หน้า

ข้อมูลอ้างอิง

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ GAM, SGAM, PFS และ IAM ดูหัวข้อ SQL Server 2000 หนังสือออนไลน์ต่อไปนี้:
  • "การจัดการเนื้อที่ที่ใช้ โดยวัตถุ"
  • "การจัดการขอบเขตการปันส่วนและเนื้อที่ว่างหรือไม่"
  • "ตารางและดัชนีสถาปัตยกรรม"
  • "โครงสร้างฮีป"

คุณสมบัติ

หมายเลขบทความ (Article ID): 328551 - รีวิวครั้งสุดท้าย: 13 มกราคม 2554 - Revision: 5.0
ใช้กับ
  • Microsoft SQL Server 2000 Developer Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 2000 Personal Edition
  • Microsoft SQL Server 2000 Workgroup Edition
Keywords: 
kbhotfixserver kbqfe kbsqlserv2000presp4fix kbfix kbbug kbmt KB328551 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:328551

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

 

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