SQL Server: Phải biết - Bản ghi được chuyển tiếp trong Bảng HEAP

2022-03-20 16:05:02

Trong bài đăng này, tôi đang chia sẻ một lưu ý quan trọng về Bản ghi được chuyển tiếp trong bảng Heap của SQL Server. Bất cứ khi nào DBA hoặc Nhà phát triển gặp vấn đề về hiệu suất, họ luôn nói về bảng hoặc phân mảnh chỉ mục, nhưng không ai thảo luận về Bản ghi được chuyển tiếp.

Bảng đống là gì

Ví dụ đơn giản để hiểu Bản ghi chuyển tiếp:

Bạn tạo một bảng heap và một trong các loại cột là VARCHAR (200).
Bạn đã chèn 100000 bản ghi và thêm một kích thước nhỏ của chuỗi trong VARCHAR (200) như giá trị “dbrnd” chỉ là VARCHAR (5).

Bây giờ, tiếp theo, bạn yêu cầu cập nhật giá trị từ “dbrnd” thành “Nghiên cứu & Phát triển Cơ sở dữ liệu” hiện là VARCHAR (31).
Trước đây, chúng tôi đã lưu trữ dữ liệu của mình dựa trên VARCHAR (5), nhưng trong khi cập nhật, chúng tôi cần VARCHAR (31).

Trước khi cập nhật, tất cả dữ liệu được lưu chính xác vào trang dữ liệu và đối với bản cập nhật mới không còn dung lượng trống trên trang dữ liệu. Vì vậy, SQL Server di chuyển nội bộ dữ liệu mới sang trang mới và gán một Mã định danh tương đối (RID) mới.

Bây giờ trang cũ chứa con trỏ chuyển tiếp đến RID mới và các bản ghi mới cũng quay lại con trỏ đến các bản ghi cũ.

- Được gọi là Bản ghi chuyển tiếp và cũng là một loại phân mảnh nội bộ.

Hạn chế lớn nhất của Forwarded Record là nó yêu cầu I / O cao vì SQL Server phải chuyển giữa trang dữ liệu cũ và trang dữ liệu mới để lấy dữ liệu.

Thêm vài chủ đề sau nữa, tôi sẽ xuất bản từ ngày mai:
Làm thế nào để tìm Bản ghi đã chuyển tiếp?
Làm cách nào để loại bỏ Bản ghi đã chuyển tiếp?

Xem thêm:


Chia sẻ: