Wątek przeniesiony 2018-11-26 09:37 z Hardware/Software przez Ktos.

MSSQL Standard vs Express

0

Witam.
Nie jestem pewny czy to dobry dział. Nie mam problemu z zapytaniem, a raczej z wersją oprogramowania. Tyle co w tabelkach MS to sobie poczytałem, ale interesuje mnie czy jest różnica w prędkości wykonywania standardowych operacji SELECT INSERT UPDATE DELETE? Jak w przypadku exec sp_executesql?
Takie systemy jak Comarch Optima pracują na wersji Express, zauważe różnicę jeśli zainstaluje standard w ładowaniu dokumentów, dodawaniu itp itd?

4

To zależy od wersji/generacji SQL, którego używasz.

Zasadniczo to główne ograniczenia SQL w wersji darmowej dotyczą ilości rdzeni, RAM oraz rozmiaru instancji bazy. Jeśli nie masz obecnie swojej bazy mocno obciążonej, to upgrade wiele Ci nie da, zresztą najczęściej powodem robienia upgrade na wersję płatną nie jest słaba wydajność, ale zwyczajny brak miejsca na bazę. Pytanie - dlaczego chcesz/zastanawiasz się nad przejściem na wersję płatną? Czy coś się dzieje, czy po prostu rozważasz opcje tak na wszelki wypadek?

Pamiętaj też, że wprawdzie sam SQL ma limit na pamięć, ale dobrze, żeby serwer, na którym SQL stoi miał zapas pamięci - w ten sposób nie będzie się męczyć i dusić. Tak samo wymiana dysków na SSD dużo da - pewien czas temu na jedym z serwerów SQL w firmie zmieniliśmy dyski na RAID z SSD i od razu dało się odczuć różnicę w pracy całego SQL'a.

Tutaj masz porównanie ograniczeń wersji Express dla poszczególnych "roczników":

screenshot-20181126103301.png

oraz jeszcze bardziej szczegółowy link do poczytania dla zainteresowanych - https://docs.microsoft.com/en-us/sql/sql-server/editions-and-components-of-sql-server-2017?view=sql-server-2017

2

Gdy baza zbliża się do 10GB, czuć, że dla kwerend czy aktualizacji pracuje tylko 1GB RAM. Choćby maszyna miała 32GB, tylko tyle pracuje na rzecz SQLa.
Postaw sobie wersję 90dniową developerską, na dużej bazie poczuje jaki jest "błysk ciupagi" gdy ramu użyje np 24GB

0

Mam bazy danych, które mają bardzo dużo dokumentów, towarów co powoduje, że plik .mdf bazy puchnie. Pytam, ponieważ potrzebuje informacji od ekspertów czy warto inwestować w wersje standard, bo jest bardzo droga. Mam może trzech takich klientów z Comarch Optima, w których plik .mdf ma ponad 5GB, jeden z nich ma nawet 11GB. Owszem, dane są zawężane w systemie do dat, rodzajów, typów itp itd, że nie ładują się wszystkie pozycje, ale chwilę to trwa w niektórych przypadkach. Stąd pytanie czy to kwestia ograniczeń wersji Express.

Czysto hipotetycznie - jeśli zapytanie na 100 dokumentów potrzebuje 150MB RAM w wersji Express, to tak samo będzie potrzebować 150MB RAM w wersji Standard, ale... Jeśli baza ma 10GB, to nie będzie działała "w pełni" na Express bo jest za duża, czyli 150MB RAM będzie mi się ładowało dłużej niż przy wersji Standard? Czy problem leży głównie w ograniczeniu pamięci RAM i wielkość bazy nie wpływa na pracę programu?

1

Tak w dużym uproszczeniu - jeśli aktualnie baza nie pochłania 70-80% dostępnych zasobów, to znaczy że nie dusi się. W związku z tym robienie jej upgrade nie ma większego sensu, raczej nie odczujesz znaczącej różnicy. Sam select jest wykonywany tak samo na bazie darmowej, jak i płatnej. Jedynie z racji ograniczenia zasobów, jego wykonanie może trwać trochę dłużej, bo np. baza nie mieści się do RAM i musi rzeźbić po dysku. Ale musiałbyś sobie sprawdzić, jakiej wielkości jest baza, jak mocno obciąża CPU i ile RAM pożera, bo być może wersja bez ograniczeń wcale nic nie da. Na pewno wymiana dysków na SSD powinna poprawić sytuację (a w najgorszym razie - na pewno nie zaszkodzi) - ta uwaga dotyczy zarówno wersji Express, jak i komercyjnej.

Oczywiście to wszystko to takie dywagacje na sucho. Najlepiej, jakbyś zrobił tak, jak napisał @AnyKtokolwiek i pobrał sobie wersję testową. Instalujesz ją na jakiejś innej maszynie, przenosisz bazę i obserwujesz, czy widać różnice - https://www.microsoft.com/en-us/sql-server/sql-server-downloads#

1

Dodam tylko, że czasami zbliżając się do limitu nie zrobimy reindeksacji bo odbudowa indeksów spowoduje taki rozrost pliku mdf, że serwer rzuci wyjątkiem, to moment w którym należ mocno zastanowić się o przejściu na pełną wersje.

Dodatkowo wersja Express to nie tylko jak się utorało max 10 GB plik mdf i 1 GB RAM (od wersji 2016 to 1,4 GB) to brak także innych rzeczy np. agenta, więcej szczegółów masz tu:
http://expressdb.io/sql-server-express-feature-comparison/

0

Wersja Express ma dwie duże zalety: jest darmowa i można ją zainstalować na wersji desktopowej Windows
Na tym zalety się kończą, ale w wielu drobnych projektach to zupełnie wystarczy
Wady to przede wszystkim ograniczenie co do ilości wykorzystywanych zasobów (ilości procesorów i ograniczona wielkość samej bazy). Brak agenta też utrudnia życie

0

Zgadza się, ale OP położył nacisk na wydajność i prędkość działania. Z tego co wiem (jeśli pisze teraz głupoty to proszę mnie poprawić) agent nie ma za wiele wspólnego z wydajnością. A sam mechanizm obsługi zapytania jest taki sam dla wersji free oraz płatnej.

1

Odpowiem postem bo w komentarzu się nie zmieszczę.

@cerrato masz racje mechanizm jest dokładnie ten sam, bo to jest ten sam produkt, ograniczony tylko zasobami, jednak należy pamiętać że te zasoby maja znaczenie, w dużym uproszczeniu wersja standard będzie szybsza, bo ma tych zasobów więcej. I to przy bazach trochę większych jest odczuwalne, oczywiście nie jest to jakiś mega boost, ale jest.

@AnyKtokolwiek nie wiem o czym piszesz z tym explain bo o ile od wersji 2012 explain jest dodane do składni tsql to nie dotyczy to produktów SQL Server "stacjonarnych", a Azure SQL Data Warehouse i Parallel Data Warehouse, więc tu upgrade do pełnej wersji wiele nie wnosi. Nic jednak nie stoi na przeszkodzie, aby używać:

SET SHOWPLAN_ALL
SET SHOWPLAN_XML
SET SHOWPLAN_TEXT

Mozna używać profilera, także to nie jest jakiś argument przeciw.

0

Próbował ktoś może zainstalować RAM-dysk?
Po to by trzymać w nim tabele temp. Certyfikowany pod WindowsServer to koszt ok. 300 USD, są też tańsze.
Wydaje mi się, że ma to sens w przypadku gdy aplikacja korzysta np. z procedur wbudowanych a te z tablic #temp, serwer ma zapas pamięci.
No i SQL Express.
Wydaje mi, ale doświadczeń nie mam, stąd pytanie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1