In che modo è possibile ridimensionare SQL Server 2008 o 2012?


8

In che modo una scala di SQL Server 2008 (o 2012)? Alla sua base, capisco che ci sono due opzioni:

Scalare:

Se associato alla CPU, posso vedere chiaramente che va da 1 core CPU a 2 a 4. O se si verifica un razzo nell'uso della RAM, aggiungo solo più RAM. SQL Server 2008/2012 prende effettivamente il gioco e si ingrandisce in quel modo, supponendo che NESSUNA variazione a livello di applicazione? Per ridurre al minimo le speculazioni, supponiamo che non stia facendo qualcosa di stupido come bruciare cicli di CPU, fare cross join ecc.

Ridimensionare:

Non è molto chiaro come funzionerebbe il ridimensionamento. Voglio dire se ho aggiunto un altro server SQL proprio accanto al mio primo, come fa la query a sapere su quale server eseguire? C'è un bilanciamento del carico nella parte anteriore (e viene fornito con il software SQL Server?)? Implica cambiamenti a livello di applicazione per il ridimensionamento al lavoro? O devo avere per coccio i dati e avere il codice personalizzato che richiama il server di database corretto a seconda dei dati chiave sharding?

Gradirei il contributo di persone più esperte.

Risposte:


10

SQL Server non si ridimensiona come tale . Si ingrandisce.

Ci sono 3 aree per farlo, fatte salve le limitazioni di edizione

  • Core della CPU
  • RAM
  • Conservazione

E, naturalmente, utilizzare un'edizione superiore, ad esempio Enterprise

SQL Server non esegue la partizione e tale soluzione (è possibile ricercare soluzioni di sharding MySQL) aggiunge complessità e sovraccarico a un sistema.

Il ridimensionamento di un server (+ nodi di standby / mirror) è in genere abbastanza semplice con RAM, SSD, più volumi su disco per diffondere IO, unità separate per tempdb e log ecc.

Inoltre, se si rileva che SQL Server è associato alla CPU, di solito è un design e / o indici e / o query scritti in modo scadente a meno che non si abbia un carico enorme.


Grande! Qualche documentazione / tutorial / link specifico sul sharding che consigliate? Spero di poter applicare alcuni di questi schemi a SQL Server. Sto imparando (veloce!) E tu sei abbastanza la risorsa !!
DeepSpace101,

1
E i moderni server Wintel possono scalare fino a un hardware piuttosto sofisticato. Se devi andare oltre, ti trovi comodamente nel territorio VLDB e costosi kit specializzati.
Preoccupato di

@Sid, Spostare SQL Server in una configurazione in cui un singolo database è condiviso su più server fisici non è qualcosa che il nuovo utente può provare. Ci sono solo poche persone che sono state in grado di farlo con successo poiché è molto complicato e richiede uno schema MOLTO stabile e una solida comprensione dei modelli di dati all'interno del database (ho insegnato lezioni sull'argomento). Le idee di base di altre piattaforme sono un buon punto di partenza, ma le tecniche effettivamente utilizzate sono piuttosto diverse.
mrdenny,

5

Come dice gbn, SQL non si espande davvero come fanno gli altri RDBM. Tuttavia, c'è un aspetto del ridimensionamento che molte persone trascurano e che deve sempre avere un sistema separato a fini di reportistica.

Non consentire mai l'esecuzione di report contro la produzione. Costruisci un database di report su un altro server.

Idealmente, il sistema di reportistica dovrebbe contenere solo i dati di cui i report necessitano e sarebbe strutturato e ottimizzato in modo diverso dal sistema di produzione.

I dati verrebbero inseriti nel sistema di reporting secondo necessità (ad es. Un aggiornamento di mantenimento orario dalla produzione, feed giornaliero, ecc.).

Un approccio rapido e sporco (e altamente inefficiente) è semplicemente quello di avere una copia completa del database di produzione su un altro server. Questa copia può essere gestita tramite backup completi, invio del log delle transazioni, mirroring (con snapshot), replica, ecc.

Non raccomando tuttavia questo approccio. I backup completi e ripristinati richiedono tempo, soprattutto su database di dimensioni maggiori. La replica è complicata e problematica. Il log shipping ti lascia con un database di sola lettura. Il mirroring con le snapshot può essere una buona risposta, ma si è ancora bloccati con uno schema di produzione che non è ottimizzato per scopi di report.

Un sistema di segnalazione separato è la strada da percorrere.


2

Se associato alla CPU, posso vedere chiaramente che va da 1 core CPU a 2 a 4. O se si verifica un razzo nell'uso della RAM, aggiungo solo più RAM. SQL Server 2008/2012 prende effettivamente il gioco e si ingrandisce in quel modo, supponendo che NESSUNA variazione a livello di applicazione?

Le diverse edizioni di SQL Server hanno limitazioni diverse in termini di CPU e memoria che useranno. A parte ciò, la risposta è sì: se sono disponibili cicli di CPU o pagine di memoria vuoti, il server li userà in genere quando necessario, se non diversamente configurato.

O devo condividere i dati e disporre di un codice personalizzato che richiama il server di database corretto

Fondamentalmente sì. Lo "scaling out" viene spesso eseguito quando è necessario evitare conflitti di blocco. Se si dispone di query a esecuzione prolungata con blocco esteso, è possibile separarle da query interattive "in tempo reale" o cicli di aggiornamento delle query avviati dagli utenti che utilizzano un qualche tipo di interfaccia e sono in attesa di una pronta risposta. Ovviamente, prendersi cura di questo richiederebbe modifiche dell'applicazione (o almeno modifiche al middleware, se si dispone di un design a 3 livelli).

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.