Khắc phục: Vấn đề hiệu suất xảy ra khi bộ máy cơ sở dữ liệu khóa hoạt động tăng trong SQL Server

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch thuật của Microsoft và có thể được Cộng đồng Microsoft chỉnh sửa lại thông qua công nghệ CTF thay vì một biên dịch viên chuyên nghiệp. Microsoft cung cấp các bài viết được cả biên dịch viên và phần mềm dịch thuật thực hiện và cộng đồng chỉnh sửa lại để bạn có thể truy cập vào tất cả các bài viết trong Cơ sở Kiến thức của chúng tôi bằng nhiều ngôn ngữ Tuy nhiên, bài viết do máy dịch hoặc thậm chí cộng đồng chỉnh sửa sau không phải lúc nào cũng hoàn hảo. Các bài viết này có thể chứa các sai sót về từ vựng, cú pháp hoặc ngữ pháp, Microsoft không chịu trách nhiệm về bất kỳ sự thiếu chính xác, sai sót hoặc thiệt hại nào do việc dịch sai nội dung hoặc do hoạt động sử dụng của khách hàng gây ra.

Nhấp chuột vào đây để xem bản tiếng Anh của bài viết này: 2926217
Chú ý
theo mặc định, bao gồm gói bản ghi dịch vụ 1 cho SQL Server 2014 khắc phục sự cố này và bạn không có thêm bất kỳ cờ theo dõi để kích hoạt bản vá. Để cho phép khắc phục sự cố sau khi bạn cài đặt chuyên biệt một bản Cập Nhật tích luỹ trong phần giải pháp, bạn phải khởi động Microsoft SQL Server bằng cách thêm cờ theo dõi 1236 tham số khởi động.
Triệu chứng
Giả sử rằng bạn chạy phiên bản của Microsoft SQL Server 2014, SQL Server 2012, SQL Server 2008 hay SQL Server 2008 R2 trên một máy tính có nhiều bộ xử lý. Khi số khóa (nguyên loại = cơ sở dữ liệu) cho bộ máy cơ sở dữ liệu cụ thể vượt quá ngưỡng nhất định, bạn gặp phải sự cố hoạt động sau:
  • Nâng cao giá trị xảy ra do LOCK_HASH spinlock số.

    Lưu ý: Hãy xem phần "Thông tin thêm" để biết thông tin về cách theo dõi spinlock này.
  • Truy vấn hoặc hoạt động yêu cầu bộ máy cơ sở dữ liệu khóa mất nhiều thời gian để hoàn tất. Ví dụ: bạn có thể thấy sự chậm trễ hoạt động sau:
    • Thông tin kí nhập máy chủ SQL
    • Truy vấn máy chủ được liên kết
    • sp_reset_connection
    • Giao dịch
Lưu ý Để xác định danh khóa (nguyên loại = cơ sở dữ liệu) trên bộ máy cơ sở dữ liệu nhất định, hãy xem phần "Thông tin". Giá trị ngưỡng khác nhau của môi trường.
Giải pháp

Thông tin Cập Nhật tích luỹ

Số lần đầu tiên được khắc phục trong bản Cập Nhật tích luỹ sau của SQL Server.

Cập Nhật tích luỹ 13 cho SQL Server 2008 R2 SP2

Cập Nhật tích luỹ 17 cho SQL Server 2008 SP3

Cập Nhật tích luỹ 1 dành cho SQL Server 2014

Cập Nhật tích luỹ 9 dành cho SQL Server 2012 SP1

Giới thiệu về Cập Nhật tích luỹ cho SQL Server

Mỗi bản Cập Nhật tích luỹ mới cho SQL Server có chứa tất cả các hotfix và tất cả các bản sửa lỗi bảo mật mà được đính kèm với bản Cập Nhật tích luỹ trước đó. Kiểm tra các bản Cập Nhật tích luỹ mới nhất cho SQL Server:

Thông tin về cập nhật nóng

Cập nhật nóng được hỗ trợ do Microsoft cung cấp. Tuy nhiên, cập nhật nóng này chỉ được dùng để khắc phục sự cố được mô tả trong bài viết này. Chỉ áp dụng cập nhật nóng này cho hệ thống đang gặp sự cố cụ thể này.

Nếu cập nhật nóng này sẵn có để tải xuống, có phần "Tải xuống Hotfix sẵn có" ở đầu bài viết Cơ sở Kiến thức này. Nếu phần này không xuất hiện, hãy gửi một yêu cầu tới bộ phận Hỗ trợ và bản ghi dịch vụ Khách hàng của Microsoft để nhận hotfix.

Lưu ý Nếu các sự cố xảy ra hoặc nếu bất cứ xử lý sự cố là cần thiết, bạn có thể phải tạo một yêu cầu bản ghi dịch vụ riêng. Chi phí hỗ trợ thông thường sẽ áp dụng cho các câu hỏi hỗ trợ bổ sung và các vấn đề không phù hợp với hotfix cụ thể này. Để có danh sách đầy đủ số điện thoại của Bộ phận Hỗ trợ và bản ghi dịch vụ Khách hàng của Microsoft hoặc để tạo yêu cầu bản ghi dịch vụ riêng, hãy truy cập website sau của Microsoft: Lưu ý "Tải xuống Hotfix sẵn có" Hiển thị các ngôn ngữ mà hotfix này sẵn có. Nếu bạn không thấy ngôn ngữ của mình thì đó là do cập nhật nóng này hiện không có ngôn ngữ đó.

Tình trạng
Microsoft đã xác nhận rằng đây là sự cố trong sản phẩm của Microsoft được liệt kê trong phần "Áp dụng cho".
Thông tin thêm
Khi một ứng dụng kết nối với SQL Server, nó lần đầu tiên cung cấp một bối cảnh bộ máy cơ sở dữ liệu. theo mặc định, kết nối sẽ cố gắng lấy một khóa bộ máy cơ sở dữ liệu ở chế độ SH. Khóa SH bộ máy cơ sở dữ liệu sẽ được phát hành khi kết nối bị dừng hoặc bối cảnh bộ máy cơ sở dữ liệu được thay đổi trong vòng đời của kết nối. Nếu bạn có nhiều kết nối hoạt động sử dụng cùng một bối cảnh bộ máy cơ sở dữ liệu, bạn có thể khóa nhiều loại bộ máy cơ sở dữ liệu nguồn bộ máy cơ sở dữ liệu cụ thể đó.

Trên máy tính có 16 hoặc nhiều CPU, mục chỉ dẫn các đối tượng sử dụng chương trình phân hoạch khoá. Tuy nhiên, khóa bộ máy cơ sở dữ liệu không phân vùng. Do đó, khóa số bộ máy cơ sở dữ liệu lớn hơn, còn có cho SQL Server để nhận một khóa bộ máy cơ sở dữ liệu. Hầu hết các ứng dụng không gặp bất kỳ vấn đề do thiết kế. Tuy nhiên, khi số vượt quá ngưỡng nhất định, các công việc và thời gian phải được khóa. Mặc dù chi phí chỉ vi giây cho mỗi khóa bổ sung, tổng thời gian có thể nhanh chóng tăng do khoá băm nhóm được bảo vệ bằng cách sử dụng một spinlock. Này gây ra các CPU chu kỳ và chờ đợi cho các chương trình bổ sung để có được khóa.

Hotfix này giới thiệu bộ máy cơ sở dữ liệu khóa phân vùng khi cờ theo dõi T1236 được kích hoạt khi khởi động. Phân vùng khóa bộ máy cơ sở dữ liệu của danh khóa giúp quản lý trong mỗi phân vùng địa phương. Điều này đáng kể tối ưu hóa đường truy cập được sử dụng để lấy khóa bộ máy cơ sở dữ liệu .

Theo dõi LOCK_HASH spinlock, bạn có thể sử dụng truy vấn sau đây.
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
Để biết thêm thông tin về chẩn đoán và giải quyết spinlock tranh trên SQL Server, hãy truy cập tài liệu sau:

Lưu ý Mặc dù tài liệu này được viết cho SQL Server 2008 R2, thông tin sẽ vẫn áp dụng cho SQL Server 2012.
Tham khảo
Để biết thêm thông tin về cờ theo dõi SQL Server 2012, hãy truy cập vào web site TechNet sau đây:


Để biết thêm thông tin về cách tìm số khóa bộ máy cơ sở dữ liệu người sử dụng một bộ máy cơ sở dữ liệu, sử dụng truy vấn sau đây để giá trị được tính này:
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


Cảnh báo: Bài viết này được dịch tự động

属性

文章 ID:2926217 - 上次审阅时间:07/29/2015 18:37: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 KbMtvi
反馈