Làm thế nào để một quy mô SQL Server 2008 hoặc 2012?


8

Làm thế nào để một quy mô SQL Server 2008 (hoặc 2012)? Về cơ bản, tôi hiểu có hai lựa chọn:

Mở rộng quy mô:

Nếu CPU bị ràng buộc, tôi có thể thấy rõ việc đi từ 1 lõi CPU đến 2 đến 4. Hoặc nếu sử dụng tên lửa RAM, chỉ cần thêm RAM. SQL Server 2008/2012 có thực sự thu được sự chậm chạp và mở rộng theo cách đó với giả định KHÔNG có thay đổi cấp độ ứng dụng không? Để giảm thiểu đầu cơ, giả sử tôi không làm điều gì đó ngớ ngẩn như đốt cháy chu kỳ CPU, thực hiện các phép nối chéo, v.v.

Quy mô:

Nó không rõ ràng làm thế nào nhân rộng sẽ hoạt động. Ý tôi là nếu tôi đã thêm một máy chủ SQL khác ngay bên cạnh máy chủ đầu tiên của mình, làm thế nào để truy vấn biết máy chủ nào sẽ chạy trên đó? Có một số cân bằng tải ở phía trước (và nó có đi kèm với phần mềm SQL Server không?)? Nó có đòi hỏi thay đổi cấp độ ứng dụng để nhân rộng ra để làm việc không? Hoặc tôi phải bảo vệ dữ liệu và có mã tùy chỉnh gọi đúng máy chủ cơ sở dữ liệu tùy thuộc vào khóa bảo vệ dữ liệu?

Sẽ đánh giá cao đầu vào từ những người có kinh nghiệm hơn.

Câu trả lời:


10

SQL Server không mở rộng quy mô như vậy . Nó vảy lên.

Có 3 lĩnh vực để làm điều này, tùy thuộc vào giới hạn phiên bản

  • Lõi CPU
  • RAM
  • Lưu trữ

Và tất nhiên, sử dụng phiên bản cao hơn, ví dụ: Enterprise

SQL Server không phân chia và bất kỳ giải pháp nào như vậy (bạn có thể nghiên cứu các giải pháp ngăn chặn MySQL) làm tăng thêm độ phức tạp và chi phí cho hệ thống.

Mở rộng một máy chủ (+ nút dự phòng / máy nhân bản) thường khá đơn giản với RAM, SSD, nhiều ổ đĩa hơn để truyền bá IO, các ổ riêng biệt cho tempdb và nhật ký, v.v.

Ngoài ra, nếu bạn thấy SQL Server bị ràng buộc bởi CPU thì nó thường có thiết kế và / hoặc chỉ mục kém và / hoặc các truy vấn được viết kém trừ khi bạn có tải lớn.


Tuyệt quá! Bất kỳ tài liệu / hướng dẫn / liên kết cụ thể nào về MySQL mà bạn đề xuất? Hy vọng rằng tôi có thể áp dụng một số các mẫu đó cho SQL Server. Tôi đang học (nhanh!) Và bạn khá là tài nguyên !!
DeepSpace101

1
Và các máy chủ wintel hiện đại có thể mở rộng đến một số phần cứng khá cao. Nếu bạn phải mở rộng ra, bạn có thể thoải mái vào lãnh thổ VLDB và bộ dụng cụ chuyên dụng, đắt tiền.
Mối quan tâmOfTunbridgeWells

@Sid, Chuyển SQL Server thành một cấu hình trong đó một cơ sở dữ liệu được chia sẻ trên nhiều máy chủ vật lý không phải là thứ để người dùng mới thử. Chỉ có một vài người có thể thực hiện thành công vì nó rất phức tạp và đòi hỏi một lược đồ RẤT ổn định và hiểu biết vững chắc về các mẫu dữ liệu trong cơ sở dữ liệu (Tôi đã dạy các lớp về chủ đề này). Các ý tưởng cơ bản từ các nền tảng khác là một nơi tốt để bắt đầu nhưng các kỹ thuật thực tế được sử dụng là khá khác nhau.
mrdenny

5

Giống như gbn nói, SQL không thực sự mở rộng quy mô như các RDBM khác. Tuy nhiên, có một khía cạnh của việc nhân rộng mà nhiều người bỏ qua và đó là luôn có một hệ thống riêng cho mục đích báo cáo.

Không bao giờ cho phép các báo cáo chạy chống lại sản xuất. Xây dựng cho mình một cơ sở dữ liệu báo cáo trên một máy chủ khác.

Lý tưởng nhất là hệ thống báo cáo của bạn sẽ chỉ chứa dữ liệu mà báo cáo cần và sẽ được cấu trúc và tối ưu hóa khác với hệ thống sản xuất của bạn.

Dữ liệu sẽ được đưa vào hệ thống báo cáo theo yêu cầu (tức là cập nhật nhỏ giọt hàng giờ từ sản xuất, nguồn cấp dữ liệu hàng ngày, v.v.).

Một cách tiếp cận nhanh chóng và bẩn (và không hiệu quả cao) chỉ đơn giản là có một bản sao đầy đủ của cơ sở dữ liệu sản xuất trên một máy chủ khác. Bản sao này có thể được duy trì thông qua sao lưu đầy đủ, vận chuyển nhật ký giao dịch, phản chiếu (với ảnh chụp nhanh), sao chép, v.v.

Tôi không khuyên bạn nên tiếp cận phương pháp này. Sao lưu đầy đủ và khôi phục mất thời gian, đặc biệt là trên cơ sở dữ liệu lớn hơn. Nhân rộng là phức tạp và có vấn đề. Log-Shipping để lại cho bạn một cơ sở dữ liệu chỉ đọc. Phản chiếu với ảnh chụp nhanh có thể là một câu trả lời tốt, nhưng bạn vẫn bị mắc kẹt với một lược đồ sản xuất không được tối ưu hóa cho mục đích báo cáo.

Một hệ thống báo cáo riêng là con đường để đi.


2

Nếu CPU bị ràng buộc, tôi có thể thấy rõ việc đi từ 1 lõi CPU đến 2 đến 4. Hoặc nếu sử dụng tên lửa RAM, chỉ cần thêm RAM. SQL Server 2008/2012 có thực sự thu được sự chậm chạp và mở rộng theo cách đó với giả định KHÔNG có thay đổi cấp độ ứng dụng không?

Các phiên bản khác nhau của SQL Server có các hạn chế khác nhau về CPU và bộ nhớ mà chúng sẽ sử dụng. Nhưng bên cạnh đó, câu trả lời là có - nếu chu kỳ CPU hoặc trang bộ nhớ còn trống, máy chủ thường sẽ sử dụng chúng khi cần, trừ khi được cấu hình khác.

Hoặc tôi phải bảo vệ dữ liệu và có mã tùy chỉnh gọi đúng máy chủ cơ sở dữ liệu

Về cơ bản, có. "Thu nhỏ" thường được thực hiện khi bạn cần tránh tranh chấp khóa. Nếu bạn có các truy vấn chạy dài với khóa mở rộng, bạn có thể muốn tách chúng khỏi các truy vấn tương tác "thời gian thực" hoặc chu trình cập nhật truy vấn được bắt đầu bởi người dùng vận hành một loại giao diện nào đó và chờ phản hồi nhanh chóng. Rõ ràng, quan tâm đến điều này sẽ yêu cầu thay đổi ứng dụng (hoặc ít nhất là thay đổi phần mềm trung gian, nếu bạn có thiết kế 3 tầng).

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.