Giảm hiệu suất khi bạn chạy một lựa chọn. VÀO các truy vấn sau khi bạn nâng cấp lên SQL Server 2012 và mới hơn

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: 3144525
Triệu chứng
Sau khi bạn nâng cấp từ Microsoft SQL Server 2008 R2 hoặc phiên bản cũ lên SQL Server 2012 hoặc phiên bản mới hơn, bạn có thể thấy rằngchọn. VÀO truy vấn có chức năng xác định người dùng mất nhiều thời gian để hoàn thành hơn trong các phiên bản trước đó.
Nguyên nhân
Sự cố này xảy ra do đó chọn. VÀO báo cáo có chức năng xác định người dùng (UDFs) đang hoạt động kí nhập đầy đủ và có thêm thời gian để hoàn tất trong SQL Server 2012, phiên bản mới hơn.

Lưu ý: CHỌN bất kỳ ... VÀO báo cáo có chức năng xác định người dùng là kí nhập tối thiểu hoạt động trong các phiên bản (SQL Server 2008 R2 và trước đó). Thay đổi này được đưa ra để đảm bảo tính toàn vẹn dữ liệu, chức năng xác định người dùng có thể thực hiện thao tác đọc/ghi trên cùng một đối tượng và có thể làm hỏng dữ liệu nếu kí nhập tối thiểu được kích hoạt.
Cách giải quyết khác
Nếu người dùng xác định chức năng được sử dụng trong chọn. VÀO tuyên bố không thực hiện bất kỳ hoạt động truy cập dữ liệu, bạn có thể chỉ định khoản SCHEMABINDING cho người dùng xác định chức năng, sẽ thiết lập nhà UserDataAccess dịch cho những người dùng xác định các chức năng 0. Sau khi thay đổi này, chọn. VÀO báo cáo sẽ được ghi lại tối thiểu. Để biết thêm thông tin, hãy xem mẫu trong blog ví dụ về cách sử dụng SCHEMABINDING.

Lưu ý: Nếu lệnh vẫn tham khảo ít nhất một người dùng xác định chức năng có thuộc tính này được đặt thành 1, thao tác được ghi đầy đủ.
Thông tin thêm
Mã mẫu sau đây cho thấy sự khác biệt trong chế độ giữa SQL Server 2008 R2 và SQL Server 2012 2014:

create database DB1gouse DB1gocreate function dbo.MyTrim (@name as varchar(100))returns varchar (100)asbeginreturn (RTRIM(ltrim(@name)))endgocreate table dbo.tab_prod (c1 int, c2 varchar(10))godeclare @a int set @a = 1while @a <= 100000begin insert into tab_prodvalues (@a , '  test ')set @a = @a + 1endbegin transelect  *,  dbo.mytrim(c2) as trimc2 into tab_test from tab_prod

Bảng dưới đây so sánh thời gian CPU cho chọn vào thao tác trong SQL Server 2008 R2 với SQL Server 2014:

Phiên bảnThực hiện thời gian (thời gian CPU)
SQL Server 2008 R2719 ms
SQL Server 20141360 ms

Bảng dưới đây so sánh sử dụng Nhật ký giao dịch cho một chọn vào hoạt động trong SQL Server 2008 R2 với SQL Server 2014:

Phiên bảnTên bộ máy cơ sở dữ liệuKích thước Nhật ký (MB)kí nhập sử dụng dung lượng (%)trạm đậu
SQL Server 2008 R2DB10.742187551.578950
SQL Server 2014DB132.1796938.44380
Chú ý quan trọng Kết quả trong các bảng này chỉ là một ví dụ về thay đổi hành vi từ SQL Server 2008 R2 và SQL Server 2014 và cụ thể cho môi trường phòng thí nghiệm được sử dụng để kiểm tra này. Sự khác biệt hiệu suất thực tế trong môi trường của bạn sẽ phụ thuộc vào phiên bản SQL của bạn đang chạy trên phần cứng.
Chú ý Đây là một bài viết "XUẤT BẢN NHANH" được tạo trực tiếp từ trong trung tâm hỗ trợ của Microsoft. Thông tin có trong tài liệu này được cung cấp nhằm trả lời các vấn đề mới xuất hiện. Do việc cung cấp nhanh chóng, tài liệu có thể có lỗi in ấn và có thể được sửa đổi bất kỳ lúc nào mà không cần thông báo. Hãy xem Điều khoản Sử dụng để xem xét thêm.

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

Thuộc tính

ID Bài viết: 3144525 - Xem lại Lần cuối: 03/03/2016 22:32:00 - Bản sửa đổi: 1.0

Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Express Edition, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Workgroup Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2008 Developer, Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2008 Express, Microsoft SQL Server 2008 Standard, Microsoft SQL Server 2008 Web, Microsoft SQL Server 2008 Workgroup, Microsoft SQL Server 2008 R2 Datacenter, Microsoft SQL Server 2008 R2 Developer, Microsoft SQL Server 2008 R2 Enterprise, Microsoft SQL Server 2008 R2 Express, Microsoft SQL Server 2008 R2 Standard, Microsoft SQL Server 2008 R2 Web, Microsoft SQL Server 2008 R2 Workgroup

  • kbsurveynew kbtshoot kbexpertiseadvanced kbmt KB3144525 KbMtvi
Phản hồi