Đây là một câu hỏi tiếp theo cho một câu hỏi mà tôi đã hỏi ngày hôm qua: Tôi có thể chèn số lượng lớn vào một bảng nén trang trống và có được nén hoàn toàn không? Câu trả lời cho câu hỏi đó (được diễn giải từ câu trả lời xuất sắc của Randi Vertongen) là có, nhưng nó yêu cầu bộ chèn số lượng lớn phải có khóa cấp độ bảng; mặt khác, chèn số lượng lớn sẽ khóa cấp hàng và chỉ thực hiện nén dữ liệu hàng. Điều này đặt ra câu hỏi: làm thế nào tôi có thể biết sau đó áp dụng nén nào?
Dưới đây là các bước để tạo dữ liệu nén hàng trong bảng nén theo lý thuyết:
1. Tạo bảng có DATA_COMPRESSION=PAGE
và không sử dụng sp_tableoption
để bật tùy chọn "khóa bảng khi tải hàng loạt" cho bảng này.
2. Sử dụng bcp để chèn số lượng lớn dữ liệu từ một tệp phẳng vào bảng mới, nhưng không chỉ định -h TABLOCK
tùy chọn khóa bảng.
Kết quả là một bảng trong đó dữ liệu được nén ở cấp hàng (nhỏ hơn bảng không nén nhưng lớn hơn bảng nén trang), nhưng kiểm tra sys.allocation_units
bảng danh mục cho thấy nén dữ liệu dưới dạng trang.
Câu hỏi
Khi phân bổ dữ liệu của bảng là để nén trang như trong kịch bản này, tôi có thể làm gì để tìm hiểu xem dữ liệu trong bảng đó có được nén trang không?