Cơ sở dữ liệu điểm chuẩn


13

Tôi thấy rất nhiều cuộc thảo luận xoay quanh hiệu suất của db 'x' hoặc việc chuyển từ 'x' sang 'y' đã cải thiện hiệu suất trang web của chúng tôi.

Tôi vẫn chưa thấy điểm chuẩn phù hợp hoạt động trên các loại cơ sở dữ liệu khác nhau.

  1. Có thể viết một điểm chuẩn có ý nghĩa có thể được sử dụng trên nhiều loại db, chẳng hạn như Quan hệ, Định hướng tài liệu, v.v.

  2. Làm thế nào bạn sẽ đi về thiết kế một tiêu chuẩn như vậy?


Như một ví dụ về mức độ chi tiết tôi yêu cầu thực hiện nghiêm túc bất kỳ điểm chuẩn cơ sở dữ liệu nào, hãy xem bài viết này của Yahoo Research. Tôi thực sự không có câu trả lời tốt cho bạn, khác là tôi cũng nghi ngờ sự thỏa hiệp và giả định của CAP là lý do chính khiến cơ sở dữ liệu điểm chuẩn quá khó khăn.
yannis

Câu trả lời:


19

Câu trả lời ngắn

, 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".

  1. 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.

  2. Bạn di chuyển ứng dụng sang cơ sở dữ liệu mới.

  3. Bạn làm các biện pháp tương tự.

  4. 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.


1

Không, sự khác biệt giữa chúng là bất kỳ một điểm chuẩn nào sẽ bị sai lệch.

Điều đó nói rằng, phát triển một trang web như Trò chơi Điểm chuẩn Ngôn ngữ Máy tính , bao gồm một loạt các bài kiểm tra và giúp dễ dàng so sánh các bài kiểm tra (có thể kiểm tra ngôn ngữ cụ thể hoặc ngôn ngữ tổng hợp của nhiều ngôn ngữ), sẽ có ích (tại ít nhất trong mắt tôi), đặc biệt là nếu nó được thiết lập để cộng đồng có thể gửi giải pháp và cải thiện bất kỳ sự xuất hiện ngắn nào trong các lược đồ hoặc truy vấn.

Trong trường hợp trang web điểm chuẩn DB, thay vì triển khai các thuật toán (như trong trường hợp bắn ngôn ngữ), các bài kiểm tra có thể bao gồm dữ liệu thô phải được lưu trữ và sau đó truy xuất theo các ràng buộc cụ thể. Chẳng hạn, có thể có một tập hợp dữ liệu thô chứa thông tin đại diện cho một đại diện lược đồ đơn giản về những gì thư viện cộng đồng có thể sử dụng để theo dõi khách hàng và sách. Mỗi DB phải lưu trữ tất cả 1 triệu bản ghi và sau đó truy xuất một số tập hợp con của dữ liệu đáp ứng các ràng buộc. Sau đó, cũng có thể có một bộ dữ liệu đại diện cho một số cấu trúc / mối quan hệ rất đơn giản (có thể là một hệ thống nhận xét thường được sử dụng cho các trang web như ESPN, v.v.) có chứa 100 triệu bản ghi và nó phải có bộ truy vấn riêng phải được thực hiện . Vân vân.

Thử nghiệm DB trên các tập dữ liệu phạm vi rộng (từ các mối quan hệ phức tạp đến đơn giản, tập hợp nhỏ đến khiêm tốn) có thể rất hữu ích, vì ít nhất bạn có thể thấy xu hướng chung cho dữ liệu mang chất lượng tương tự với dự án mà bạn hiện đang đánh giá.


1
  1. Với tất cả số tiền có được với các công ty cơ sở dữ liệu lớn và nhóm các nhà phát triển lớn trên các ứng dụng db nguồn mở, nếu có cách nào để làm điều đó, họ sẽ tìm ra ngay bây giờ (Và đã thổi bay kết quả trên internet. ).

  2. Tôi sẽ không. Thay vào đó, hãy tạo các điểm chuẩn cụ thể cho các nhu cầu và môi trường cụ thể.

Tại một số điểm, số tiền có sẵn và chuyên môn của nhà thiết kế với cơ sở dữ liệu cụ thể có thể xác định các giới hạn nhiều hơn bất cứ điều gì. Một dba Oracle tốt sẽ thực hiện hầu hết các nhà phát triển cơ sở bất kể họ chọn nền tảng nào.


0

Tôi muốn thêm một vài lý do, tại sao bạn không thể điểm chuẩn tất cả các loại cơ sở dữ liệu.

  1. Có hai hướng chính của hệ thống cơ sở dữ liệu: OLAP và OLTP (xem so sánh ).

  2. Như bạn đã nói, cũng có các hệ thống cơ sở dữ liệu quan hệ và định hướng tài liệu. Mặc dù RDBS tuân thủ nghiêm ngặt nguyên tắc ACID , trong hầu hết các DBS định hướng tài liệu, bạn có thể quyết định rằng dữ liệu yếu là đủ cho ứng dụng của bạn. Điều đó làm cho khóa và lập kế hoạch dễ dàng hơn nhiều.

Nói tóm lại: Bạn sẽ không tranh luận, rằng một chiếc Lamborghini là chiếc xe tốt nhất trên thế giới . Hãy nghĩ về khối lượng thân cây, số lượng ghế hoặc số dặm.

Như một lưu ý phụ: Đây là một điểm chuẩn cho các hệ thống cơ sở dữ liệu OLTP.

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.