Các truy vấn cơ sở dữ liệu chéo có đắt trong SQL Server không?


15

Các truy vấn cơ sở dữ liệu chéo có đắt trong SQL Server không? Tất cả các cơ sở dữ liệu là trong cùng một ví dụ.


3
Tôi chưa bao giờ tìm thấy bất kỳ bằng chứng nào cho thấy chúng là không. Các ngoại lệ duy nhất tôi thậm chí có thể nghĩ đến (nhưng chưa được thử nghiệm) là (a) rằng trình tối ưu hóa không thể hưởng lợi từ các mối quan hệ không thể rõ ràng (ví dụ: nó có thể có lợi từ các định nghĩa khóa ngoài, không tồn tại chéo -database) hoặc (b) có vấn đề với số liệu thống kê là sự cố trên các máy chủ được liên kết, nhưng tôi tưởng tượng có thể có trường hợp ngay cả trên cơ sở dữ liệu người dùng đang chạy truy vấn không thể thấy số liệu thống kê. Không biết liệu (b) có thật hay không - chưa được thử nghiệm, chỉ biết rằng đó có thể là một vấn đề nghiêm trọng trên các máy chủ.
Aaron Bertrand

2
Tôi với @AaronBertrand về điều này, tôi chưa thấy gì để dứt khoát nói rằng có một thành công lớn. Điều duy nhất tôi có thể nghĩ sẽ thêm một cái gì đó vào phương trình có thể là một dạng hoạt động xác thực, nhưng tôi nghi ngờ nó sẽ có ý nghĩa. Đó chỉ là tôi nghĩ lớn, tôi không chắc. Đặt cược tốt nhất của bạn ở đây sẽ là thiết lập một bài kiểm tra / điểm chuẩn tự động với cơ sở dữ liệu chéo, sau đó với cùng một cơ sở dữ liệu truy vấn và chạy thử nghiệm đó hàng ngàn lần. Lấy mức trung bình, tối đa, v.v. và đưa ra quyết định của bạn dựa trên điều đó.
Thomas Stringer

1
@thomas bạn có thể thấy một sự khác biệt dứt khoát bằng cách xem xét các kế hoạch truy vấn thực tế?
Max Vernon

@Jonathan: định nghĩa của "đắt" có liên quan đến các lựa chọn thay thế. Vì vậy, những gì bạn đang cố gắng để làm và những gì bạn đang quyết định giữa? Nếu không có thêm thông tin, hoàn toàn có thể nhận được câu trả lời có vẻ đúng với câu hỏi này theo mệnh giá, nhưng đồng thời hoàn toàn sai cho tình huống của bạn. Mọi thứ đều có một chi phí, nhưng chi phí đó có thể là một trong hai đắt hay rẻ tùy thuộc vào những gì bạn đang so sánh nó với. Và chi phí truy vấn (ví dụ: thời gian, sự tranh chấp, v.v.) cần được cân nhắc với chi phí bảo trì, chi phí phần cứng, v.v.
Solomon Rutzky

Tôi muốn biết chi phí so với một truy vấn trong cùng một bảng.
Jonathan Allen

Câu trả lời:


6

Xin lỗi, tôi không đủ uy tín để nhận xét về câu hỏi, nhưng từ kinh nghiệm của tôi nếu ứng dụng khách tăng giao dịch cho một truy vấn sử dụng cơ sở dữ liệu chéo tham gia thì nó sẽ thúc đẩy giao dịch được phân phối và có chi phí giao dịch DTC .

Chi phí DTC trong trường hợp này có thể được xem là tiêu cực đối với hiệu suất. Nói chung, sự khác biệt sẽ không đáng kể mặc dù Microsoft mô tả các giao dịch DTC như sau:

Các giao dịch phân tán thường tiêu tốn tài nguyên hệ thống đáng kể

Xúc tiến giao dịch

... Điều này sẽ gợi ý sự suy giảm hiệu suất nếu máy chủ của bạn không thể cung cấp các tài nguyên mà nó yêu cầu.

Chỉ cần làm rõ, bài viết trên mô tả các giao dịch cục bộ đang được xúc tiến khi các hệ thống từ xa được giới thiệu, nhưng tôi đã thấy điều này trở thành trường hợp cho các giao dịch trên cùng một máy chủ khi sử dụng truy vấn cơ sở dữ liệu chéo.

Như Thomas Stringer đã chỉ ra trong nhận xét của mình, sẽ có thêm chi phí xác thực mặc dù tôi nghĩ vì điều này sẽ do SID điều khiển nên sẽ có chi phí tối thiểu ở đó trừ khi bạn phải sử dụng thông tin đăng nhập riêng để truy cập cơ sở dữ liệu khác.

Nếu có sự khác biệt trong cài đặt cơ sở dữ liệu gây ra chi phí bổ sung trong liên kết có thể ảnh hưởng lớn hơn các đề xuất trước đây - ví dụ đối chiếu cơ sở dữ liệu. Đối chiếu cơ sở dữ liệu có thể biểu hiện như một sự khác biệt về chức năng, không chỉ là sự khác biệt về hiệu năng.

Tôi nghĩ Aaron có lập luận mạnh nhất về hiệu suất với trình tối ưu hóa không có lợi thế sử dụng các mối quan hệ cho các truy vấn cơ sở dữ liệu chéo trong khi khép kín trong cơ sở dữ liệu mà bạn có thể sử dụng các mối quan hệ có lợi cho mình.



1
Bài viết xúc tiến giao dịch dành cho các giao dịch CLR.
stacylaray

-2

Trong SQL Server 2014, các bảng được tối ưu hóa bộ nhớ không hỗ trợ các giao dịch cơ sở dữ liệu chéo. Bạn không thể truy cập cơ sở dữ liệu khác từ cùng một giao dịch hoặc cùng một truy vấn cũng truy cập vào bảng được tối ưu hóa bộ nhớ. Bạn không thể dễ dàng sao chép dữ liệu từ một bảng trong một cơ sở dữ liệu, sang một bảng được tối ưu hóa bộ nhớ trong cơ sở dữ liệu khác. http://msdn.microsoft.com/en-us/l Library / dn584627 (v = sql.120) .aspx Các giao dịch phân tán và cơ sở dữ liệu chéo không được hỗ trợ cho phản chiếu cơ sở dữ liệu / AOAG. http://technet.microsoft.com/en-us/l Library / hh393530.aspx . Nếu bạn định sử dụng chuỗi sở hữu, hãy lưu ý về các rủi ro bảo mật http://msdn.microsoft.com/en-us/l Library / ms188676.aspx


Điều đó chỉ áp dụng cho các tình huống "tài nguyên trải rộng trên nhiều phiên bản hoặc máy chủ". Trong trường hợp này, chúng ta đang nói về một trường hợp duy nhất có nhiều cơ sở dữ liệu.
Jonathan Allen

1
Xấu của tôi ... Tôi đã bỏ lỡ phần về nó trong cùng một ví dụ
stacylaray
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.