yêu cầu bộ nhớ chung cho máy chủ sql 2008 r2


11

Tôi không có kinh nghiệm với công việc DBA, nhưng tôi đang cố gắng tạo ra một trường hợp để yêu cầu thêm tài nguyên cho máy chủ sql của chúng tôi và hy vọng tôi có thể có được một số người thông minh để đưa ra ước tính sơ bộ về những gì chúng ta nên chạy. Tôi nghi ngờ rằng việc phân bổ tài nguyên mà CNTT đã cung cấp cho máy chủ sql sản xuất của chúng tôi là thấp.

Phần cứng phần mềm:

Cơ sở dữ liệu: máy chủ sql 2008 r2 cơ sở dữ liệu doanh nghiệp

Windows: Windows 2008 r2 Enterprise 64 bit, khá chắc chắn chạy trên VMware.

Bộ xử lý: Intel (R) Xeon (R) CPU E7-4860 @ 2.27GHz 2.26 GHz (2 bộ xử lý)

Bộ nhớ đã cài đặt: 4GB

Ổ cứng cho tệp cơ sở dữ liệu: 300GB

Ổ cứng để sao lưu: 150GB

Ổ cứng để ghi nhật ký: 100GB

Ứng dụng:

Chúng tôi có 3 cơ sở dữ liệu chính bổ sung khoảng 170GB dữ liệu, cơ sở dữ liệu Dịch vụ báo cáo (SSRS) trên cùng một máy chủ chứa 10 báo cáo khác nhau (bao gồm trung bình 700 nghìn bản ghi mỗi tệp) được tạo hàng ngày. Cơ sở người dùng của chúng tôi có khoảng 20 người dùng đồng thời, có thể 5 trong số đó có thể được coi là "thâm dụng tài nguyên" với việc tạo ra các báo cáo lớn. Phần lớn người dùng tương tác với cơ sở dữ liệu thông qua trang web asp.net và trang web máy chủ Báo cáo. Ngoài ra, các nhà phát triển của chúng tôi sử dụng SSIS trong BIDS rộng rãi bằng cách từ xa trực tiếp lên máy chủ (tối đa 2 kết nối từ xa). Cuối cùng, chúng tôi có một hoạt động lưu trữ dữ liệu khá liên quan, có thể mang lại 3 triệu bản ghi mỗi ngày bằng các gói SSIS cũng chạy trên máy chủ.

Vấn đề hiện tại:

Chúng tôi có thời gian chờ máy chủ sever mãn tính và thời gian phản hồi trang web khá tệ. Tôi nghi ngờ dung lượng bộ nhớ chúng ta có (4GB) có lẽ là một nút cổ chai lớn. Các yêu cầu trước đây của chúng tôi về bộ nhớ bổ sung đã bị từ chối với phản hồi chung rằng chúng tôi cần thực hiện nhiều tối ưu hóa truy vấn hơn. Mặc dù chúng tôi không phải là ưu điểm của sql hoặc (như tôi chắc chắn bạn có thể biết bằng cách thiết lập của chúng tôi) db admin pros, tôi muốn đảm bảo rằng tôi sẽ không dành hết thời gian để cố gắng giảm hiệu năng tiềm năng nếu phần cứng là nút cổ chai.

Cảm ơn tất cả đã tránh tl; dr!


7
Họ mong đợi phục vụ 170 GB dữ liệu với 4 GB bộ nhớ? Không có điều chỉnh truy vấn sẽ khắc phục điều đó và họ ra khỏi cây của họ.
Aaron Bertrand

Chỉ cho họ những con số (chỉ số hiệu suất). Bạn cũng có thể hiển thị cho họ tài liệu Microsoft hiển thị bộ nhớ tối thiểu cho Window Server 2008 R2, là 4GB; điều này không để lại nhiều cho SQL Server.

2
Thống kê chờ đợi của bạn cho thấy gì? Tôi nghi ngờ bạn đang thấy rất nhiều PAGEIOLATCH_XX đang chờ các truy vấn của bạn. Nếu là bạn, bạn có thể sử dụng nó như một bằng chứng cho thấy một số bộ nhớ thêm sẽ có ích.
SQLRockstar

2
Và một trong những bạn có bộ nhớ, bạn có thể bắt đầu làm việc trên một hệ thống con IO tốt hơn. Hard DRIVE cho cơ sở dữ liệu được sử dụng tốt là một trò đùa IOPS. Đó phải là DRIVES. Bạn không mua ổ đĩa như dung lượng, đối với cơ sở dữ liệu bạn mua ổ đĩa dưới dạng nguồn IOPS. Điều đó có nghĩa là SSD 512gb sẽ tốt cho các tệp cơ sở dữ liệu. Tiêu chuẩn "cho phép nó lớn và rẻ" sẽ giết chết cơ sở dữ liệu.
TomTom

@TomTom Tôi chắc chắn (tôi hy vọng) chúng tôi có một mảng đột kích. Tôi không chắc làm thế nào để phát hiện ra nó mặc dù. Tôi chỉ dựa vào mô tả ổ cứng về những gì trình thám hiểm cửa sổ Máy tính đang hiển thị trên máy chủ windows.
RMuesi

Câu trả lời:


14

... Hy vọng tôi có thể có được ... một ước tính sơ bộ về những gì chúng ta nên chạy.

Không có thêm thông tin về các truy vấn và kích thước dữ liệu của bạn, thực sự rất khó để cung cấp cho bạn bất kỳ loại ước tính nào, chứ chưa nói đến ước tính chính xác.

Cơ sở dữ liệu: máy chủ sql 2008 r2 cơ sở dữ liệu doanh nghiệp

Windows: Windows 2008 r2 Enterprise 64 bit, khá chắc chắn chạy trên VMware.

Bộ xử lý: Intel (R) Xeon (R) CPU E7-4860 @ 2.27GHz 2.26 GHz (2 bộ xử lý)

Bộ nhớ đã cài đặt: 4GB

Hai bộ xử lý (tôi cho rằng điều này được phơi bày trong VM là 2 lõi) có thể hoặc không được cung cấp dưới mức. Các lõi được gán cho VM không nhất thiết phải ánh xạ trực tiếp vào lõi vật lý (hoặc thậm chí được phép sử dụng 100% lõi đơn khi cần!), Vì vậy bạn có thể thấy đây là tài nguyên linh hoạt hơn bộ nhớ. Nếu không có thêm thông tin nào về khối lượng công việc hoặc cấu hình phần cứng / ảo hóa của bạn, tôi sẽ nói rằng việc tăng lên 4 sẽ rất tốt.

Cấp phát bộ nhớ. Oh Boy. Đây là hiển nhiên dưới được cung cấp cho khối lượng công việc. Bản thân Windows cần tối thiểu 2-3 GB để luôn vui vẻ và mỗi trong số 2 người dùng chạy BIDS trên hộp sẽ cần ít nhất 500 MB mỗi cái. Và với điều đó, hộp đã được tối đa hóa và tôi thậm chí không bắt đầu tìm hiểu cơ sở dữ liệu sẽ cần bao nhiêu .

Phần lớn người dùng tương tác với cơ sở dữ liệu thông qua trang web asp.net và trang web máy chủ Báo cáo.

Bạn đã không nói, nhưng nếu những thứ này đang chạy trên cùng một hộp, thì cũng cần phải tính đến các yêu cầu về bộ nhớ cho chúng.

Cuối cùng, chúng tôi có một hoạt động lưu trữ dữ liệu khá liên quan, có thể mang lại 3 triệu bản ghi mỗi ngày bằng các gói SSIS cũng chạy trên máy chủ.

Giả sử điều này chạy vào ban đêm khi không có người dùng trực tiếp trên hệ thống, tôi không xem đây là sự cố trừ khi mất quá nhiều thời gian để chạy. Phần này của những điều là ít lo lắng nhất của bạn; người dùng trực tiếp là quan trọng hơn.

Các yêu cầu trước đây của chúng tôi về bộ nhớ bổ sung đã bị từ chối với phản hồi chung rằng chúng tôi cần thực hiện nhiều tối ưu hóa truy vấn hơn.

Như tôi đã trình bày ở trên, lượng bộ nhớ hiện tại được cung cấp là hoàn toàn không đủ. Tuy nhiên, đồng thời, ở đầu kia của quang phổ, cực kỳ khó có khả năng bạn sẽ có đủ bộ nhớ được cung cấp để có thể giữ toàn bộ cơ sở dữ liệu trong bộ nhớ cùng một lúc.

Mặc dù bạn đã nhận được phản hồi như vậy (nhân tiện, có lẽ có liên quan nhiều hơn đến mức độ thuyết phục của bạn đối với các tài nguyên bổ sung, và không phải là việc sử dụng tài nguyên thực tế ), rất có thể hiệu quả của cơ sở dữ liệu có thể được cải thiện. Tuy nhiên, không có số lượng điều chỉnh một mình có thể khắc phục các vấn đề bạn gặp phải bây giờ; gợi ý về điều đó là hoàn toàn không bắt đầu với tôi.

Tôi sẽ sử dụng cách tiếp cận tổng thể rằng lượng bộ nhớ hiện được cung cấp thấp hơn mức tối thiểu cần thiết (cần được sửa ASAP) và có thể cần thêm tài nguyên để cải thiện trải nghiệm người dùng đến mức có thể sử dụng được trong khi cải tiến được thực hiện để tăng hiệu quả các hệ thống.

Dưới đây là một vài suy nghĩ (theo thứ tự tấn công):

  • Bạn sẽ giành chiến thắng nếu bạn có thể chứng minh hiệu suất cải thiện bao nhiêu mỗi khi bạn nhận được nhiều tài nguyên hơn. Theo dõi các số liệu hiệu suất bằng cách sử dụng ghi nhật ký theo dõi hiệu suất (lưu ý: phần ghi nhật ký là rất quan trọng), bao gồm cả thời gian phản hồi của trang web nếu bạn có thể. Bắt đầu làm điều này bây giờ , trước khi làm bất cứ điều gì khác. Khi cuối cùng bạn cũng đạt được dung lượng bộ nhớ tối thiểu (bạn sẽ không nhận được 32 GB ngay lập tức), đột nhiên bây giờ bạn có bằng chứng cho thấy bộ nhớ được thêm vào đã cải thiện mọi thứ ... điều đó có nghĩa là thêm nhiều hơn nữa cũng có thể giúp ích! Nếu bạn không thu thập đường cơ sở trên cấu hình hiện tại, bạn sẽ bỏ lỡ chiếc thuyền khi mọi thứ được nâng lên đến mức tối thiểu được đề xuất.

  • Phân tích số liệu thống kê chờ máy chủ của bạn . Điều này sẽ cho bạn biết nút thắt lớn nhất trong hệ thống là gì. Bạn có thể có PAGEIOLATCH_XXthời gian chờ phổ biến nhất / cao nhất, cho biết quá nhiều I / O đang được thực hiện để tìm nạp các trang từ đĩa. Điều này có thể được giảm bớt bằng cách thêm bộ nhớ, do đó, I / O vật lý trở nên ít thường xuyên hơn vì dữ liệu cần thiết đã có trong bộ nhớ. Mặc dù phân tích này gần như là một kết luận bỏ qua, nhưng thực tế bạn đã thu thập các số liệu thống kê này mang lại cho bạn nhiều đạn hơn khi chứng minh sự cần thiết của tài nguyên.

  • Như tôi đã đề cập ở trên, yêu cầu tối thiểu cho bộ nhớ không được đáp ứng. Thu thập tập hợp các yêu cầu phần cứng được đề xuất cho tất cả phần mềm bạn đang chạy và cũng có thể chụp ảnh màn hình của Trình quản lý tác vụ. Chỉ riêng điều này là đủ để biện minh cho ít nhất 4-8 GB, ngay tại chỗ. Nếu họ vẫn từ chối, hãy cố gắng thuyết phục họ cho phép bạn dùng thử trong một tuần và trả lại sau đó (bạn đang thu thập số liệu thống kê hiệu suất, vì vậy bạn sẽ không cần phải trả lại vì giữa tuần bạn ' sẽ có thể chứng minh tình hình đã cải thiện bao nhiêu). Nếu họ vẫn từ chối, bạn sẽ bị thất bại; URLT .

  • Nếu bạn có thể giảm tải một số khối lượng công việc (đặc biệt, tránh từ xa nếu có thể), điều này sẽ tăng lượng bộ nhớ có sẵn cho cơ sở dữ liệu, điều này quan trọng hơn.

  • Bạn sẽ không thể điều chỉnh toàn bộ cơ sở dữ liệu trong bộ nhớ cùng một lúc, điều đó có nghĩa là bạn cần phải thiết lập cài đặt bộ nhớ tối đa của SQL Server rất cẩn thận để ngăn chặn quá mức bộ nhớ , điều này sẽ giết chết hiệu năng như mọi thứ khác . Over-commit thực sự thậm chí còn tệ hơn là không thể phù hợp với tất cả dữ liệu trong bộ nhớ. Rất có khả năng bạn đang ở trong kịch bản này ngay bây giờ đơn giản vì hoàn toàn không có bộ nhớ và có thể cài đặt bộ nhớ tối đa được đặt thành mặc định (không giới hạn).

  • Vì bạn đang chạy SQL Server Enterprise Edition và bộ nhớ ở mức cao, tôi sẽ cân nhắc mạnh mẽ việc thực hiện nén dữ liệu . Điều này sẽ đánh đổi sự gia tăng sử dụng CPU để tiết kiệm bộ nhớ (và do đó giảm truy cập đĩa, tương đối chậm).

  • Điều chỉnh cơ sở dữ liệu. Có khả năng các cấu trúc và truy vấn có thể sử dụng các cải tiến cho đến khi lập chỉ mục và các mẫu truy cập. Ngoài ra, nếu nhiều dữ liệu thường xuyên được quét và tổng hợp, việc tạo các chế độ xem được lập chỉ mục, bảng tóm tắt hoặc báo cáo được tính toán trước có thể rất hữu ích.

  • Đây có thể là một khoảng thời gian dài bởi vì nó có thể có nghĩa là cung cấp phần cứng nhiều hơn, nhưng thực hiện một giải pháp bộ đệm. Truy vấn nhanh nhất là một truy vấn bạn không bao giờ thực hiện .

Đó chỉ là một vài ý tưởng. Điểm mấu chốt là điều chỉnh một mình sẽ không giải quyết được các vấn đề ở đây, cũng như một mình phần cứng, mặc dù điều sau có lẽ sẽ làm giảm bớt phần lớn các vấn đề trước mắt. Đó thực sự là cách nó diễn ra: ném phần cứng vào vấn đề trong thời gian ngắn để dập tắt đám cháy và điều chỉnh vấn đề trong dài hạn để khắc phục nguyên nhân gốc rễ tốt nhất có thể.


1
John Tôi thích câu trả lời của bạn và +1 nhưng trong kịch bản này, có vẻ như bình luận của Aaron đã đánh vào đầu và họ chỉ cần thêm ram, bất kể họ cố gắng điều chỉnh nó đến mức nào.
Ali Razeghi

2
@Ali: Yep, tôi đồng ý, và tôi đã đề cập đến điều đó trong câu trả lời của mình. Chủ yếu tôi muốn tập trung vào các chiến lược để có thêm RAM, bởi vì đó dường như là vấn đề ở đây. (Nếu đơn giản là nó không có sẵn thì đó là một vấn đề riêng biệt.)
Jon Seigel

Cảm ơn rất nhiều cho câu trả lời chi tiết! Tôi mới bắt đầu điều chỉnh hiệu suất db vì vậy tôi chỉ đang cố gắng hiểu bắt đầu từ đâu. Tôi đã có một số tài liệu đọc và theo dõi hiệu suất, bây giờ tôi chỉ cần hiểu các số liệu. Nhưng đề xuất của bạn cung cấp một lộ trình tốt để tiếp cận vấn đề này. Cảm ơn một lần nữa.
RMuesi

@RMuesi: Bạn rất hoan nghênh. Nếu bạn có bất kỳ câu hỏi cụ thể nào về cách thực hiện những gì bạn cần làm, vui lòng đăng chúng (vui lòng tìm kiếm trước, tất nhiên) và cộng đồng sẽ sẵn lòng giúp đỡ.
Jon Seigel

9

Đây là sự điên rồ của tài khoản 'quầy đậu'. $ 1100- $ 2500 bạn sẽ chi cho RAM có thể tự trả lại trong vòng một tuần !

Họ đang dành thời gian cho 20 nhân viên và 5 người trong số họ đang làm công việc 'tốn nhiều tài nguyên'. Tôi tưởng tượng thời gian của họ không rẻ, và một số báo cáo đó là những báo cáo mà ông chủ không ký vào bảng lương sẽ yêu thích. Đó là hàng tấn chi phí lãng phí truyền lại và đối phó với sự thất vọng.

Giải thích với họ rằng họ có thể đang tìm kiếm $ 15- $ 20 một GB cho RAM. 128GB RAM sẽ vào khoảng $ 2200- $ 2500 ngay bây giờ và giá RAM hiện đã tăng lên một chút. Ngay cả khi bo mạch chủ máy chủ của bạn không thể hỗ trợ nó (đó là số lẻ), thì 64GB sẽ là $ 1100- $ 1200 (tôi mới kiểm tra và đó là chất lượng ram máy chủ từ Dell mà không áp dụng giảm giá). Chỉ cần 64GB ram cũng có thể tạo ra sự khác biệt lớn (đặc biệt nếu chúng ta đảm bảo tránh quét bảng của các bảng lớn).

Tìm hiểu xem đã lãng phí bao nhiêu thời gian và hỏi họ xem nó có đáng giá $ 1100- $ 2500 không. Nếu bạn chỉ chi 1100 đô la và nhận ram 64GB, hãy đảm bảo tránh quét bảng trên các bàn lớn. Sử dụng nhiều đĩa hơn với các chỉ mục (nếu bạn có độ trễ để hỗ trợ nó) để tránh quét lớn làm giảm bộ nhớ.


5
Vâng nói cho sự điên rồ. Bộ nhớ 4gb là ít hơn tôi sẽ đề nghị những ngày này cho một máy tính để bàn. Và hiện đang cố gắng chạy trong môi trường cơ sở dữ liệu 170gb. Đùa thôi. Nhưng này, ảo hóa cho các máy đếm tiền có nghĩa là bạn có thể thoát khỏi các máy chủ lớn đắt tiền;)
TomTom

2
Hoàn toàn đồng ý. Ít nhất các quầy đậu trong kịch bản OP đã lấy móng vuốt ra khỏi máy chủ vật lý (hy vọng!)
Ali Razeghi

1
tin điều đó Tôi không. TYPICAL sẽ là một máy chủ có nhiều RAM và - đĩa giá rẻ LAAAAARGE. Vì vậy, bạn có thể chạy rất nhiều máy ảo trên chúng. Rốt cuộc, RAM thường là yếu tố giới hạn, phải không?)? Kết quả sẽ là hiệu suất IOPS khó khăn - ngay cả khi không có cơ sở dữ liệu. Đã ở đó, thấy rằng. Bộ nhớ 64gb, 2tb phản chiếu đĩa SATA;)
TomTom

Cảm ơn câu trả lời. Tôi nghi ngờ rất nhiều nhưng chỉ không có dữ liệu để chứng minh vấn đề là bắt chước một phần cứng. Tôi đang làm việc trên đó bây giờ.
RMuesi

2
Bạn có thể muốn cho họ biết rằng SQL Server là một công cụ cơ sở dữ liệu trong bộ nhớ. Đọc từ đĩa, ngay cả SSD (mà tôi khá chắc chắn rằng cửa hàng này không sử dụng) rất chậm. Một lần đọc từ RAM mất khoảng 5ns. Chỉ cho họ một kế hoạch thực hiện với SET STATISTICSIO ON để hiển thị quét và đọc bảng. Chỉ cho họ đọc vật lý so với đọc hợp lý. Vật lý được tiến hành từ đĩa.
Ali Razeghi

-1

Tôi đang chạy 2008 R2 với 46GB Ram. Không có máy ảo. Máy chủ SQL 2008.

Cơ sở dữ liệu khoảng 300GB.

Tôi đặt cơ sở dữ liệu trên một ổ đĩa trạng thái rắn gần đây và tăng gấp ba lần đầu ra dữ liệu của tôi.

Máy chủ hiện đang sử dụng 45GB Ram và chạy tốt.

Đột kích FC Sata và Đột kích SAS SCSI. 26 ổ đĩa logic trong tất cả. 144 Đĩa quay.

Hôm qua tôi chỉ sử dụng 24GB ram khi tôi chỉ có 50TB ổ cứng đầy đủ được kết nối và truyền dữ liệu. Hôm nay tôi có 160TB ổ cứng đầy đủ và tôi đang sử dụng 45GB ram.

Ứng dụng của tôi không sử dụng hơn 400 MB ram.

Tôi nghi ngờ bạn cần cơ sở dữ liệu trên ổ đĩa trạng thái rắn nhanh hoặc ổ đĩa ram. Về cơ bản mặc dù bạn cần nhiều ram hơn.


IBM exFlash 400GB MCS $ 4400. Đó là nơi tôi sẽ đến.
david
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.