SQL Server Express dla produkcyjnych baz danych?

14

Wkrótce uruchomimy podwójną internetową / wewnętrzną aplikację transakcyjną, w której każdy klient ma własną bazę danych. Każda baza danych jest bardzo mała - poniżej 50 MB, więc zastanawialiśmy się, czy warto używać SQL Express 2008 zamiast pełnego SQL Server.

Wydaje się, że ma to tę zaletę, że rozprowadza dyskowe operacje we / wy między serwerami, jednocześnie oszczędzając ogromne $$$ (ponieważ małe dyski 15K i używane dwurdzeniowe serwery są niedrogie). Jeśli w pewnym momencie potrzebujemy zbyt wielu serwerów, możemy uaktualnić do SQL Server ... ale z dziesiątkami wewnętrznych użytkowników wydaje się to po prostu zbyt drogie (szczególnie, że potrzebowalibyśmy przełączania awaryjnego).

Pamięć 1 GB i użycie 4 rdzeni na jednym procesorze nie wydaje się zbyt restrykcyjne, biorąc pod uwagę nasze małe rozmiary bazy danych. Nigdy nie będziemy mieć więcej niż ~ 200 równoczesnych użytkowników, a większość operacji będzie bardziej transakcyjna (co wydaje się faworyzować wiele dysków o dużej prędkości w stosunku do dużej pamięci RAM / procesora, prawda?)

Czy brakuje mi jakichkolwiek zalet SQL Server Standard, które mogłyby początkowo uzasadnić dodatkową inwestycję w wysokości 5-20 000 USD?

Sygnał dźwiękowy
źródło

Odpowiedzi:

17

Inne wersje serwera SQL dostarczają takich rzeczy, jak SQL Agent, dzięki czemu można zaplanować konserwację bazy danych i inne zadania.

Tak długo, jak baza danych będzie w stanie zmieścić się w granicach wersji Express, wszystko będzie dobrze.

Serwer SQL lubi dużo pamięci RAM. Im więcej tym lepiej. Ponieważ SQL Server nie może załadować danych do pamięci podręcznej, co spowoduje dodatkowe obciążenie dysków. Powinieneś spojrzeć na wersję Web Edition lub Workstation programu SQL Server. Te edycje mają wyższe limity niż edycja Express, ale kosztują mniej niż edycja standardowa.

Jeśli zaczniesz od wersji Express, zawsze możesz uaktualnić do wersji Standard po zakupie licencji.

mrdenny
źródło
+1 nie może dodać nic więcej do tej odpowiedzi
Nick Kavadias
Nie sądzę, aby licencja na grupę roboczą i na wersję internetową mogła być używana w zewnętrznych aplikacjach biznesowych.
Akash Kava,
1
Licencje na procesor są dostępne dla wszystkich wydań (z wyjątkiem Express, które nie wymagają licencji na procesor), co oznacza, że ​​można go używać w publicznej witrynie internetowej. Oto link do licencji Workgroup CPU bit.ly/KDLDR . Nie mogłem łatwo znaleźć Web Edition, ale każdy VAR powinien być w stanie go zapewnić bez większego rozglądania się.
mrdenny
Sugeruję również, aby zacząć od czegoś powyżej Express, a przejście z ekspresu do dowolnej innej edycji może być czasami trudne.
DanBig,
3
SQL Express to dokładnie ten sam silnik, co inne edycje, tylko z ograniczeniami wielkości. Przejście z Express do innej edycji polega po prostu na odłączeniu bazy danych od edycji Express i dołączeniu jej do innej instancji z inną edycją.
mrdenny,
15

Kilka problemów z produkcją i obejść, które miałem z edycją Express:

Zaplanowane kopie zapasowe

SSIS

Profilowy

  • Brak profilera SQL
  • Obejście: wypróbuj SqlProfiler dla wersji Express Edition
  • Zastrzeżenie: nie zawsze uważałem, że jest to przydatne w rozwiązywaniu problemów związanych z produkcją, na przykład gdy sqlexpress zajmuje 100% pojemności procesora serwera. Nie mogłem zmusić profilera do wygenerowania żadnego śladu w jednym takim przypadku.
  • Zobacz także: Jakiego profilera używać z SQL Express?
Mika
źródło
2
  1. Jeśli czytasz licencję SQL Server, nie musisz kupować dodatkowej licencji na serwer pasywny, jeśli jest on używany wyłącznie do przełączania awaryjnego i nie obsługuje zapytań do czasu awarii pierwszego serwera.

  2. Używamy programu SQL Server Express od dość dawna i jest on dobry i znacznie lepszy niż wcześniejszy MSDE, mamy ponad 200 równoczesnych połączeń, ale mamy tylko jedną bazę danych o wielkości 2 GB i wszystko jest płynne. Nigdy nie mieliśmy żadnych problemów, pod warunkiem, że unikamy kosztownych połączeń i dobrze indeksujemy. Teraz używamy SQL Standard, ale dopóki rozmiar bazy danych nie przekroczy 4 GB, a liczba użytkowników nie przekroczy 200-500, z pewnością możesz żyć z SQL Express.

  3. SQL Server Express zużywa niewiele mniej pamięci ~ 200 MB, podczas gdy w innym przypadku Standardowa wersja zajmuje ~ 1,5 GB, prawdopodobnie dlatego, że standardowa edycja będzie dużo buforować. Twoje zapytania będą wolniejsze w Express za kilka milisekund w porównaniu do standardowej edycji. Niestety, wersja Express nie korzysta z procesorów wielordzeniowych (to ograniczona funkcja), więc nie będzie wielkiej pomocy, niezależnie od tego, czy masz 2 rdzenie czy 4 rdzenie.

Akash Kava
źródło
Myślałem, że SSE 2008 używa wielu rdzeni (do 4)?
Sygnał dźwiękowy
@LuckyLindy Standard użyje do 4 gniazd, z wieloma rdzeniami na gniazdo, jak masz.
mrdenny,
„ale dopóki rozmiar bazy danych nie przekroczy 4 GB” ograniczenie to 4 GB na jedną instancję. Nie mogę sobie przypomnieć, że istnieje ograniczenie liczby używanych wystąpień
Gennady Vanin Геннадий Ванин
2

LuckyLindy - zachęcam do zatrzymania się na sekundę i sprawdzenia, czy nie potrzebujesz agenta SQL. Napisałeś:

Wkrótce uruchomimy podwójną internetową / wewnętrzną aplikację transakcyjną, w której każdy klient ma własną bazę danych. Każda baza danych jest bardzo mała - poniżej 50 MB, więc zastanawialiśmy się, czy warto używać SQL Express 2008 zamiast pełnego SQL Server.

Jaki masz plan tworzenia kopii zapasowych? Nie musisz używać agenta SQL, ale z pewnością ułatwia to życie DBA. Możesz napisać skrypty T-SQL / SMO / PowerShell / cokolwiek innego, które wykonują kopie zapasowe, a następnie wykonać je za pomocą narzędzia sqlcmd lub PowerShell przy użyciu zaplanowanego zadania.

Jaki masz plan utrzymania bazy danych? Z czasem te bazy danych będą musiały zostać zdefragmentowane i sprawdzone pod kątem spójności. Wersja standardowa zawiera wiele dodatków ułatwiających to, podczas gdy w Expressie musisz pracować (ponownie ze skryptami i zaplanowanymi zadaniami).

Jak otrzymasz powiadomienie o problemach na serwerze? Agent pomaga tutaj z alertami, aby powiadomić cię, gdy dziennik się zapełnia, dysk się zapełnia itp.


Są to krytyczne zadania typu SQL Server DBA. Ekspresową aplikacją wewnętrzną jest jedna rzecz, ale kiedy zaczniesz mówić nam, że udostępniasz je klientom, martwię się :)


W drugiej części tego pytania pytasz, ilu klientów zamierzasz w tym wspierać - zarówno na początku, jak i po roku? Jeśli powiesz „100 klientów”, wówczas 100 baz danych 50 MB nie wystarczy w Express - po prostu nie masz wystarczającej ilości pamięci. Do licha - w zależności od tego, ile masz delty, możesz osiągnąć maksimum przy 15 DB, nie wiem.

Nigdy nie będziemy mieć więcej niż ~ 200 równoczesnych użytkowników, a większość operacji będzie bardziej transakcyjna (co wydaje się faworyzować wiele dysków o dużej prędkości w stosunku do dużej pamięci RAM / procesora, prawda?)

Operacje transakcyjne, takie jak INSERT, są nadal zapisywane w pamięci, więc nie oczekuj, że potrzebujesz mniejszej obsługi pamięci. W rzeczywistości, w zależności od liczby wykonywanych WSTAWEK, możesz potrzebować większej ilości pamięci niż większość z tą liczbą użytkowników. Jeśli ładujesz dużo danych, których ludzie tak naprawdę nie będą używać, to nadal zajmuje pamięć. Możesz napotkać problemy sporne między „danymi, które użytkownicy często odpytują”, a „danymi, które ładują użytkownicy, których przez chwilę nikt nie będzie pytał”. SQL chroni nas, chroniąc dane, które ludzie częściej wyszukują w pamięci dłużej, ale nadal będziesz mieć spory.

W tym momencie wędruję lol. A 200 współbieżnych użytkowników nie chce się ze mną bawić w Express. Powiedzmy, że 64k to średnie zapotrzebowanie na pamięć połączenia, ile połączeń wykonają Twoje aplikacje? Czy użyjesz puli połączeń?

Podsumowując, moje przeczucie po przeczytaniu twojego opisu mówi: „Nie - Express Edition po prostu nie jest wystarczająco potężny”. I nienawidzę Workgroup Edition - myślę, że to zły interes - więc Standard wydaje mi się odpowiedni.

Scott Whigham
źródło
2
Scott - Świetna odpowiedź. Do rzeczy ... SQL Server Express nie ma limitu wielkości pamięci w bazach danych, po prostu nie możesz mieć jednej bazy danych z więcej niż 4 GB danych. Jako test utworzyłem 10 000 100 MB baz danych (1 TB) na jednym serwerze, a SQL Server Express działał dobrze. Ponadto pamięć związana z każdym połączeniem nie jest wliczana do łącznej liczby 1 GB. Zgadzam się, że zarządzanie wszystkimi tymi bazami danych może być trochę uciążliwe ... ale ponieważ faktycznie będziemy mieć 1000 baz danych, prawdopodobnie i tak potrzebowalibyśmy skryptów (nie ma mowy, żebym chciał ręcznie dotknąć bazy danych, chyba że stanie się skorumpowany).
Sygnał dźwiękowy
+1, zgadzam się, że to była odpowiedź gr8, ale też ją głosowałem
Gennady Vanin Геннадий Ванин
1

Czy rozważałeś użycie jednego z darmowych DBMS (MySQL, PostreSQL ...)? To rozwiałoby twoje obawy związane z licencjonowaniem?

Jeśli nie jest to opcja, SQL Server Express wydaje się dobrym rozwiązaniem.

Śleske
źródło
2
W zeszłym roku przeprowadziliśmy testy wydajności dla wszystkich głównych baz danych - MySQL, PostgreSQL, Firebird, DB2, Oracle, SQL Server, SQL Server Express i SQL Desktop. Okazało się, że DB2, Oracle i SQL Server (i Express, ale nie Desktop) zdmuchnęły MySQL i PostgreSQL w systemie Windows do naszych operacji transakcyjnych - 2 razy. 1/2 wydajności oznacza dwukrotność liczby serwerów. Hostowane w systemie Linux MySQL i PostgreSQL działały trochę lepiej, ale nadal nie były na równi.
Sygnał dźwiękowy
1

Z pewnością można go wykorzystać do znaczących zastosowań produkcyjnych. Korzystaliśmy z niego w ponad 1500 klinikach opieki zdrowotnej z osobnymi instancjami SQL Server Express, które przetwarzają miliony transakcji każdego dnia. Możesz łatwo ominąć wadę SQL Server Agent, korzystając z jednej z następujących czynności:

  1. Produkt innej firmy, taki jak SQLAutomate
  2. Harmonogram zadań systemu Windows
  3. Wersja SQL Server Standard lub Enterprise z zainstalowaną funkcją serwera głównego 1 i 2 są bardzo tanie lub bezpłatne. 3 jest drogi, chyba że masz go już w swoim środowisku.

Zobacz doskonałą prezentację Michaela Oteya (google it) na temat „Korzystanie z SQL Server Express w produkcji”.

pacificwinter
źródło
To był post z 7 lat :)
BaronSamedi1958