Câu trả lời ngắn
Có , bạn có thể viết một điểm chuẩn có ý nghĩa của một trường hợp được nghiên cứu, nếu bạn cẩn thận thực hiện và hiểu rằng nếu nó phù hợp với trường hợp cụ thể, thì nó có thể không dành cho các trường hợp khác. Điều này cũng tương tự khi so sánh các cơ sở dữ liệu cùng loại (cơ sở dữ liệu quan hệ với cơ sở dữ liệu quan hệ khác) hoặc cơ sở dữ liệu thuộc các loại khác nhau.
Không , bạn không thể viết một điểm chuẩn sẽ chứng minh một cách kỳ diệu rằng một cơ sở dữ liệu cụ thể là cách tốt hơn so với cơ sở dữ liệu khác trong mọi trường hợp, cho mọi ứng dụng.
Câu trả lời dài
Chắc chắn có thể nói rằng "việc chuyển từ cơ sở dữ liệu sang cơ sở dữ liệu khác đã cải thiện hiệu suất trang web của chúng tôi".
Bạn đo lường hiệu suất của cơ sở dữ liệu trước đó thông qua hồ sơ thống kê hoặc thống kê thời gian chạy bằng cách thu thập đủ thông tin về các truy vấn và tốc độ của chúng.
Bạn di chuyển ứng dụng sang cơ sở dữ liệu mới.
Bạn làm các biện pháp tương tự.
Bạn so sánh.
Ví dụ: nếu danh sách đầy đủ của 3 182 432 sản phẩm được tải trong 2.834 giây. trên một cơ sở dữ liệu cũ và tải trong 0,920 giây. trên cơ sở dữ liệu mới, trong cả hai trường hợp, ứng dụng có bộ đệm trống, đó là một chiến thắng: cơ sở dữ liệu mới đã cải thiện hiệu suất trang web của bạn liên quan đến truy vấn này.
Bây giờ, như bất kỳ số liệu hiệu suất nào, nó thiên vị:
Đồng ý, truy vấn mới nhanh hơn. Nhưng chờ đã, DBA của bạn không biết cách sử dụng cơ sở dữ liệu bạn có trước đây , vì vậy truy vấn tải tất cả các sản phẩm không được tối ưu hóa . Nếu bạn viết lại như thế, bạn sẽ có thể tải các sản phẩm đó trong 0.855 giây. thay vì 2.834.
Ok, bạn có một kết quả tốt hơn. Nhưng bạn không nghĩ rằng thật không công bằng khi so sánh một cơ sở dữ liệu với dữ liệu mới được chuyển sang cơ sở dữ liệu 10 năm tuổi mà kế hoạch bảo trì cuối cùng đã được thực hiện ba năm trước? Nhân tiện, bạn có nghĩ rằng bạn nên cập nhật sản phẩm cơ sở dữ liệu ít nhất một lần trong bốn năm qua không?
Một số truy vấn nhanh hơn. Một số chậm hơn. Làm thế nào để bạn tính kết quả trung bình để biết rằng bạn đã đạt được hiệu suất tổng thể khi chuyển sang cơ sở dữ liệu mới? Ok, thời gian bạn tải tất cả 3 182 432 sản phẩm nhanh hơn. Nhưng có vấn đề gì không, trong khi truy vấn chỉ được thực hiện trên trang web trong một trường hợp hiếm hoi khi quản trị viên thực hiện một số nhiệm vụ cụ thể mà anh ta chỉ thực hiện hai lần trong mười năm qua? Mặt khác, thực hiện tất cả các truy vấn trên trang chủ cho một người dùng mới lãng phí 0,281 giây. với cơ sở dữ liệu mới, khi đó là 0,207 s. với cơ sở dữ liệu cũ. Kết quả này quan trọng hơn nhiều, đặc biệt là vì các truy vấn đó không thể được lưu trong bộ nhớ cache trong một thời gian dài và được thực hiện hàng chục nghìn lần mỗi ngày.
Cả hai cơ sở dữ liệu phải được kiểm tra trên cùng một máy chủ , cùng phần cứng, cùng cấu trúc. Ví dụ: bạn không thể kiểm tra một cơ sở dữ liệu trên một ổ cứng và cơ sở dữ liệu khác trên RAID1 gồm hai ổ SSD. Khi bạn di chuyển một dự án lớn sang cơ sở dữ liệu mới, có khả năng bạn sẽ lưu trữ cơ sở dữ liệu mới trên hàng trăm máy chủ rack mới được triển khai khác, khi cơ sở dữ liệu trước đó vẫn còn trên các máy trước đó.
Để tóm tắt, bạn có thể điểm chuẩn các truy vấn cơ sở dữ liệu của một ứng dụng và có được số liệu chính xác . Nhưng sau đó, bạn phải đưa ra một ý nghĩa cho những con số. Ở trạng thái này, thật hấp dẫn khi nói rằng bạn đã đạt được hiệu suất trang web: nếu không, ban quản lý sẽ tức giận khi biết rằng bạn đã chi hàng ngàn đô la và tháng làm việc chỉ để làm mọi thứ chậm hơn.
Sai lầm khủng khiếp nhất là lấy những kết luận đó từ điểm chuẩn và kết luận một số sự ngu ngốc như "Microsoft SQL Server nhanh hơn ba lần so với Oracle": nói điều này giống như nói rằng "Java tốt hơn PHP". Xác định tốt hơn. Tốt hơn trong những trường hợp nào? Đối với những loại ứng dụng? Đối với đội ngũ các nhà phát triển?
Bạn càng diễn giải và khái quát hóa, càng nhiều thứ trở nên không liên quan và vô nghĩa.
Truy vấn select [...]
bạn có thể tìm thấy trong bản sửa đổi # 832 trong tệp ProductFactory.cs
, dòng 117 thực thi dưới 0,5 s. với cơ sở dữ liệu mới khi được kiểm tra theo các điều kiện được chỉ định trong phụ lục yêu cầu phi chức năng M, trường hợp 3. Điều này cho phép vượt qua yêu cầu phi chức năng 527 (xem trang 80, sửa đổi 9). Yêu cầu tương tự không được thỏa mãn với cơ sở dữ liệu trước đó, khi kết quả thử nghiệm nằm trong phạm vi 0.9..1.3 s. trong cùng điều kiện.
có ý nghĩa đối với một nhà phát triển và đủ chính xác để biết những gì đã được thử nghiệm, làm thế nào và kết quả là gì. Điều này trả lời câu hỏi số 2 của bạn.
Đáng buồn thay, nó không có ý nghĩa gì cho quản lý. Thay thế:
Di chuyển sản phẩm của chúng tôi từ MySQL sang phiên bản Microsoft SQL Server mới nhất đã cải thiện hiệu suất tổng thể của sản phẩm của chúng tôi lên năm, giảm cùng lúc hai chi phí và hai dấu chân môi trường. Chúng tôi tin rằng việc di chuyển tất cả các ứng dụng của chúng tôi sang Microsoft SQL Server vào năm tới sẽ mang lại kết quả tốt hơn và tăng khả năng cạnh tranh thị trường của chúng tôi.
là một jibber-jabber tiếp thị thuần túy, và về mặt kỹ thuật, không có ý nghĩa gì, nhưng đáng ngạc nhiên là có một giá trị cho các bộ phận quản lý và tiếp thị.
Cuối cùng, chúng ta có thể so sánh các loại cơ sở dữ liệu khác nhau? Tôi muốn nói rằng nó hoàn toàn có thể. Hãy nói rằng tôi có một trang web lưu trữ hình ảnh lớn. Những ảnh này được lưu trữ trong varbinary(max)
Microsoft SQL Server 2005 (vì vậy tôi không thể sử dụng filestream
). Tôi lo ngại về hiệu suất khi tải những bức ảnh đó, vì vậy tôi quyết định lưu trữ ảnh dưới dạng tệp thay vào đó, sử dụng hệ thống tệp làm cơ sở dữ liệu mới của tôi. Đầu tiên, các tệp đó được lưu trữ trên cùng một máy so với cơ sở dữ liệu. Tôi lập hồ sơ giải pháp mới và nhận được kết quả cho thấy rằng trong trường hợp của tôi, các tệp được tải nhanh hơn 4% từ hệ thống tệp so với từ Microsoft SQL Server. Điểm chuẩn rất rõ ràng. Bây giờ tôi có thể nghĩ về việc triển khai một máy chủ chuyên dụng được tối ưu hóa để lưu trữ tệp trực tiếp, thay vì sử dụng máy chủ được tối ưu hóa cho Microsoft SQL Server.