2013-06-11 18 views
7

Si utilizza SQL Server 2008 Express. Al momento nella stringa di connessione abbiamo la dimensione del pool predefinita di 100. Nelle ore di punta riceviamo un errore di timeout durante l'elaborazione delle transazioni nel DB.Dimensione massima del pool di connessioni in SQL Server 2008

La situazione è migliorata dal momento che abbiamo impostato la dimensione del pool su 200. La mia domanda è qual è la dimensione massima del pool che è possibile avere in Express Edition? Questa edizione viene eseguita con un GB di RAM.

Inoltre abbiamo la versione completa di SQL. Possiamo specificare una dimensione del pool più grande con la versione completa e se aumentiamo la dimensione del pool, dovremmo aumentare cose come RAM ecc per vedere i benefici?

Grazie in anticipo,

Matt.

risposta

9

Ogni volta che si hanno domande del genere, andare a Maximum Capacity Specifications for SQL Server. Strettamente parlando, la dimensione del pool di connessioni è un'impostazione client, ma il motore deve mantenere aperta una connessione in modo da poter raggiungere i limiti del lato server. I valori Connections per client è Maximum value of configured connections che implica è configurabile tramite un Server Configuration Option e ideed è presente, vedere user connections:

L'opzione connessioni utente specifica il numero massimo di connessioni utente simultanee che sono consentiti in un'istanza di SQL Server. Il numero effettivo di connessioni utente consentite dipende anche da la versione di SQL Server che si sta utilizzando e anche i limiti di l'applicazione o le applicazioni e l'hardware. SQL Server consente un numero massimo di 32,767 connessioni utente. Poiché le connessioni utente sono un'opzione dinamica (auto-configurante) , SQL Server regola automaticamente il numero massimo di connessioni utente secondo necessità, fino al valore massimo consentito da .

+0

ADO.NET utilizza una tecnica di ottimizzazione denominata pool di connessioni. http://msdn.microsoft.com/en-us/library/8xx3tyca(v=vs.110).aspx Quindi la dimensione massima del pool sarebbe un'impostazione specificata nella stringa di connessione che verrà utilizzata da ADO.NET quando SQL L'impostazione 'connessioni utente' del server è 0, sono consentite connessioni utente illimitate; Ritengo che la dimensione massima del pool di ADO.NET sia limitata dalle risorse disponibili nella macchina che esegue l'applicazione. –

+0

@turtleboy È sul lato client/applicazione che viene gestito il pool di connessioni. http://blogs.msdn.com/b/sql_pfe_blog/archive/2013/10/08/connection-pooling-for-the-sql-server-dba.aspx Non so cosa fa l'applicazione o il suo requisito di connessioni al database ma, una ragione per l'eccezione scaduta dal timeout è che le connessioni vengono aperte ma non chiuse dal programma; in questa situazione, non contribuirà ad aumentare il timeout della connessione (predefinito 15 secondi) nella stringa di connessione. Guardare il 'NumberOfPooledConnections' in Performance Monitor (premere Windows/Esegui tipo perfmon fare clic su OK) –

+0

@turtleboy Si presume che si stia utilizzando il provider di server Sql ADO.NET, in questo caso sarà utile: ADO.NET Connection Pooling a colpo d'occhio http://www.codeproject.com/Articles/17768/ADO-NET-Connection-Pooling-at-a-Glance –

Problemi correlati