sách gpt4 ăn đã đi

Một trong những điều cần chú ý khi nâng cấp SQLServer 2000 lên SQLServer 2008 là hiệu năng.

In lại Tác giả: qq735679552 Thời gian cập nhật: 29-09-2022 22:32:09 27 4
mua khóa gpt4 giày nike

CFSDN nhấn mạnh vào giá trị tạo ra nguồn mở và chúng tôi cam kết xây dựng nền tảng chia sẻ tài nguyên để mọi nhân viên CNTT có thể tìm thấy thế giới tuyệt vời của bạn tại đây.

Bài viết blog CFSDN về nâng cấp SQLServer 2000 lên SQLServer 2008 này là một trong những điểm hiệu năng cần được quan tâm. Nó được tác giả sưu tầm và biên soạn. Nếu bạn quan tâm đến bài viết này, hãy nhớ thích nó.

Kiểm tra sql: .

Sao chép mã mã như sau

ĐẶT THỐNG KÊ IO TRÊN ĐẶT THỐNG KÊ THỜI GIAN TRÊN CHỌN ĐẾM(1) TỪ dbo.tbtext a VÒNG LẶP BÊN TRONG JOIN dbo.tbtext b TRÊN a.id = b.id tùy chọn (maxdop 1) ĐẶT THỐNG KÊ IO Tắt ĐẶT THỐNG KÊ THỜI GIAN Tắt 。

Cấu trúc bảng: .

Sao chép mã mã như sau

TẠO BẢNG [dbo].[tbtext]( [id] [int] IDENTITY(1,1) KHÔNG NULL, [GIÁ TRỊ] [int] NULL ) TRÊN [CHÍNH] 。

Chỉ dựa trên thử nghiệm này, không có sự khác biệt nào cả khi nhìn vào kế hoạch thực hiện. |--Tính toán vô hướng(DEFINE:([Expr1006]=CONVERT_IMPLICIT(int,[Expr1009],0))) |--Stream Aggregate(DEFINE:([Expr1009]=Count(*))) |--Vòng lặp lồng nhau( Tham gia bên trong, WHERE:([northwind].[dbo].[tbtext].[id] as [b].[id]=[northwind].[dbo].[tbtext].[id] as [a].[id])) |--Quét bảng(ĐỐI TƯỢNG:([northwind].[dbo]. [tbtext] AS [a])) |--Bộ đệm bảng |--Quét bảng(ĐỐI TƯỢNG:([northwind].[dbo].[tbtext] AS [b])) 2008r2: .

Sao chép mã mã như sau

/* Cảnh báo: Do ​​sử dụng gợi ý nối cục bộ, thứ tự nối được thực thi. Bảng 'tbtext'. Quét số 1, đọc logic 46 (1 hàng bị ảnh hưởng) bảng 'Bàn làm việc'. Số lần quét 1, đọc logic 290098 lần, đọc vật lý 0 lần, đọc tiếp 0 lần, đọc logic lob 0 lần, đọc logic lob 0 lần, đọc lob đọc trước 0 lần. Bảng 'tbtext'. Số lần quét 2, 262 lần đọc logic, 0 lần đọc vật lý, 0 lần đọc trước, 0 lần đọc logic cho lob, 0 lần đọc vật lý cho lob, 0 đọc trước lob. (1 hàng bị ảnh hưởng) Thời gian thực thi SQL Server: Thời gian CPU = 32828 ms, thời gian chiếm dụng = 32846 ms. Thời gian thực thi SQL Server: Thời gian CPU = 0 ms, thời gian sử dụng = 0 ms. */ .

2000sp4: 。

Sao chép mã mã như sau

/* Cảnh báo: Do ​​sử dụng gợi ý nối một phần nên thứ tự nối được thực thi. Bảng 'tbtext'. Số lần quét 1, đọc logic 131 lần, đọc vật lý 0 lần, đọc trước 0 lần. Thời gian thực thi SQL Server: Thời gian CPU = 0 ms, thời gian đã trôi qua = 0 ms. Bảng 'Bàn làm việc'. Số lần quét là 9999, với 180001 lần đọc logic, 0 lần đọc vật lý và 0 lần đọc trước. Bảng 'tbtext'. Số lần quét 2, đọc logic 262 lần, đọc vật lý 0 lần, đọc trước 138 lần. Thời gian thực thi SQL Server: Thời gian CPU = 17188 mili giây, thời gian đã trôi qua = 17261 mili giây. (1 hàng bị ảnh hưởng) Thời gian thực thi SQL Server: Thời gian CPU = 0 ms, thời gian đã trôi qua = 0 ms. */ .

So sánh việc thực hiện năm 2000 và 2008, bạn có thể thấy rằng thời gian CPU của năm 2008 cao hơn đáng kể so với năm 2000. Khối lượng đọc logic của bàn làm việc năm 2008 cao hơn năm 2000. Đây là công nghệ quét bàn làm việc. 9999 và 2008 là 1. Điều này không thể tránh khỏi khiến mọi người thắc mắc tình huống này là gì. Tất cả đều là vòng lặp lồng nhau và quá trình quét bàn làm việc không nên là 1. Bàn làm việc có thể gây ra hiệu suất kém như thế nào? Sau đó bắt đầu điều chỉnh và lọc ID Bạn sẽ tìm thấy gì? .

Sao chép mã mã như sau

ĐẶT THỐNG KÊ IO TRÊN ĐẶT THỐNG KÊ THỜI GIAN TRÊN CHỌN ĐẾM(1) TỪ dbo.tbtext a VÒNG LẶP BÊN TRONG JOIN dbo.tbtext b TRÊN a.id = b.id NƠI a.id <= 1000 tùy chọn (maxdop 1) CHỌN ĐẾM(1) TỪ dbo.tbtext a ĐẶT THỐNG KÊ IO Tắt ĐẶT THỐNG KÊ THỜI GIAN Tắt 。

2008r2: SELECT COUNT(1) FROM dbo.tbtext a INNER LOOP JOIN dbo.tbtext b ON a.id = b.id WHERE a.id <= 1000 tùy chọn (maxdop 1) |--Compute Scalar(DEFINE:([Expr1006]=CONVERT_IMPLICIT(int,[Expr1009],0))) |--Stream Aggregate(DEFINE:([Expr1009]=Count(*))) |--Nested Loops(Inner Join, WHERE:([northwind].[dbo].[tbtext].[id] là [b].[id]=[northwind].[dbo].[tbtext].[id] là [a].[id])) |--Table Scan(OBJECT:([northwind].[dbo].[tbtext] AS [a]), NƠI:([northwind].[dbo].[tbtext].[id] là [a].[id]<=(1000))) |--Table Spool |--Table Scan(ĐỐI TƯỢNG:([northwind].[dbo].[tbtext] NHƯ [b]), NƠI:([northwind].[dbo].[tbtext].[id] là [b].[id]<=(1000))) 。

Sao chép mã mã như sau

Bảng 'Bàn làm việc'. Số lần quét 1, đọc logic 6006 lần, đọc vật lý 0 lần, đọc tiếp 0 lần, đọc logic lob 0 lần, đọc lob vật lý 0 lần, đọc lob 0 lần. Bảng 'tbtext'. Số lần quét 2, 262 lần đọc logic, 0 lần đọc vật lý, 0 lần đọc trước, 0 lần đọc logic cho lob, 0 lần đọc vật lý cho lob, 0 đọc trước lob. .

2000sp4: |--Tính toán số vô hướng(ĐỊNH NGHĨA:([Expr1002]=Chuyển đổi([Expr1006]))) |--Tổng hợp luồng(ĐỊNH NGHĨA:([Expr1006]=Đếm(*))) |--Vòng lặp lồng nhau(Liên kết bên trong, WHERE:([b].[id]=[a].[id])) |--Quét bảng(ĐỐI TƯỢNG:([Northwind].[dbo].[tbtext] NHƯ [a]), WHERE:([a].[id]<=1000)) |--Cuộn bảng |--Quét bảng(ĐỐI TƯỢNG:([Northwind].[dbo].[tbtext] NHƯ [b])) 。

Sao chép mã mã như sau

Bảng 'Bàn làm việc'. Số lần quét là 999, số lần đọc logic là 27001 lần, số lần đọc vật lý là 0 lần và số lần đọc trước là 0 lần. Bảng 'tbtext'. Số lần quét 2, đọc logic 262 lần, đọc vật lý 0 lần, đọc trước 0 lần. .

Dữ liệu vào spool lười biếng hoàn toàn khác. Năm 2008 chỉ nhập 1.000 mẩu dữ liệu nhưng năm 2008 đã nhập cả 2.000 mẩu dữ liệu. Trong cách đọc logic, 2008 thấp hơn đáng kể so với 2000. Thời gian CPU cũng nhỏ hơn đáng kể so với 2000. Bằng cách điều chỉnh giá trị id, năm 2000 tôi đã đưa ra công thức đọc logic = 10001+ (17*n), nhưng thuật toán của năm 2008 rất lạ khi n < 386 thì giá trị logic = 3 + 4 (n-1) khi 386 <= n<=770 số đọc logic = 1932+5(n-386) Số đọc logic của năm 2000 là tăng trưởng tuyến tính, 2008 Đó là sự tăng trưởng tuyến tính của các phân đoạn và mỗi phân đoạn f '(x) là khác nhau. Bộ đệm lười 2008 phù hợp với những người có độ chọn lọc cao, nhưng hoàn toàn không phù hợp khi độ chọn lọc thấp. Từ năm 2000 đến năm 2008, không chỉ sqlos và một số hàm hời hợt được thêm vào, nhiều toán tử kế hoạch thực thi cũng được viết lại, chẳng hạn như lười biếng spool. Vậy trước khi nâng cấp lên 2008 các bạn có nên viết lại sql không? Chỉ tối ưu hóa chỉ số không còn có thể giải quyết được vấn đề cơ bản.

Cuối cùng, bài viết này về một trong những vấn đề hiệu suất cần được chú ý khi nâng cấp SQLServer 2000 lên SQLServer 2008 ở đây nếu bạn muốn biết thêm về một trong những vấn đề hiệu suất cần được chú ý khi nâng cấp từ SQLServer. 2000 đến SQLServer 2008, vui lòng Tìm kiếm các bài viết về CFSDN hoặc tiếp tục duyệt các bài viết liên quan. Tôi hy vọng bạn sẽ ủng hộ blog của tôi trong tương lai! .

27 4 0
qq735679552
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress