SQL Server Express cho cơ sở dữ liệu sản xuất?


14

Chúng tôi sắp triển khai một ứng dụng giao dịch nội bộ / web kép trong đó mỗi khách hàng có cơ sở dữ liệu riêng. Mỗi cơ sở dữ liệu rất nhỏ - mỗi cơ sở dưới 50 MB, vì vậy chúng tôi đã tự hỏi liệu có nên sử dụng SQL Express 2008 thay vì SQL Server đầy đủ hay không.

Điều này dường như có lợi thế của việc phân phối I / O đĩa trên các máy chủ trong khi tiết kiệm $$$ lớn (vì các ổ đĩa nhỏ 15K và máy chủ lõi kép đã qua sử dụng đều không tốn kém). Nếu tại một số thời điểm chúng tôi cần quá nhiều máy chủ, chúng tôi có thể nâng cấp lên SQL Server ... nhưng với hàng tá người dùng nội bộ, điều này có vẻ quá đắt ngay bây giờ (đặc biệt là vì chúng tôi cần một hộp chuyển đổi dự phòng).

Bộ nhớ 1GB và việc sử dụng 4 lõi trên một bộ xử lý không có vẻ quá hạn chế với kích thước cơ sở dữ liệu nhỏ của chúng tôi. Chúng tôi sẽ không bao giờ có nhiều hơn ~ 200 người dùng đồng thời và hầu hết các hoạt động sẽ có nhiều giao dịch hơn (dường như ưu tiên nhiều đĩa tốc độ cao hơn RAM / CPU nặng, phải không?)

Tôi có thiếu bất kỳ lợi thế nào của SQL Server Standard có thể chứng minh khoản đầu tư thêm $ 5-20K ban đầu không?

Câu trả lời:


17

Các phiên bản khác của máy chủ SQL giúp bạn có được những thứ như Tác nhân SQL để bạn có thể lên lịch bảo trì cơ sở dữ liệu và các công việc khác.

Miễn là cơ sở dữ liệu của bạn có thể phù hợp với các giới hạn của phiên bản Express, bạn sẽ ổn thôi.

Máy chủ SQL thích rất nhiều RAM. Càng nhiều càng tốt. Vì Máy chủ SQL không thể tải dữ liệu vào bộ đệm sẽ đặt tải bổ sung vào các đĩa. Bạn nên xem phiên bản Web hoặc phiên bản máy trạm của SQL Server. Những phiên bản này có giới hạn cao hơn phiên bản Express, nhưng chi phí thấp hơn Phiên bản tiêu chuẩn.

Nếu bạn bắt đầu với phiên bản Express, bạn luôn có thể nâng cấp sau lên Phiên bản Chuẩn sau khi bạn mua giấy phép.


+1 không thể thêm bất cứ điều gì khác vào phản hồi đó
Nick Kavadias

Tôi không nghĩ giấy phép nhóm làm việc và phiên bản web có thể được sử dụng cho các ứng dụng kinh doanh được lưu trữ bên ngoài.
Akash Kava

1
Giấy phép CPU có sẵn cho tất cả các phiên bản (ngoại trừ Express không cần giấy phép CPU), điều đó có nghĩa là bạn có thể sử dụng nó cho một trang web công khai. Đây là liên kết đến Giấy phép CPU nhóm làm việc bit.ly/KDLDR . Tôi không thể tìm thấy Phiên bản Web một cách dễ dàng, nhưng bất kỳ VAR nào cũng có thể cung cấp nó mà không cần phải tìm kiếm nhiều.
mrdenny

Tôi cũng đề nghị bắt đầu với một cái gì đó ở trên Express và đôi khi việc chuyển từ express sang bất kỳ phiên bản nào khác có thể khó khăn.
DanBig

3
SQL Express là công cụ chính xác giống như các phiên bản khác, chỉ có giới hạn kích thước. Chuyển từ Express sang phiên bản khác chỉ đơn giản là tách rời cơ sở dữ liệu từ phiên bản Express và gắn nó vào một phiên bản khác đang chạy phiên bản khác.
mrdenny

15

Một vài vấn đề sản xuất và cách giải quyết mà tôi gặp phải với phiên bản Express:

Sao lưu theo lịch trình

SSIS

  • SQL Express 2008 không có Trình hướng dẫn Nhập / Xuất Dữ liệu, nhưng thời gian chạy dtsexec của phiên bản Express sẽ không chạy tất cả các gói SSIS
  • Giải pháp thay thế: Bạn có thể phát triển các gói SSIS với phiên bản Nhà phát triển. Nếu bạn có một phiên bản Tiêu chuẩn trong mạng, bạn có thể lên lịch và chạy các gói SSIS từ nó. Bạn thậm chí có thể chạy các gói SSIS từ phiên bản dành cho nhà phát triển, miễn là nó không trái với giấy phép
  • Xem thêm:
    Tôi có thể chạy các gói SSIS với SQL Server 2008 Express / Web hoặc Workgroup
    SSIS với Sql Server 2005 express

Hồ sơ

  • Không có hồ sơ SQL
  • Giải pháp thay thế: hãy thử SqlProfiler For Express Edition
  • Hãy cẩn thận: Tôi không thấy nó luôn hữu ích trong việc giải quyết các trường hợp khẩn cấp sản xuất, như khi sqlexpress chiếm 100% công suất bộ xử lý máy chủ. Tôi không thể có được hồ sơ sản xuất bất kỳ dấu vết trong một trường hợp như vậy.
  • Xem thêm: Sử dụng profiler nào với sql express?

2
  1. Nếu bạn đọc Giấy phép Máy chủ SQL, bạn không cần phải mua giấy phép bổ sung cho máy chủ thụ động nếu nó chỉ được sử dụng cho chuyển đổi dự phòng và nó không phục vụ các truy vấn cho đến khi máy chủ đầu tiên của bạn bị lỗi.

  2. Chúng tôi đã sử dụng SQL Server Express khá lâu và MSDE tốt hơn và tốt hơn trước đó, chúng tôi có hơn 200 kết nối tương tự, nhưng chúng tôi chỉ có một cơ sở dữ liệu có kích thước 2GB và mọi thứ đều trơn tru. Chúng tôi không bao giờ có bất kỳ vấn đề nào với điều kiện chúng tôi tránh tham gia đắt tiền và chúng tôi lập chỉ mục tốt. Bây giờ chúng tôi đang sử dụng SQL Standard, nhưng cho đến khi kích thước cơ sở dữ liệu của bạn lớn hơn 4GB và số người dùng của bạn ít hơn 200-500, bạn chắc chắn có thể sống với SQL Express.

  3. SQL Server Express sử dụng ít bộ nhớ ~ 200MB trong khi phiên bản tiêu chuẩn khác sử dụng ~ 1,5 GB, có lẽ vì phiên bản tiêu chuẩn sẽ thực hiện nhiều bộ nhớ đệm. Các truy vấn của bạn sẽ chậm hơn trong Express sau vài mili giây so với phiên bản tiêu chuẩn. Thật không may, phiên bản Express không sử dụng cpus đa lõi (tính năng hạn chế), vì vậy nó sẽ không giúp ích nhiều cho dù bạn có 2 lõi hay 4 lõi.


Tôi nghĩ SSE 2008 đã sử dụng đa lõi (tối đa 4)?
bíp bíp

@LuckyLindy Standard sẽ sử dụng tối đa 4 ổ cắm, với nhiều lõi cho mỗi ổ cắm như bạn có.
mrdenny

"Nhưng cho đến khi kích thước cơ sở dữ liệu của bạn lớn hơn 4GB" 4GB là hạn chế cho mỗi trường hợp. Tôi không thể nhớ lại rằng có giới hạn về số lượng các trường hợp được sử dụng
Gennady Vanin Геннадий Внаин 26/8/2016

2

LuckyLindy - Tôi khuyến khích bạn dừng lại một chút và xác minh rằng bạn không cần Tác nhân SQL. Bạn đã viết:

Chúng tôi sắp triển khai một ứng dụng giao dịch nội bộ / web kép trong đó mỗi khách hàng có cơ sở dữ liệu riêng. Mỗi cơ sở dữ liệu rất nhỏ - mỗi cơ sở dưới 50 MB, vì vậy chúng tôi đã tự hỏi liệu có nên sử dụng SQL Express 2008 thay vì SQL Server đầy đủ hay không.

Kế hoạch của bạn để sao lưu là gì? Bạn không phải sử dụng Tác nhân SQL nhưng điều đó chắc chắn giúp cuộc sống của DBA dễ dàng hơn. Bạn có thể viết T-SQL / SMO / PowerShell / bất kỳ tập lệnh nào thực hiện sao lưu và sau đó thực thi thông qua sqlcmd hoặc PowerShell bằng cách sử dụng Tác vụ theo lịch trình.

Kế hoạch bảo trì cơ sở dữ liệu của bạn là gì? Theo thời gian, những cơ sở dữ liệu đó sẽ cần được phân mảnh và kiểm tra tính nhất quán. Phiên bản tiêu chuẩn có tất cả các loại quà tặng để làm điều này dễ dàng trong khi, trong Express, bạn phải làm việc (một lần nữa với các tác vụ theo kịch bản và theo lịch trình).

Làm thế nào bạn sẽ được thông báo về các vấn đề trên máy chủ? Đại lý giúp Cảnh báo thông báo cho bạn khi nhật ký đầy, đĩa đang đầy, v.v.


Đây là các nhiệm vụ loại DBA của SQL Server quan trọng. Đó là một điều để chạy Express cho một ứng dụng nội bộ nhưng một khi bạn bắt đầu nói với chúng tôi rằng bạn đang lưu trữ những thứ này cho khách hàng, tôi cảm thấy lo lắng :)


Phần 2 của phần này là hỏi bạn có bao nhiêu khách hàng bạn dự định hỗ trợ về việc này - cả khi ra mắt và sau một năm? Nếu bạn nói, "100 khách hàng", thì 100 cơ sở dữ liệu 50 MB sẽ không đủ trên Express - bạn chỉ không có đủ bộ nhớ. Heck - tùy thuộc vào số lượng delta bạn có, bạn có thể đạt tối đa 15 DB, tôi không biết.

Chúng tôi sẽ không bao giờ có nhiều hơn ~ 200 người dùng đồng thời và hầu hết các hoạt động sẽ có nhiều giao dịch hơn (dường như ưu tiên nhiều đĩa tốc độ cao hơn RAM / CPU nặng, phải không?)

Các hoạt động giao dịch như INSERT vẫn được ghi vào bộ nhớ, vì vậy đừng hy vọng rằng bạn cần ít hỗ trợ bộ nhớ hơn. Trên thực tế, tùy thuộc vào số lượng INSERT bạn làm, bạn có thể có nhu cầu bộ nhớ lớn hơn hầu hết với số lượng người dùng đó. Nếu bạn đang tải nhiều dữ liệu mà mọi người sẽ không thực sự sử dụng thì nó vẫn chiếm bộ nhớ. Bạn có thể gặp phải các vấn đề tranh chấp giữa "dữ liệu mà người dùng đang truy vấn thường xuyên" và "dữ liệu mà người dùng đang tải lên mà không ai sẽ truy vấn trong một thời gian". SQL bảo vệ chúng tôi bằng cách lưu giữ dữ liệu mọi người truy vấn thường xuyên hơn trong bộ nhớ lâu hơn nhưng bạn vẫn sẽ có sự tranh chấp.

Tại thời điểm này, tôi đang lan man lol. Và 200 người dùng đồng thời không kết hợp với tôi cho Express. Giả sử 64k là yêu cầu bộ nhớ kết nối trung bình, ứng dụng của bạn sẽ tạo ra bao nhiêu kết nối? Bạn sẽ sử dụng kết nối tổng hợp?

Nói chung, cảm giác ruột thịt của tôi khi đọc mô tả của bạn nói, "Không - Phiên bản Express không đủ mạnh." Và tôi ghét Phiên bản nhóm làm việc - nghĩ rằng đó là một thỏa thuận xấu - vì vậy Standard có vẻ đúng với tôi.


2
Scott - Câu trả lời tuyệt vời. Theo quan điểm của bạn ... SQL Server Express thực sự không có giới hạn kích thước lưu trữ trên các cơ sở dữ liệu, bạn chỉ không thể có một cơ sở dữ liệu với hơn 4GB dữ liệu. Khi thử nghiệm, tôi đã tạo 10.000 cơ sở dữ liệu 100 MB (1TB) trên một máy chủ và SQL Server Express chạy tốt. Ngoài ra, bộ nhớ liên quan đến mỗi kết nối không được tính vào tổng 1GB. Tôi đồng ý rằng việc quản lý tất cả các cơ sở dữ liệu này có thể hơi khó khăn ... nhưng vì chúng tôi thực sự có 1000 cơ sở dữ liệu, nên chúng tôi có thể sẽ cần các tập lệnh (dù sao tôi cũng không muốn chạm vào cơ sở dữ liệu trừ khi nó trở thành tham nhũng).
bíp bíp

+1, tôi đồng ý rằng đó là gr8 câu trả lời nhưng tôi cũng bỏ phiếu tán nó lên
Gennady Vanin Геннадий Ванин

1

Bạn đã cân nhắc sử dụng một trong những DBMS miễn phí (MySQL, PostreSQL ...) chưa? Điều đó sẽ làm giảm bớt mối quan tâm cấp phép của bạn?

Nếu đó không phải là một tùy chọn, SQL Server Express có vẻ như là một giải pháp tốt.


2
Chúng tôi thực sự đã chạy thử nghiệm hiệu năng đối với tất cả các cơ sở dữ liệu chính trong năm ngoái - MySQL, PostgreSQL, Firebird, DB2, Oracle, SQL Server, SQL Server Express và SQL Desktop. Chúng tôi thấy rằng DB2, Oracle và SQL Server (và Express, nhưng không phải Desktop) đã thổi bay MySQL và PostgreQuery trên Windows cho các hoạt động giao dịch của chúng tôi - với hệ số 2. 1/2 hiệu suất có nghĩa là gấp đôi số máy chủ. Khi được lưu trữ trên Linux, MySQL và PostgreSQL đã làm tốt hơn một chút, nhưng vẫn không ngang bằng.
bíp bíp

1

Nó chắc chắn có thể được sử dụng cho các ứng dụng sản xuất quan trọng. Chúng tôi đã sử dụng nó tại hơn 1500 phòng khám chăm sóc sức khỏe với tất cả các phiên bản SQL Server Express được cài đặt để xử lý hàng triệu giao dịch mỗi ngày. Bạn có thể dễ dàng khắc phục nhược điểm của SQL Server Agent bằng cách sử dụng một trong các cách sau:

  1. Sản phẩm của bên thứ ba như SQLAutomate
  2. Bộ lập lịch tác vụ Windows
  3. Phiên bản SQL Server tiêu chuẩn hoặc doanh nghiệp có khả năng máy chủ chính được cài đặt 1 và 2 có chi phí rất thấp hoặc miễn phí. 3 là đắt tiền trừ khi bạn đã có sẵn trong môi trường của bạn.

Xem bản trình bày tuyệt vời của Michael Otey (google nó) về "Sử dụng SQL Server Express trong sản xuất".


Đó thực sự là một bài viết 7 năm tuổi :)
BaronSamedi1958
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.