2012-06-12 34 views
6

Bất cứ ai có thể giải thích cho tôi tại sao có một sự khác biệt đáng kể trong hiệu suất giữa MySQL và SQL Server cho tuyên bố chọn đơn giản này?MySQL vs SQL Server 2008 R2 đơn giản truy vấn chọn hiệu suất

SELECT email from Users WHERE id=1 

Hiện tại, cơ sở dữ liệu chỉ có một bảng với 3 người dùng. MySQL thời gian là trung bình 0,0003 trong khi SQL Server là 0,05. Đây có phải là bình thường hay máy chủ MSSQL không được cấu hình đúng cách?

EDIT:
Cả hai bảng có cấu trúc tương tự, khóa chính được thiết lập để id, MySQL động cơ loại là InnoDB.
Tôi đã thử truy vấn với WITH(NOLOCK) nhưng kết quả giống nhau.

+1

Bàn có cấu trúc tương tự không? Cả hai đều có chỉ mục (PRIMARY KEY) trên 'id'? –

+0

Có, cấu trúc bảng là như nhau, PK được đặt trên 'id' – matino

+0

Loại động cơ nào bạn đang sử dụng cho bảng MySQL? – Namphibian

Trả lời

2

Máy chủ có cùng mức công suất không? Phần cứng cũng tạo nên sự khác biệt. Và có cùng số người truy cập vào db cùng một lúc không? Có bất kỳ ứng dụng nào khác sử dụng cùng một phần cứng (cơ sở dữ liệu nói chung không nên chia sẻ máy chủ với các ứng dụng khác).

Cá nhân tôi sẽ không lo lắng về loại sự khác biệt này. Nếu bạn muốn xem cái nào đang hoạt động tốt hơn, thì hãy thêm hàng triệu bản ghi vào cơ sở dữ liệu và sau đó kiểm tra các truy vấn. Cơ sở dữ liệu nói chung tất cả đều hoạt động tốt với các truy vấn đơn giản trên các bảng nhỏ, ngay cả các thiết kế được thiết kế sai hoặc thiết lập sai. Để biết nếu bạn sẽ có một vấn đề hiệu suất, bạn cần phải kiểm tra với số lượng lớn dữ liệu và nhiều người dùng simulataneous trên phần cứng tương tự như một trong những bạn sẽ có trong sản.

+0

Vấn đề là máy chủ MySQL đang chạy trên máy chủ cục bộ và MSSQL trên máy chủ khác và thời gian đo được bao gồm độ trễ mạng ... Vì bạn là người gần nhất với câu trả lời của bạn, tôi chấp nhận nó nhưng muốn cảm ơn những người khác về đầu vào của họ:) Và vâng, tôi đã so sánh các nền tảng cho một dự án mới và đã thử đầu tiên với một truy vấn cơ bản ... – matino

1

Vấn đề với chẩn đoán các truy vấn chi phí thấp là chi phí cố định có thể làm giảm chi phí biến đổi. Không phải tôi là một MS-Fanboy, nhưng tôi quen thuộc hơn với MS-SQL, vì vậy tôi sẽ giải quyết điều đó, chủ yếu.

MS-SQL có thể có nhiều chi phí hơn để tối ưu hóa và phân tích truy vấn, thêm chi phí cố định vào truy vấn khi quyết định có sử dụng chỉ mục, xem thống kê, v.v. kế hoạch truy vấn khi nó thực hiện và lưu trữ nhiều dữ liệu để tối ưu hóa trong tương lai có thể thêm phí trên

Điều này sẽ rất hữu ích khi truy vấn mất một thời gian dài, nhưng khi đo điểm chuẩn một truy vấn, có vẻ hiển thị kết quả chậm hơn.

0

Có một số yếu tố có thể ảnh hưởng đến điểm chuẩn đó nhưng quan trọng nhất có lẽ là cách MySQL caches queries.

Khi bạn chạy truy vấn, MySQL sẽ lưu vào bộ nhớ truy vấn và kết quả là. Khi cùng một truy vấn được phát hành một lần nữa, nó sẽ đơn giản trả về kết quả từ bộ nhớ cache và không thực sự chạy truy vấn.

Một yếu tố quan trọng khác là số liệu SQL Server là tổng thời gian trôi qua, không chỉ thời gian cần để tìm kiếm bản ghi đó hoặc kéo nó từ bộ nhớ cache. Trong SQL Server, bật SET STATISTICS TIME ON sẽ phá vỡ nó thêm một chút nhưng bạn vẫn không thực sự so sánh như cho thích.

Cuối cùng, tôi không chắc mục đích của điểm chuẩn này là vì đó là truy vấn quá đơn giản. Bạn có đang so sánh các nền tảng cho một dự án mới không? Tiêu chí lựa chọn của bạn là gì?

Các vấn đề liên quan