Máy chủ SQL lõi đơn trên VM


7

Gần đây, khu học chánh của chúng tôi đã nâng cấp một số máy chủ từ phiên bản 2005 đến 2016 và từ máy chủ vật lý lên máy chủ VM.

Nhóm cơ sở hạ tầng của chúng tôi đã trình bày các máy chủ VM để cài đặt SQL Server với một lõi đơn.

Tôi đang cố gắng giải thích với người đứng đầu bộ phận đó rằng SQL Server 'ghét' ở trên một lõi và anh ta muốn xem 'bằng chứng'. Không có dữ liệu nào tôi trình bày đã thỏa mãn nhu cầu chứng minh của anh ấy và vì vậy anh ấy đã hỏi một số bài viết về lý do VM SQL Server không hoạt động hiệu quả trên một lõi.

Những bài viết để bạn sử dụng cho việc này?

Bất kỳ trợ giúp cho tôi làm cho trường hợp của tôi sẽ được đánh giá cao!


7
Khi bạn cấp phép SQL trên máy ảo, bạn vẫn trả tiền cho hai gói giấy phép. Bạn đang vứt tiền bằng cách không cho ít nhất hai lõi, ngay cả khi bạn được giảm giá giáo dục.
Erik Darling

4
Bạn có thể tham khảo bài viết của Glenn Barry (hơn 10 năm Microsoft MVP) từ năm 2015 trong đó liệt kê các CPU được đề xuất cho SQL 2014, trong đó nhỏ nhất có sáu lõi.
LowlyDBA

2
Ngoài ra, một thời gian trước tôi đã viết một whitepaper cho Google về việc định cỡ VM trên đám mây. Bạn có thể áp dụng điều đó cho tại chỗ là tốt.
Erik Darling

Mở rộng trên bình luận @sp_BlitzErik, các giấy phép cốt lõi tối thiểu có thể được áp dụng cho một Máy chủ SQL duy nhất, có thể là VM hoặc vật lý, là 4 giấy phép (xem Hướng dẫn cấp phép ). Thay thế là cấp phép cho các lõi vật lý của máy chủ. Theo mô hình đó, bạn có thể tự do chạy bao nhiêu máy ảo với số lượng vCores mà bạn chọn.
Mark Storey-Smith

Câu trả lời:


11

Bất kỳ quy trình Máy chủ không phải SQL nào sử dụng CPU có thể khiến toàn bộ Máy chủ SQL hoàn toàn không sử dụng được.

Ví dụ, Windows Update sẽ dừng SQL Server trong khi giải nén các cụm .Net.

Bất kỳ quy trình chống vi-rút nào, ngay cả khi được định cấu hình để loại trừ các tệp và thư mục dữ liệu của SQL Server có thể khiến SQL Server không phản hồi trong khi quét các tệp và trong khi giải nén các tệp định nghĩa vi-rút được cập nhật.

Nếu bạn đã cài đặt bất kỳ phần mềm quản lý nào, chẳng hạn như IBM Tivoli Server Monitor và nó quyết định sử dụng 100% một lõi, có lẽ bạn sẽ không thể làm gì khác ngoài tắt máy lạnh. Đừng hỏi tôi tại sao tôi lại đưa nó lên.

Tôi có thể tiếp tục, nhưng đủ để nói, bất kỳ máy chủ nào có một lõi đơn giản chỉ là yêu cầu sự cố với hiệu suất và khả năng quản lý. Kiểm tra xem, bất kỳ máy tính nào có lõi đơn nên được coi là không sử dụng được ngay hôm nay. Heck, điện thoại của tôi có 8 lõi.

Trong khi bạn đang ở đó, hãy thuyết phục anh chàng ảo hóa cung cấp cho mỗi Máy chủ SQL một bộ nhớ dự phòng hợp lý để đảm bảo bộ nhớ của SQL Server không bị xóa khỏi bộ nhớ chính của máy chủ vào đĩa.

Đối với Máy chủ SQL được lưu trữ nghiêm trọng trên VMware, bạn nên định cấu hình VMware theo Máy chủ SQL Kiến trúc trên hướng dẫn Thực hành Tốt nhất của VMware .

Nó thực sự nắm bắt được một VM lõi đơn chỉ có thể chạy một luồng duy nhất tại bất kỳ thời điểm nào. Ảo hóa không phải là viên đạn bạc cho tình huống một lõi trên mỗi luồng.

Các điểm trên có tính đến việc Windows NT (cơ sở mã năm 1993 mà tất cả các phiên bản Windows hiện đại được xây dựng) sử dụng đa tác vụ được ưu tiên. Đa tác vụ ưu tiên cho phép O / S thực thi đa tác vụ bằng cách buộc chuyển đổi ngữ cảnh theo lịch trình thông thường. Ngay cả với đa tác vụ được ưu tiên, một máy chủ có lõi đơn vẫn sẽ có hiệu năng rất kém nếu một tác vụ duy nhất quyết định sử dụng càng nhiều CPU càng tốt, vì O / S sẽ cung cấp cho nhiệm vụ đó càng nhiều thời gian CPU càng tốt trong khi vẫn cho phép các tác vụ ưu tiên cao hơn chạy, buộc CPU phải 100%. Nếu SQL Server đang chạy tại thời điểm CPU đạt 100%, lượng tử CPU của SQL Server sẽ bị giảm đi rất nhiều để trở nên rất đáng chú ý. Trong các kịch bản trên tôi đã vạch ra, tôi đã khônggiả sử, máy (hoặc thậm chí SQL Server) sẽ hoàn toàn "dừng" hoặc "chết"; Điều đó chỉ đơn giản là không đúng sự thật. Tuy nhiên, máy có thể trở nên bận rộn đến mức cho tất cả các mục đích và mục đích, máy trở nên không sử dụng được. Thêm một lõi thứ hai, trong khi chắc chắn không phải là thuốc chữa bách bệnh, làm giảm khả năng máy sẽ trở nên hoàn toàn không phản hồi. Mỗi lõi bổ sung có nghĩa là một luồng khác có thể chạy tới CPU 100% mà không khiến máy trở nên không sử dụng được.


Không phải máy chủ windows có (và luôn luôn có) đa tác vụ trước? Trừ khi tôi nhầm lẫn những gì bạn đang mô tả là hợp tác đa tác vụ, các quá trình mang lại hiệu quả cho nhau khi họ đã thực hiện nhiệm vụ cấp cao của mình. Sự tranh chấp chắc chắn có thể trì hoãn một phản hồi nhưng nó không nên khiến mọi thứ dừng lại hoàn toàn. Tôi đồng ý mutli-core là một ý tưởng tốt nếu không thực hành tốt nhất, nhưng kịch bản ngày tận thế bạn đặt ra có vẻ không đúng.
Mâtt Frëëman

Đôi khi cũng có một lý do chính đáng để duy trì lõi đơn, nếu trước đây bạn là lõi đơn vật lý và các ứng dụng nói chuyện với cá thể lõi đơn của bạn đã phá vỡ các thực tiễn tốt nhất như không chỉ định một thứ tự sắp xếp và coi việc đặt hàng sẽ ổn định hoàn toàn nếu không có sau đó chuyển sang đa lõi có thể hiển thị các lỗi đã bị loại bỏ trước đó bởi bản chất của lõi đơn. Nếu bạn không có ngân sách để đăng ký lại các ứng dụng này hoặc ít tin tưởng vào các nhà phát triển hoặc có thể chúng đã biến mất, việc kết hợp các máy chủ vật lý hiện tại về các lõi được phơi bày đôi khi có thể là một đặt cược an toàn
Mâtt Frëëman

Xin chào @ MâttFrëëman - Tôi đã thêm một phần vào câu trả lời của mình để xử lý đa nhiệm phủ đầu. Bạn đã nhắc nhở tôi về mức độ cơ sở mã NT tốt hơn so với đa nhiệm hợp tác dựa trên DOS được sử dụng bởi cơ sở mã gốc của Windows, cho đến và bao gồm cả Windows ME.
Max Vernon

Tôi đồng ý với phần lớn bình luận của bạn về việc còn lại trên lõi đơn đôi khi là một điều ác cần thiết. Câu trả lời của tôi cho rằng các máy vật lý đã được ảo hóa có lẽ là các máy chủ đa lõi, dựa trên mong muốn của OP có máy ảo đa lõi.
Max Vernon

@MaxVernon Cảm ơn, đây chính xác là những gì chúng tôi cần!
Nợ

6

Tôi đã phải chứng minh điều tương tự trước đây. Điều cuối cùng đã thông qua nhóm lập kế hoạch năng lực của chúng tôi là cơ sở dữ liệu của chúng tôi gần như không thể sử dụng được trong quá trình sao lưu.

Là một DBA, nỗi sợ lớn nhất của bạn là mất dữ liệu. Nếu bạn không thể tự tin chạy các bản sao lưu mà không lấy hoặc gây ra sự cố ngừng hoạt động, đó là một vấn đề lớn. Chạy một số thử nghiệm để đảm bảo hiệu suất bị ảnh hưởng trong khi sao lưu đang diễn ra, sau đó giải thích rằng với nhiều hơn một lõi, vấn đề sẽ biến mất.


3
Trong thực tế, bất kỳ số lượng I / O nghiêm trọng nào cho dù SQL Server hay không liên quan đến SQL-Server đều có thể gây ra sự cố.
Max Vernon

3
@MaxVernon Hoàn toàn- Tôi chỉ đặc biệt đưa ra các bản sao lưu vì đó là vấn đề tôi đã xử lý trước đó (lúc 3 giờ sáng, giờ), thật dễ dàng để chứng minh và "chúng tôi không thể sao lưu mà không bị cúp!" nên đủ để thúc đẩy bất kỳ người quản lý cơ sở hạ tầng hợp lý nào để dự phòng một lõi bệnh sởi.
Neghtasro

2

Để cung cấp bằng chứng thuyết phục rằng máy chủ của bạn cần nhiều hơn một CPU, bạn sẽ cần cung cấp thông tin về khối lượng công việc và các truy vấn đang được chạy trên máy chủ. Ví dụ, nếu nó chỉ có một cơ sở dữ liệu dưới 100 MB và tất cả các truy vấn đều rất đơn giản và hiệu quả, thì hầu như không có lợi ích gì khi có nhiều lõi hơn.

Tôi khuyên bạn nên bắt đầu nắm bắt các kế hoạch truy vấn song song và thời gian cần thiết để hoàn thành chúng. Điều này sẽ chứng minh rằng khối lượng công việc chạy trên hệ thống sẽ được hưởng lợi từ việc có nhiều CPU.

Nếu nó đã được sản xuất trong môi trường VM, bạn cũng cần phải thu thập dữ liệu hiệu suất sử dụng CPU. Nếu bạn có thể chỉ ra rằng CPU đạt tối đa 100% trong thời gian dài, điều này cũng sẽ cung cấp bằng chứng tốt cho thấy hệ thống cần nhiều CPU hơn.


5
Tất nhiên, sẽ không có bất kỳ kế hoạch song song nào trên máy ảo đơn lõi. Bạn cần chụp các gói đó trên một hộp có nhiều lõi.
Max Vernon

3
Để thêm vào nhận xét của Max, nếu bạn nhìn vào kế hoạch XML trên một máy chủ có lõi đơn, bạn sẽ thấy NonParallelPlanReason="EstimatedDOPIsOne".
Erik Darling

@Tony tôi đã đã cung cấp cho họ một số dữ liệu nhưng được cho biết rằng một lõi đơn là một thực hành tốt nhất với một máy ảo. do đó tôi cần sự giúp đỡ!
Nợ

1
@Deb Oh my - chưa bao giờ nghe nói về thực hành tốt nhất đó! Tôi có thể nghe thấy tiếng kèn trombone buồn bã của Brent Ozar suốt từ đây. Tôi sẽ quan tâm đến việc ai đó đưa ra những tuyên bố như thế phụ trách cơ sở hạ tầng VM.
Tony Hinkle

@TonyHinkle - Tôi đồng ý. Một VM lõi đơn không bao giờ là một ý tưởng hay, hãy để một mình "thực hành tốt nhất". Ok, có thể 99,999% thời gian thay vì "không bao giờ": - /
Max Vernon

2

Có lẽ bạn nên hỏi họ tại sao họ khăng khăng rằng chỉ nên gán một lõi cho mỗi SQL Server VM.

Sau đó, tùy thuộc vào câu trả lời của họ, bạn có thể cố gắng thuyết phục họ dựa trên mục 3.3.2 trong liên kết này:

SqlServer-on-vmware-pratices

VMware khuyến nghị rằng, đối với kích thước ban đầu, tổng số vCPU được gán cho tất cả các VM không nhiều hơn tổng số lõi vật lý

Nếu mục đó không phải là lý do để nhóm cơ sở hạ tầng chỉ cung cấp 1 lõi cho mỗi VM, thì có thể nói, phần cứng đang bị lãng phí.


Không chắc làm thế nào báo giá giúp trường hợp cho nhiều CPU hơn ?
LowlyDBA

Có, nhưng không rõ ràng tại sao nhóm không yêu cầu không đặt thêm cpus cho mỗi VM.
Rogerlr
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.