Hiệu suất CPU có phù hợp với máy chủ cơ sở dữ liệu không?


33

Đây là một câu hỏi hoàn toàn lý thuyết. Giả sử tôi có một ứng dụng được triển khai trên nhiều máy chủ.

  1. Một cân bằng tải,
  2. Nhiều máy chủ ứng dụng có thể mở rộng
  3. Một máy chủ cơ sở dữ liệu (đơn) (hiện tại)

Trên hai phần đầu tiên, tôi biết những gì cần tìm kiếm. Nhưng những gì về máy chủ cơ sở dữ liệu? Tôi nên tìm loại phần cứng nào?

  • Là tần số CPU có liên quan cho một máy chủ cơ sở dữ liệu?
  • Các CPU nhiều lõi có liên quan không?
  • RAM có quan trọng hơn CPU không?

PS: Giả sử cơ sở dữ liệu được chọn là MySQL hoặc PostgreSQL.


Vâng, nó phải có một.
Mối quan tâmOfTunbridgeWells

Câu trả lời:


29

Đối với PostgreSQL, sức mạnh của CPU có thể rất phù hợp, đặc biệt là nếu tỷ lệ khá cao của bộ dữ liệu hoạt động tích cực của dữ liệu của bạn phù hợp với RAM. Hầu hết các cơ sở dữ liệu tôi đã làm việc cùng có sức mạnh CPU là nút cổ chai chính trong hầu hết thời gian. (Tôi vừa kiểm tra vmstat trên một máy chủ lưu trữ các trang web với hàng triệu lượt truy cập mỗi ngày lưu trữ trên 5TB dung lượng cơ sở dữ liệu và tôi chưa bao giờ thấy thời gian chờ đĩa quá 2%, nhưng đã thấy thời gian CPU của người dùng cao nhất là 12%.)

Do PostgreSQL dựa trên quy trình, nên bất kỳ quy trình đơn lẻ nào cũng chỉ có thể chạy nhanh như một lõi, nhưng trong một hỗn hợp như chúng ta có trên máy chủ được đề cập ở trên, với một khối lượng lớn yêu cầu nhỏ, tổng số CPU trên tất cả các lõi là quan trọng nhất. Với cùng tổng sức mạnh CPU, PostgreSQL thường sẽ làm tốt hơn với số lõi ít ​​hơn, nhanh hơn so với nhiều nhân, lõi chậm hơn.

Cho đến khi phần trăm cao của bộ dữ liệu hoạt động của bạn được lưu vào bộ đệm, việc thêm RAM thường sẽ hiển thị nhiều tiếng nổ hơn so với việc thêm lõi. Sau khi bạn có đủ bộ nhớ đệm, lợi ích của RAM bổ sung sẽ giảm xuống và tốt hơn hết là bạn nên tăng sức mạnh cho CPU.

Để biết thêm chi tiết về chủ đề này khi nó liên quan đến PostgreSQL, tôi không nghĩ rằng có một nguồn tốt hơn PostgreQuery 9.0 Hiệu suất cao của Greg Smith . (Tiết lộ đầy đủ, tôi là người đánh giá kỹ thuật cho cuốn sách, nhưng không nhận được lợi ích tài chính dựa trên doanh số.)


Này, tôi có cuốn sách. Có bất kỳ trang, phần hoặc chương cụ thể mà bạn đang tham gia ??? (BTW +1 cho phối cảnh PostgreSQL)
RolandoMySQLDBA

Cảm ơn thông tin về PostgreSQL. Tôi sẽ kiểm tra cuốn sách. ;)
Zenklys

1
Nội dung hay từ trang 21-23
RolandoMySQLDBA

Tôi có thể thấy sự khôn ngoan của đoạn thứ hai của bạn khi so sánh với các trang 21-23.
RolandoMySQLDBA

23

Nghiêm túc từ góc độ MySQL, đó là một câu hỏi rất được tải

Tần số CPU có liên quan cho một máy chủ cơ sở dữ liệu?

Trong khi CPU và bo mạch chủ nhanh hơn là tuyệt vời, các nút thắt khác có thể cản trở. Những vướng mắc như vậy bao gồm:

  • Đĩa I / O
  • Tối đa kết nối
  • Độ trễ mạng
  • Hiệu suất truy vấn trên mỗi kết nối

Mọi lợi thế đều có ích, nhưng tôi phải nói Không vì bản thân tốc độ CPU không cải thiện được các nút thắt nói trên. Rốt cuộc, một RaceCar Công thức Một có thể làm gì tốt khi mặc một chiếc dù mở hoặc với một con khỉ đột nặng 800 pound ở bánh xe?

Các CPU nhiều lõi có liên quan không?

Điều đó phụ thuộc hoàn toàn vào phiên bản MySQL bạn đang chạy. Tất cả các plugin InnoDB của MySQL 5.1, MySQL 5.5 và XonaDB của Percona Server đều có các cài đặt BẠN PHẢI CẤU TẠO SỞ HỮU để có được InnoDB truy cập vào tất cả các lõi. Sự khuyến khích thực sự cho việc này bắt nguồn từ việc một số phiên bản cũ hơn của MySQL LEFT UNCONFIGURED nhanh hơn các phiên bản mới hơn như tôi đã thảo luận trong các bài viết trước đây của mình:

Do đó, nếu bạn không sẵn sàng định cấu hình InnoDB để truy cập tất cả các CPU, việc có nhiều lõi sẽ giúp bạn hoàn toàn không có gì .

RAM có quan trọng hơn CPU không?

Đúng vậy. Cấu hình bộ nhớ cho MySQL đòi hỏi phải thiết lập

Yêu cầu quá ít hoặc quá nhiều bất kỳ sự kết hợp nào của những điều này và MySQL quay lại cắn bạn. CPU nhanh hơn với MySQL được cấu hình không đúng cho RAM chỉ khiến MySQL cắn bạn nhanh hơn.


2
Câu trả lời chính xác. Tôi sẽ kiểm tra tất cả các liên kết, cảm ơn.
Zenklys

6
  • Không
  • Không
  • Vâng

Nói một cách đơn giản, bạn cần hiệu năng RAM và IO (độ trễ + tốc độ đọc + tốc độ ghi) cho cơ sở dữ liệu.

Lựa chọn 4 hoặc 6 lõi hoặc 2,5 GHz so với 3 GHz không thực sự phù hợp (Tôi giả sử bạn không phải chọn giữa P3-450 với RAM 32 GB hoặc Xeon mới nhất có RAM 1 GB).

Nếu bạn bị ràng buộc CPU, thì bạn có vấn đề khác (thiết kế kém, chỉ mục kém, trao đổi, máy chủ không chuyên dụng, v.v.)


Cảm ơn, cho câu trả lời. SSD là một lựa chọn tốt sau đó? Quá sức CPU?
Zenklys

@Zenklys: khó nói. Bạn có kích thước cơ sở dữ liệu nào? Viết khối lượng? Đọc tải? OLTP hay OLAP? v.v.
gbn

Tối đa 20- 30 gb. Tỷ lệ đọc / ghi 10 đến 1, chỉ dữ liệu nhỏ, OLTP.
Zenklys

2
@Zenklys: Trong trường hợp đó, nó không thực sự quan trọng. Chỉ cần mua RAM đặc biệt cho MySQL để có càng nhiều dữ liệu được lưu trữ càng tốt
gbn

3
Không chắc chắn tại sao đây là câu trả lời được chấp nhận. Thật đơn giản vì nó không xem xét ứng dụng, tải công việc hoặc kích thước tập dữ liệu. @kgrittn đã đưa ra một câu trả lời tốt hơn dựa trên kinh nghiệm thực tế và nắm bắt tốt hơn về lý thuyết vận hành cho Postgres.
dbenhur
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.