SQL Server Express per database di produzione?


14

Stiamo per implementare una doppia applicazione transazionale web / interna in cui ogni client ha il proprio database. Ogni database è molto piccolo, con meno di 50 MB ciascuno, quindi ci chiedevamo se avrebbe senso usare SQL Express 2008 anziché l'intero SQL Server.

Questo sembra avere i vantaggi di distribuire l'I / O su disco tra server, risparmiando ingenti prezzi (dal momento che piccole unità da 15K e server dual core usati sono entrambi economici). Se a un certo punto abbiamo bisogno di troppi server, possiamo eseguire l'aggiornamento a SQL Server ... ma con dozzine di utenti interni, questo sembra semplicemente troppo costoso in questo momento (soprattutto perché avremmo bisogno di una scatola di failover).

1 GB di memoria e l'utilizzo di 4 core su un singolo processore non sembrano troppo restrittivi a causa delle dimensioni ridotte del nostro database. Non avremo mai più di ~ 200 utenti simultanei e la maggior parte delle operazioni sarà più transazionale (il che sembra favorire molti dischi ad alta velocità su RAM / CPU pesanti, giusto?)

Mi manca qualche vantaggio di SQL Server Standard che potrebbe inizialmente giustificare l'investimento aggiuntivo di $ 5-20K?

Risposte:


17

Le altre edizioni di SQL Server offrono cose come SQL Agent in modo da poter pianificare la manutenzione del database e altri lavori.

Finché il tuo database può adattarsi ai limiti dell'edizione Express, starai bene.

Al server SQL piace molta RAM. Più meglio è. Poiché SQL Server non è in grado di caricare i dati nella cache, questo caricherà ulteriormente i dischi. È necessario esaminare l'edizione Web o Workstation di SQL Server. Queste edizioni hanno limiti più alti rispetto all'edizione Express, ma costano meno dell'edizione standard.

Se si inizia con l'edizione Express, è sempre possibile aggiornare in seguito all'edizione standard dopo aver acquistato la licenza.


+1 non può aggiungere nient'altro a quella risposta
Nick Kavadias,

Non credo che il gruppo di lavoro e la licenza per l'edizione web possano essere utilizzati per app aziendali ospitate esterne.
Akash Kava,

1
Le licenze CPU sono disponibili per tutte le edizioni (tranne Express che non necessita di una licenza CPU), il che significa che è possibile utilizzarlo per un sito Web pubblico. Ecco il link alla licenza Bit.ly/KDLDR della CPU del gruppo di lavoro . Non riuscivo a trovare facilmente la Web Edition, ma qualsiasi VAR dovrebbe essere in grado di fornirla senza guardarsi intorno.
mrdenny,

Suggerisco anche di iniziare con qualcosa sopra Express, e a volte passare da express a qualsiasi altra edizione può essere difficile.
DanBig

3
SQL Express è lo stesso motore esatto delle altre edizioni, con solo limiti di dimensione. Passare da Express a un'altra edizione è semplicemente una questione di staccare il database dalla versione Express e collegarlo a un'altra istanza che esegue un'altra edizione.
mrdenny,

15

Alcuni problemi di produzione e soluzioni alternative che ho riscontrato con l'edizione Express:

Backup pianificati

SSIS

  • SQL Express 2008 dispone della procedura guidata di importazione / esportazione dei dati, ma il runtime dtsexec di Express Edition non eseguirà tutti i pacchetti SSIS
  • Soluzione alternativa: è possibile sviluppare pacchetti SSIS con l'edizione per sviluppatori. Se si dispone di un'edizione standard nella rete, è possibile pianificare ed eseguire pacchetti SSIS da essa. Puoi persino eseguire pacchetti SSIS dall'edizione per sviluppatori, purché non sia contrario alla licenza
  • Vedere anche:
    Posso eseguire pacchetti SSIS con SQL Server 2008 Express / Web o Workgroup
    SSIS con SQL Server 2005 express

profiling

  • Nessun profiler SQL
  • Soluzione alternativa: provare SqlProfiler per Express Edition
  • Avvertenza: non l'ho trovato sempre utile per risolvere le emergenze di produzione, come quando sqlexpress occupa il 100% della capacità del processore del server. Non sono riuscito a convincere il profiler a produrre alcuna traccia in uno di questi casi.
  • Vedi anche: Quale profiler usare con sql express?

2
  1. Se si legge la licenza di SQL Server, non è necessario acquistare una licenza aggiuntiva per il server passivo se viene utilizzato esclusivamente per il failover e non risponde alle query fino a quando il primo server non riesce.

  2. Abbiamo usato SQL Server Express per un periodo piuttosto lungo, ed è buono e molto meglio di MSDE precedente, abbiamo più di 200 connessioni simulatene, ma abbiamo solo un database di dimensioni 2 GB e tutto è liscio. Non abbiamo mai avuto problemi a condizione che evitiamo join costosi e facciamo una buona indicizzazione. Ora stiamo usando SQL Standard, ma fino a quando le dimensioni del tuo database sono superiori a 4 GB e il tuo numero di utenti è inferiore a 200-500, puoi sicuramente vivere con SQL Express.

  3. SQL Server Express utilizza un po 'meno spazio di memoria ~ 200 MB, mentre in altri casi la versione Standard utilizza ~ 1,5 GB, probabilmente perché la versione standard farà molta cache. Le tue query saranno più lente in Express in pochi millisecondi rispetto all'edizione standard. Purtroppo Express Edition non usa cpus multi core (questa è una funzione limitata), quindi non sarà di grande aiuto se hai 2 core o 4 core.


Pensavo che SSE 2008 usasse multi-core (fino a 4)?
Segnale acustico

@LuckyLindy Standard utilizzerà fino a 4 socket, con molti core per socket.
mrdenny,

"ma fino a quando la dimensione del tuo database è superiore a 4 GB" 4 GB è la limitazione per un'istanza. Non ricordo che ci siano restrizioni sul numero di istanze usate
Gennady Vanin Геннадий Ванин,

2

LuckyLindy - Ti incoraggio a fermarti per un secondo e verificare che non hai bisogno di SQL Agent. Hai scritto:

Stiamo per implementare una doppia applicazione transazionale web / interna in cui ogni client ha il proprio database. Ogni database è molto piccolo, con meno di 50 MB ciascuno, quindi ci chiedevamo se avrebbe senso usare SQL Express 2008 anziché l'intero SQL Server.

Qual è il tuo piano per i backup? Non è necessario utilizzare SQL Agent, ma sicuramente semplifica la vita di un DBA. È possibile scrivere T-SQL / SMO / PowerShell / qualunque script esegua i backup e quindi eseguirlo tramite sqlcmd o PowerShell utilizzando un'attività pianificata.

Qual è il tuo piano per la manutenzione del database? Nel tempo, tali database dovranno essere deframmentati e verificati per coerenza. La Standard Edition ha tutti i tipi di chicche per renderlo facile mentre, in Express, devi lavorare (sempre con gli script e le attività pianificate).

Come verrai informato dei problemi sul server? L'agente aiuta qui con avvisi per avvisarti quando un registro si sta riempiendo, un disco si sta riempiendo, ecc.


Queste sono attività critiche di tipo DBA di SQL Server. Una cosa è eseguire Express per un'app interna, ma una volta che inizi a dirci che li stai ospitando per i clienti, mi preoccupo :)


La seconda parte ti sta chiedendo quanti clienti prevedi di supportare su questo - sia al lancio che dopo un anno? Se dici "100 client", 100 Express 50 database non saranno sufficienti su Express: non hai abbastanza memoria. Diamine - a seconda di quanto delta hai, potresti raggiungere un massimo di 15 DB, non lo so.

Non avremo mai più di ~ 200 utenti simultanei e la maggior parte delle operazioni sarà più transazionale (il che sembra favorire molti dischi ad alta velocità su RAM / CPU pesanti, giusto?)

Le operazioni transazionali come INSERT sono ancora scritte nella memoria, quindi non aspettarti di aver bisogno di meno supporto di memoria. In effetti, a seconda di quanti INSERT fai, potresti avere maggiori esigenze di memoria rispetto alla maggior parte con quel numero di utenti. Se stai caricando molti dati che le persone non useranno davvero, occuperà comunque memoria. Potresti incorrere in problemi di contesa tra "dati che gli utenti richiedono frequentemente" e "dati che gli utenti stanno caricando e nessuno eseguirà query per un po '". SQL ci protegge preservando i dati che le persone interrogano più frequentemente nella memoria più a lungo, ma avrai ancora contese.

A questo punto, sto vagando lol. E 200 utenti simultanei non si agitano con me neanche per Express. Diciamo che 64k è il requisito medio di memoria di connessione, quante connessioni effettueranno le tue app? Userai il pool di connessioni?

Tutto sommato, la mia sensazione di leggere la tua descrizione dice: "No - Express Edition non è abbastanza potente". E odio la Workgroup Edition - penso che sia un cattivo affare - quindi Standard mi sembra giusto.


2
Scott - Ottima risposta. A tuo punto ... SQL Server Express in realtà non ha limiti di dimensioni di archiviazione tra i database, non puoi avere un solo database con più di 4 GB di dati. Come test ho creato 10.000 database da 100 MB (1 TB) su un singolo server e SQL Server Express ha funzionato correttamente. Inoltre, la memoria relativa a ciascuna connessione non viene conteggiata per il totale di 1 GB. Sono d'accordo sul fatto che la gestione di tutti questi database potrebbe essere un po 'una seccatura ... ma dato che avremo effettivamente migliaia di database, probabilmente avremmo comunque bisogno di script (non c'è modo che io voglia toccare manualmente un database a meno che non diventi corrotto).
Segnale acustico

+1, concordo sul fatto che si trattava di una risposta gr8, ma l'ho anche votata a favore
Gennady Vanin Геннадий Ванин

1

Hai mai pensato di utilizzare uno dei DBMS gratuiti (MySQL, PostreSQL ...)? Ciò allevierebbe i tuoi problemi di licenza?

Se questa non è un'opzione, SQL Server Express sembra una buona soluzione.


2
L'anno scorso abbiamo eseguito test delle prestazioni su tutti i principali database: MySQL, PostgreSQL, Firebird, DB2, Oracle, SQL Server, SQL Server Express e SQL Desktop. Abbiamo scoperto che DB2, Oracle e SQL Server (ed Express, ma non desktop) hanno spazzato via MySQL e PostgreSQL su Windows per le nostre operazioni transazionali - con un fattore di 2 / 1/2 le prestazioni significano il doppio del numero di server. Quando sono ospitati su Linux, MySQL e PostgreSQL hanno fatto un po 'meglio, ma ancora non alla pari.
Segnale acustico

1

Può certamente essere utilizzato per applicazioni di produzione significative. Lo abbiamo utilizzato in oltre 1500 cliniche sanitarie, tutte con istanze separate di SQL Server Express installate per elaborare milioni di transazioni ogni giorno. È possibile aggirare facilmente lo svantaggio di SQL Server Agent utilizzando uno dei seguenti:

  1. Prodotto di terze parti come SQLAutomate
  2. Utilità di pianificazione di Windows
  3. Un'edizione Standard o Enterprise di SQL Server con la funzionalità del server master installata 1 e 2 è molto economica o gratuita. 3 è costoso a meno che non sia già disponibile nel proprio ambiente.

Guarda l'eccellente presentazione di Michael Otey (google it) su "Utilizzo di SQL Server Express in produzione".


In realtà era un post di 7 anni :)
BaronSamedi1958,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.