Test della scalabilità di stored procedure


14

Ho un'applicazione di posta elettronica che verrà chiamata a consegnare all'interfaccia utente il numero di nuovi messaggi per un determinato utente ad ogni caricamento della pagina. Ho alcune varianti di cose che sto testando a livello di DB ma tutte sono astratte dalla chiamata proc memorizzata.

Sto cercando di sbattere il DB per vedere quale sarebbe il punto di rottura (numero di richieste al secondo).

In breve, ho una tabella come questo userId, newMsgCount con un indice cluster su userId. SQL dovrebbe essere in grado di server centinaia o migliaia di queste risposte al secondo. Penso che il ritardatario sia la mia app .NET.

Come posso renderlo un buon test per ottenere i risultati del test basato sulle prestazioni SQL?

Esiste uno strumento per questo che posso dargli un nome di processo memorizzato e param per poter pagare il mio DB?

Voglio vedere se il DB può restituire un minuto. di 250 risposte al secondo.


1
Ottima domanda Lo espanderei per essere un po 'più generale e chiedere: come si carica test il database?
Nick Chammas,

Risposte:


11

SQLQueryStress è un ottimo strumento per i test di concorrenza su piccola scala, ma non è davvero all'altezza del compito di test di carico. Un set di strumenti sorprendentemente poco noto è disponibile gratuitamente, da Microsoft, in grado di far fronte alla maggior parte degli scenari di stress test di SQL Server, le utility RML .

Una breve descrizione degli strumenti:

  • ReadTrace converte le tracce di Profiler da file .trc in .rml (Replay Markup Language).
  • OStress viene utilizzato per riprodurre file .rml e .sql su un server.
  • ORCA (OStress Replay Control Agent) coordina il replay tra istanze distribuite di OStress.
  • Reporter fornisce report di analisi delle prestazioni.

Esiste un eccellente articolo di avvio rapido del team SQLCat che include un database di esempio e carichi di lavoro, Prestazioni di precisione per Microsoft SQL Server che utilizza RML Utilities 9.0

Hai la possibilità di creare attività di profilazione per il replay o, possibilmente più appropriato nel tuo scenario, di avviare a mano un set di script .sql che poi riproduci tramite OStress e ORCA.

Grandi strumenti sia per i test di carico che per l'analisi dei problemi di prestazioni.


6

Uno strumento che puoi usare è SQLQueryStress . Per un rapido avvio fornire: la procedura memorizzata le iterazioni e il numero di thread. Quindi avviare lo stress test. Verranno visualizzate metriche come secondi della CPU, letture logiche, ecc.


4

Sembra che tu sia uno sviluppatore .NET. Un modo potrebbe essere quello di scrivere una piccola applicazione che utilizza il multithreading e abbia solo un determinato numero di hit simultanei nel database e nella procedura memorizzata. Esegui una traccia mentre ciò accade.

Scrivere il codice dell'applicazione per aumentare la quantità di thread simultanei su un intervallo specifico se si desidera aumentare automaticamente il carico su SQL Server.

Questo è il modo in cui lo farei.


Perché non scrivi questa app usando il mio progetto open source Benchmark.NET e usando un benchmark parallelo?
Andrei Rînea,
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.