Làm thế nào để bạn làm kiểm tra tải và lập kế hoạch năng lực cho cơ sở dữ liệu?


34

Đây là một câu hỏi kinh điển về lập kế hoạch năng lực cho cơ sở dữ liệu.

Liên quan:

Tôi đang tìm cách tạo ra một câu hỏi kinh điển về các công cụ và phương pháp lập kế hoạch năng lực cho cơ sở dữ liệu. Đây được dự định là một câu hỏi kinh điển.

Rõ ràng, quy trình làm việc chung là:

  • Đặt kịch bản của bạn vào vị trí
  • Thêm giám sát
  • Thêm lưu lượng
  • Đánh giá kết quả
  • Khắc phục dựa trên kết quả
  • Rửa sạch, lặp lại cho đến khi hạnh phúc hợp lý

Xin vui lòng mô tả các công cụ và kỹ thuật khác nhau cho các máy chủ web, khung, v.v. khác nhau, cũng như các thực tiễn tốt nhất.


Một cơ sở dữ liệu gần như không bao giờ là một hệ thống độc lập. Nó được nhìn thấy trong bối cảnh chính, thường là các máy chủ ứng dụng lớn, trước mặt họ. DB là các thiết bị dữ liệu phụ trợ. Vì vậy, khi kiểm tra tải, bạn phải xem xét điều đó.
Nils

Câu trả lời:


24

Lập kế hoạch dung lượng đĩa & RAM

Lập kế hoạch dung lượng đĩa và bộ nhớ cho máy chủ cơ sở dữ liệu là một nghệ thuật đen. Càng nhiều càng tốt. Nhanh hơn là tốt hơn.

Theo hướng dẫn chung, tôi cung cấp như sau:

  • Bạn muốn có nhiều không gian đĩa hơn bạn sẽ CẦN .
    Hãy ước tính tốt nhất của bạn về dung lượng đĩa bạn cần trong 3-5 năm tới, sau đó nhân đôi nó.
  • Bạn sẽ muốn có đủ RAM để giữ các chỉ mục cơ sở dữ liệu của bạn trong bộ nhớ, xử lý truy vấn lớn nhất của bạn ít nhất hai lần và vẫn còn đủ chỗ cho bộ đệm đĩa hệ điều hành khỏe mạnh.
    Kích thước chỉ mục sẽ phụ thuộc vào cơ sở dữ liệu của bạn và mọi thứ khác phụ thuộc rất nhiều vào tập dữ liệu và cấu trúc truy vấn / cơ sở dữ liệu của bạn. Tôi sẽ cung cấp "Ít nhất gấp đôi kích thước của bảng lớn nhất của bạn" như một đề xuất, nhưng lưu ý rằng đề xuất này bị hỏng trong các hoạt động lưu trữ dữ liệu thực sự lớn trong đó bảng lớn nhất có thể là hàng chục hoặc hàng trăm gigabyte.

Mỗi nhà cung cấp cơ sở dữ liệu có một số hướng dẫn về hiệu suất điều chỉnh nhân đĩa / bộ nhớ / HĐH của bạn - Dành thời gian cho tài liệu này trước khi triển khai. Nó sẽ giúp.


Khối lượng công việc và kế hoạch năng lực

Giả sử bạn chưa triển khai

Nhiều hệ thống cơ sở dữ liệu vận chuyển với Công cụ đo điểm chuẩn - Ví dụ: PostgreSQL vận chuyển với pgBench .
Những công cụ này nên là điểm dừng đầu tiên của bạn trong hiệu suất cơ sở dữ liệu điểm chuẩn. Nếu có thể, bạn nên chạy chúng trên tất cả các máy chủ cơ sở dữ liệu mới để cảm nhận về "bao nhiêu công việc" mà máy chủ cơ sở dữ liệu có thể làm.

Bây giờ được trang bị một điểm chuẩn thô, ABSOLUTELY MEANINGLESShãy xem xét một cách tiếp cận thực tế hơn đối với điểm chuẩn: Tải lược đồ cơ sở dữ liệu của bạn và viết chương trình chứa dữ liệu giả, sau đó chạy truy vấn của ứng dụng đối với dữ liệu đó.
Điều này điểm chuẩn ba điều quan trọng: 1. Máy chủ cơ sở dữ liệu (phần cứng) 2. Máy chủ cơ sở dữ liệu (phần mềm) 3. Thiết kế cơ sở dữ liệu của bạn và cách nó tương tác với (1) và (2) ở trên.

Lưu ý rằng điều này đòi hỏi nhiều nỗ lực hơn so với các điểm chuẩn được xây dựng sẵn đơn giản như pgBench: Bạn cần viết một số mã để thực hiện việc điền và bạn có thể cần phải viết một số mã để thực hiện các truy vấn và báo cáo thời gian thực hiện.
Loại thử nghiệm này cũng chính xác hơn về cơ bản: Vì bạn đang làm việc với lược đồ và truy vấn của mình, bạn có thể thấy cách chúng sẽ thực hiện và nó cung cấp cho bạn cơ hội để lập hồ sơ và cải thiện cơ sở dữ liệu / truy vấn của bạn.

Kết quả của các điểm chuẩn này là một cái nhìn lý tưởng hóa cơ sở dữ liệu của bạn. Để an toàn, giả định rằng bạn sẽ chỉ đạt được 50-70% hiệu suất này trong môi trường sản xuất của mình (phần còn lại là một tấm đệm cho phép bạn xử lý sự tăng trưởng bất ngờ, lỗi phần cứng, thay đổi khối lượng công việc, v.v.).


Quá muộn rồi! Đó là trong sản xuất!

Khi hệ thống của bạn đang trong quá trình sản xuất, quá muộn để "điểm chuẩn" - Bạn có thể bật ghi nhật ký / thời gian truy vấn nhanh và xem thời gian thực hiện và bạn có thể chạy một số truy vấn "kiểm tra căng thẳng" đối với các tập dữ liệu lớn trong khi tắt giờ Bạn cũng có thể xem xét việc sử dụng CPU, RAM và I / O (băng thông đĩa) của hệ thống để biết được mức độ tải của nó.
Thật không may, tất cả những điều này sẽ làm là cung cấp cho bạn một ý tưởng về những gì hệ thống đang làm, và một khái niệm mơ hồ về mức độ bão hòa của nó.
Điều đó đưa chúng ta đến với Lọ


Giám sát liên tục

Tất cả các điểm chuẩn trên thế giới sẽ không giúp bạn nếu hệ thống của bạn đột nhiên thấy các kiểu sử dụng mới / khác nhau.
Để triển khai cơ sở dữ liệu tốt hơn hoặc xấu hơn không phải là tĩnh: Các nhà phát triển của bạn sẽ thay đổi mọi thứ, tập dữ liệu của bạn sẽ phát triển (dường như chúng không bao giờ thu nhỏ lại) và người dùng của bạn bằng cách nào đó sẽ tạo ra các kết hợp điên rồ của các sự kiện mà bạn chưa từng dự đoán trong thử nghiệm.

Để lập kế hoạch dung lượng phù hợp cho cơ sở dữ liệu của bạn, bạn sẽ cần thực hiện một số loại giám sát hiệu suất để cảnh báo bạn khi hiệu suất cơ sở dữ liệu không còn đáp ứng mong đợi của bạn. Tại thời điểm đó, bạn có thể xem xét các hành động khắc phục (phần cứng mới, lược đồ DB hoặc thay đổi truy vấn để tối ưu hóa việc sử dụng tài nguyên, v.v.).


Lưu ý: Đây là một hướng dẫn chung và cấp độ cao để định cỡ phần cứng cơ sở dữ liệu của bạn và tìm hiểu mức độ lạm dụng của nó. Nếu bạn vẫn không chắc chắn về cách xác định xem một hệ thống cụ thể có đáp ứng nhu cầu của bạn hay không, bạn nên nói chuyện với một chuyên gia cơ sở dữ liệu.
Ngoài ra còn có một trang web Stack Exchange dành riêng cho quản lý cơ sở dữ liệu: dba.stackexchange.com . Tìm kiếm kho lưu trữ câu hỏi của họ hoặc duyệt các thẻ cụ thể cho công cụ cơ sở dữ liệu của bạn để được tư vấn thêm về điều chỉnh hiệu suất.


1
Ngoài ra, ngày nay, bạn có thể sử dụng ổ SSD để trao đổi / hoạt động trên đĩa. Điều đó sẽ tăng tốc các truy vấn sử dụng các bảng tạm thời lớn trên các đĩa. Vì vậy, thêm nhiều SSD nói chung là một ý tưởng rất tốt.
Peter

2
@Peter Tôi sẽ không đề xuất ổ SSD cho không gian hoán đổi (nếu bạn chủ động trao đổi, tốc độ khuấy rất cao), mặc dù với ổ SSD đủ lớn và mức độ hao mòn tốt, ổ đĩa có thể kéo dài tuổi thọ của máy. Tôi đã thấy SSD được sử dụng cho không gian bảng tạm thời với kết quả tốt.
voretaq7

1
Xin lưu ý rằng lời khuyên này trong các nhận xét về SSD hiện đã được 7 năm. Mọi bộ lưu trữ chứa cơ sở dữ liệu trên máy chủ cơ sở dữ liệu của bạn phải là ổ SSD vào năm 2019 trở lên.
Mark Henderson

1

Nói chung, bạn cần các trường hợp sử dụng thực tế để kiểm tra hiệu suất. Một thực tiễn tốt nhất là liên quan đến các nhà phát triển ứng dụng và người dùng cuối.

Ghi lại những gì họ thường làm, tham số hóa nó (nội dung, số lượng hành động đồng thời) cho mỗi trường hợp sử dụng.

Sau đó xây dựng phía khách hàng. Một máy vật lý đơn lẻ thường không đủ để xây dựng tải sản xuất.

Sau đó kích hoạt nó, đánh giá, nâng cao và kiểm tra lại.

Bạn sẽ ngạc nhiên khi các nút thắt tăng lên.

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.