Il mio progetto corrente invierà costantemente query a un server sql e potrebbe utilizzare il 100% della memoria o della CPU.Rilevamento dell'utilizzo di SQL Server con una query
Come posso verificare se il server è in fase di pieno utilizzo in una stored procedure in modo che possa decidere se eseguire le query o meno o salvare alcune impostazioni in una tabella in modo che le seguenti query possono conoscere il carico di lavoro è alto e decide cosa fare
In caso contrario, come posso impedire al server SQL di raggiungere il pieno utilizzo?
Maggiori informazioni sul caso: In questo momento so che il nostro server di test in corso in grado di elaborare 40-50 query al secondo (una specifica procedura archiviata). E ora decideremo quante query vengono inviate al server ogni secondo. Se impostiamo l'importo anche 1 più alto del previsto, a lungo termine, le query riempiranno la memoria virtuale e il client dovrà riavviare periodicamente l'istanza del server sql.
risultati attesi (per i cacciatori di taglie):
@memory_usage float, @cpu_usage float; /* in percentage */
Tutte le idee sono i benvenuti. Grazie.
L'ottimizzazione prematura è la radice di tutto il male. – Andomar
Sulla base della tua domanda, penso che farei un passo indietro e guardare un approccio alternativo. –
Prima se si sta utilizzando la memoria virtuale sul server, assicurarsi che l'istanza abbia le impostazioni di memoria massima impostate. SQL Server è abbastanza bravo a gestire la memoria cache in modo da non dover mai ricominciare l'istanza (per questo particolare problema) a meno che non si stia prendendo in considerazione la memoria necessaria al sistema operativo. Ci sono molti articoli là fuori su quanta memoria lasciare il sistema operativo, ma potresti iniziare guardando BOL qui: http://msdn.microsoft.com/en-us/library/ms178067.aspx. È il 2012 ma non sono sicuro di quale versione stai usando. –