Tôi có một bảng ba cột chỉ với hơn 6 Tỷ hàng trong SQL Server 2008 R2.
Chúng tôi truy vấn nó mỗi ngày để tạo biểu đồ phân tích hệ thống từng phút cho khách hàng của chúng tôi. Tôi đã không nhận thấy bất kỳ lần truy cập hiệu suất cơ sở dữ liệu nào (mặc dù thực tế là nó tăng ~ 1 GB mỗi ngày khiến việc quản lý các bản sao lưu liên quan nhiều hơn tôi muốn).
Cập nhật tháng 7 năm 2016
Chúng tôi đã thực hiện đến ~ 24,5 tỷ hàng trước khi các bản sao lưu trở nên đủ lớn để chúng tôi quyết định cắt bớt các bản ghi cũ hơn hai năm (~ 700 GB được lưu trữ trong nhiều bản sao lưu, kể cả trên các băng đắt tiền). Cần lưu ý rằng hiệu suất không phải là động lực đáng kể trong quyết định này (tức là nó vẫn hoạt động tốt).
Đối với bất kỳ ai nhận thấy mình đang cố gắng xóa 20 tỷ hàng khỏi SQL Server, tôi thực sự khuyên bạn nên sử dụng bài viết này . Mã liên quan trong trường hợp liên kết chết (đọc bài viết để được giải thích đầy đủ):
ALTER DATABASE DeleteRecord SET RECOVERY SIMPLE;
GO
BEGIN TRY
BEGIN TRANSACTION
SELECT *
INTO dbo.bigtable_intermediate
FROM dbo.bigtable
WHERE Id % 2 = 0;
TRUNCATE TABLE dbo.bigtable;
SET IDENTITY_INSERT dbo.bigTable ON;
INSERT INTO dbo.bigtable WITH (TABLOCK) (Id, c1, c2, c3)
SELECT Id, c1, c2, c3 FROM dbo.bigtable_intermediate ORDER BY Id;
SET IDENTITY_INSERT dbo.bigtable OFF;
COMMIT
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK
END CATCH
ALTER DATABASE DeleteRecord SET RECOVERY FULL;
GO
Cập nhật tháng 11 năm 2016
Nếu bạn dự định lưu trữ nhiều dữ liệu này trong một bảng: đừng. Tôi thực sự khuyên bạn nên xem xét phân vùng bảng (theo cách thủ công hoặc với các tính năng tích hợp nếu bạn đang chạy phiên bản Enterprise). Điều này làm cho việc loại bỏ dữ liệu cũ dễ dàng như cắt bớt một bảng mỗi lần một lần (tuần / tháng / v.v.). Nếu bạn không có Enterprise (chúng tôi không có), bạn có thể chỉ cần viết một tập lệnh chạy mỗi tháng một lần, loại bỏ các bảng cũ hơn 2 năm, tạo bảng của tháng tiếp theo và tạo lại một chế độ xem động tham gia tất cả các phân vùng các bảng với nhau để dễ dàng truy vấn. Rõ ràng "mỗi tháng một lần" và "cũ hơn 2 năm" nên được bạn xác định dựa trên những gì phù hợp với trường hợp sử dụng của bạn.