Tôi nên thêm nén cấp độ trang trước khi thêm khóa chính hay sau?


14

Tình hình

  • Kho dữ liệu trên Sql Server 2008 Enterprise
  • Hơn 36 triệu hàng đống (không hỏi), với hơn 60 cột
  • Thêm 750k hàng tháng
  • Không có khóa chính được xác định (tôi đã xác định một khóa)
  • Không nén

Những gì tôi đang nghĩ làm (theo thứ tự này)

  • Thêm nén cấp độ trang
  • Thêm PK
  • Thêm một số chỉ mục không được nhóm
  • Làm điều này càng nhanh càng tốt

Câu hỏi


Hiện tại tôi đang nghiêng về phía nào

-- Add page level compression
alter table     dbo.TableName
rebuild with    (data_compression = page)
; 
go

-- Add primary key
alter table             dbo.TableName
add constraint          PK_TableName
primary key clustered   (<Columns>)
;
go

-- Add NC_IXs here
...
...

Ive đã xem xét ở đây (tài liệu tạo PK)ở đây (tài liệu ALTER TABLE) , nhưng không thể thấy bất cứ điều gì dứt khoát về việc có hay không bất kỳ chỉ mục nào kế thừa cài đặt nén bảng. Câu trả lời cho câu hỏi cụ thể này là "Không, nén không được kế thừa", được tìm thấy ở đây trên dba.stackexchange

Câu trả lời:


12

Các chỉ số cụm trong thực tế là bảng. Giả định rằng khóa chính của bạn được phân cụm thì tôi sẽ tạo một khóa chính được phân cụm với nén cấp độ trang thay vì cố gắng thực hiện theo hai bước.

-- Add primary key
ALTER TABLE             dbo.TableName
ADD CONSTRAINT          PK_TableName
PRIMARY KEY CLUSTERED   (<Columns>)
WITH (DATA_COMPRESSION = PAGE)
;

Tôi cũng sẽ sao chép khoảng 100 nghìn hàng vào bảng tạm thời (tạm thời không phải là #t tạm thời) và chạy một số thử nghiệm. Hãy thử chạy nén trước, cụm cụm trước, thử thực hiện chúng như một bước. Xem những gì chạy nhanh nhất. Tôi đoán nó sẽ là một bước cá nhân :).


2

Dù bằng cách nào, nén trang sẽ xáo trộn dữ liệu xung quanh RẤT NHIỀU. Tôi sẽ ước tính thực hiện nén trước sẽ dẫn đến I / O ít tổng thể hơn do hoạt động phân cụm sẽ đọc các trang nén.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.