การแก้ไข: ประสิทธิภาพปัญหาเกิดขึ้นเมื่อเพิ่มกิจกรรมล็อกฐานข้อมูลใน SQL Server

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

ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:2926217
หมายเหตุ
โดยค่าเริ่มต้น 1 Service Pack สำหรับ 2014 เซิร์ฟเวอร์ SQL ประกอบด้วยโปรแกรมแก้ไขนี้ และคุณไม่จำเป็นต้องเพิ่มค่าสถานะการสืบค้นกลับใด ๆ เพื่อเปิดใช้งานการแก้ไข เมื่อต้องการเปิดใช้งานการแก้ไขหลังจากที่คุณติดตั้งโปรแกรมปรับปรุงสะสมในส่วนความละเอียด คุณจำเป็นต้องเริ่มการทำงานของ Microsoft SQL Server โดยการเพิ่มค่าสถานะการติดตาม 1236 พารามิเตอร์เริ่มต้น
อาการ
สมมติว่า คุณเรียกใช้อินสแตนซ์ ของ 2014 เซิร์ฟเวอร์ SQL ของ Microsoft, SQL Server 2012, SQL Server 2008, SQL Server 2008 R2 บนคอมพิวเตอร์ที่ประกอบด้วยตัวประมวลผลมาก เมื่อจำนวนล็อก (ชนิดทรัพยากร =ฐานข้อมูล) สำหรับฐานข้อมูลระบุเกินกว่าขีดจำกัดบางอย่าง คุณพบปัญหาประสิทธิภาพการทำงานดังต่อไปนี้:
  • ค่าที่ผ่านการตรวจสอบเกิดขึ้นสำหรับการตรวจนับ spinlock LOCK_HASH

    หมายเหตุ ดูส่วน "ข้อมูลเพิ่มเติม" สำหรับข้อมูลเกี่ยวกับวิธีการตรวจสอบ spinlock นี้
  • แบบสอบถามหรือการดำเนินการที่จำเป็นต้องล็อกฐานข้อมูลใช้เวลานานจะเสร็จสมบูรณ์ ตัวอย่างเช่น คุณอาจพบความล่าช้าของประสิทธิภาพการทำงานต่อไปนี้:
    • ล็อกอินของ SQL Server
    • แบบสอบถามเซิร์ฟเวอร์ที่ถูกเชื่อมโยง
    • sp_reset_connection
    • ธุรกรรม
หมายเหตุ เมื่อต้องการค้นหารายการของล็อค (ชนิดทรัพยากร =ฐานข้อมูล) บนฐานข้อมูลที่กำหนดให้ ให้ดูส่วน "ข้อมูลเพิ่มเติม" ค่าขีดจำกัดแตกต่างกันไปตามสภาพแวดล้อม
การแก้ไข

ข้อมูลการปรับปรุงสะสม

ปัญหาถูกก่อนมีแก้ไขในการปรับปรุงสะสมต่อไปนี้ของ SQL Server

ปรับปรุงสะสม 13 สำหรับ SQL Server 2008 R2 SP2

17 โปรแกรมปรับปรุงสะสมสำหรับ SQL Server 2008 SP3

ปรับปรุงสะสม 1 สำหรับ SQL Server 2014

ปรับปรุงสะสม 9 สำหรับ SQL Server 2012 SP1

เกี่ยวกับการปรับปรุงสะสมสำหรับ SQL Server

แต่ละโปรแกรมปรับปรุงสะสมใหม่สำหรับ SQL Server ประกอบด้วยโปรแกรมแก้ไขด่วนทั้งหมด และทั้งหมดที่แก้ไขความปลอดภัยที่ถูกรวมอยู่ในการปรับปรุงที่สะสมก่อนหน้านี้ ตรวจหาการปรับปรุงสะสมล่าสุดสำหรับ SQL Server:

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

โปรแกรมแก้ไขด่วนที่สนับสนุนได้จาก Microsoft อย่างไรก็ตาม โปรแกรมแก้ไขด่วนนี้มุ่งหวังเพื่อการแก้ไขเฉพาะปัญหาที่อธิบายไว้ในบทความนี้ ใช้ hotfix นี้เฉพาะกับระบบต่าง ๆ ที่พบปัญหานี้

หากโปรแกรมแก้ไขด่วนพร้อมสำหรับการดาวน์โหลด คุณจะเห็นส่วน "มีการดาวน์โหลดโปรแกรมแก้ไขด่วน" ที่ด้านบนของบทความฐานข้อมูลองค์ความรู้นี้ หากส่วนนี้ไม่ปรากฏขึ้น ส่งคำขอถึงฝ่ายบริการและการสนับสนุนลูกค้าของ Microsoft และวิธีการขอรับโปรแกรมแก้ไขด่วน

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

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

บนคอมพิวเตอร์ที่มี Cpu อย่าง น้อย 16 ตารางวัตถุใช้โครงร่างล็อกพาร์ติชัน อย่างไรก็ตาม การล็อกฐานข้อมูลจะไม่แบ่งพาร์ติชัน ดังนั้น จำนวนฐานข้อมูลล็อกที่มีขนาดใหญ่กว่า ยาวใช้สำหรับ SQL Server เพื่อขอรับการล็อกบนฐานข้อมูล โปรแกรมประยุกต์ส่วนใหญ่ไม่พบปัญหาใด ๆ ที่เกิดจากการออกแบบนี้ แต่เป็นจำนวนเกินกว่าขีดจำกัดบางอย่าง การทำงานเพิ่มเติมและเวลาที่จำเป็นเพื่อขอรับการล็อก ถึงแม้ว่าต้นทุนเป็น micro วินาทีเท่านั้นสำหรับแต่ละล็อกเพิ่มเติม เวลาทั้งหมดสามารถได้อย่างรวดเร็วเพิ่มขึ้นเนื่องจากกลุ่มแฮล็อกมีป้องกัน โดยใช้ spinlock ซึ่งทำให้วงจร CPU เพิ่มเติม และรอสำหรับผู้ปฏิบัติงานเพิ่มเติมเพื่อขอรับการล็อก

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

การตรวจสอบ spinlock LOCK_HASHคุณสามารถใช้แบบสอบถามต่อไปนี้
SET NOCOUNT ONCREATE TABLE #spinlock_stats([CaptureTime] datetime,[name] nvarchar(512),[collisions] bigint,[spins] bigint,[spins_per_collision] real,[sleep_time] bigint,[backoffs] int)DECLARE @counter int = 1WHILE @counter < 100      BEGIN            INSERT INTO #spinlock_stats SELECT GETDATE() as "CaptureTime" , * FROM sys.dm_os_spinlock_stats WHERE [name] = 'LOCK_HASH'            WAITFOR DELAY '00:00:05'            SET @counter +=1      ENDSELECT * FROM #spinlock_stats ORDER BY [CaptureTime]DROP TABLE #spinlock_stats
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการวิเคราะห์ และแก้ไขข้อขัดแย้งใน spinlock บน SQL Server ไปที่เอกสารต่อไปนี้:

หมายเหตุ ถึงแม้ว่าเอกสารนี้ถูกเขียนขึ้นสำหรับ SQL Server 2008 R2 ข้อมูลจะยังคงสามารถใช้ได้กับ SQL Server 2012
ข้อมูลอ้างอิง
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับค่าสถานะการสืบค้นกลับใน SQL Server 2012 ไปที่เว็บไซต์ TechNet ดังต่อไปนี้:


สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการค้นหาหมายเลขของล็อกฐานข้อมูลผู้ใช้สำหรับแต่ละฐานข้อมูล ใช้แบบสอบถามต่อไปนี้ในการคำนวณค่านี้:
select  Resource_database_id, resource_type, request_mode, request_status,  count (*) 'LockCount' from sys.dm_tran_locks group by  Resource_database_id, resource_type, request_mode, request_status


คำเตือน: บทความนี้ได้รับการแปลโดยอัตโนมัติ

คุณสมบัติ

รหัสบทความ: 2926217 - การตรวจสอบครั้งสุดท้าย: 07/29/2015 14:21:00 - ฉบับแก้ไข: 6.0

Microsoft SQL Server 2012 Enterprise, Microsoft SQL Server 2012 Developer, Microsoft SQL Server 2012 Standard, Microsoft SQL Server 2012 Express, Microsoft SQL Server 2012 Web, Microsoft SQL Server 2012 Service Pack 1, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2008 Service Pack 3, Microsoft SQL Server 2008 R2 Service Pack 2

  • kbqfe kbfix kbsurveynew kbexpertiseadvanced kbautohotfix kbhotfixserver kbmt KB2926217 KbMtth
คำติชม