Tôi sau một số xác nhận về ý tưởng này để sửa chữa một cơ sở dữ liệu hoạt động kém hoặc một đề xuất tốt hơn nếu bất kỳ ai có một. Luôn luôn mở để đề xuất tốt hơn.
Tôi có một cơ sở dữ liệu rất lớn (hơn 20 triệu bản ghi tăng khoảng 1/2 triệu mỗi ngày) đang sử dụng GUID làm PK.
Một phần giám sát của tôi nhưng PK được nhóm trên máy chủ SQL và gây ra các vấn đề về hiệu suất.
Lý do cho một hướng dẫn - cơ sở dữ liệu này được đồng bộ hóa một phần với 150 cơ sở dữ liệu khác vì vậy PK cần phải là duy nhất. Đồng bộ hóa không được quản lý bởi SQL Server, thay vào đó có một quy trình tùy chỉnh được xây dựng để giữ dữ liệu đồng bộ hóa cho các yêu cầu của hệ thống - tất cả dựa trên GUID đó.
Mỗi trong số 150 cơ sở dữ liệu từ xa không lưu trữ toàn bộ dữ liệu như được lưu trữ trong Cơ sở dữ liệu SQL trung tâm. họ chỉ lưu trữ một tập hợp con dữ liệu họ thực sự yêu cầu và dữ liệu yêu cầu không phải là duy nhất đối với họ (10 trong số 150 cơ sở dữ liệu có thể có một số bản ghi giống nhau từ cơ sở dữ liệu trang web khác - ví dụ họ chia sẻ). Ngoài ra - dữ liệu thực sự được tạo ra tại các trang web từ xa - không phải ở điểm trung tâm - do đó cần có GUID.
Cơ sở dữ liệu trung tâm được sử dụng không chỉ để giữ mọi thứ đồng bộ, mà các truy vấn từ hơn 3000 người dùng sẽ được thực hiện đối với cơ sở dữ liệu phân mảnh rất lớn đó. Đây là một vấn đề lớn trong thử nghiệm ban đầu.
May mắn thay, chúng tôi chưa sống - vì vậy tôi có thể thay đổi và đưa mọi thứ ngoại tuyến nếu được yêu cầu ít nhất là một cái gì đó.
Hiệu năng của các cơ sở dữ liệu từ xa không phải là vấn đề - các tập hợp dữ liệu khá nhỏ và cơ sở dữ liệu thường không bao giờ có kích thước trên 1GB trong tổng số. Các hồ sơ được đưa trở lại hệ thống chính khá thường xuyên và được xóa khỏi các BD nhỏ hơn khi không còn cần thiết.
Hiệu suất của DB trung tâm là người lưu giữ tất cả các bản ghi là không tốt - do GUID được nhóm làm khóa chính cho nhiều bản ghi đó. Sự phân mảnh chỉ số là ra khỏi bảng xếp hạng.
Vì vậy - suy nghĩ của tôi để khắc phục vấn đề về hiệu suất là Tạo một cột mới - BIGENT IDENTITY (1,1) và sau đó thay đổi PK Clustered của cột BIGINT của bảng.
Tôi sẽ tạo một chỉ mục Non Clustered duy nhất trên trường GUID là khóa chính.
150 cơ sở dữ liệu từ xa nhỏ hơn không cần biết về PK mới trên cơ sở dữ liệu Máy chủ SQL trung tâm - nó hoàn toàn sẽ được sử dụng để tổ chức dữ liệu trong cơ sở dữ liệu và ngăn chặn hiệu suất và phân mảnh xấu.
Điều này có hoạt động và cải thiện hiệu suất của cơ sở dữ liệu SQL trung tâm và ngăn chặn địa ngục phân mảnh chỉ mục trong tương lai (ở một mức độ nào đó) không? hoặc tôi đã bỏ lỡ điều gì đó rất quan trọng ở đây sẽ nhảy lên và cắn tôi và gây ra nhiều đau buồn hơn?
int
4255 ngày (11,5 năm). Nếu anh ta làm điều đó, anh ta sẽ chỉ đổ lỗi cho bạn trong 11,5 năm;)