Menguji skalabilitas prosedur tersimpan


14

Saya memiliki aplikasi email yang akan dipanggil untuk mengirimkan ke UI jumlah pesan baru untuk pengguna tertentu pada setiap pemuatan halaman. Saya memiliki beberapa variasi hal yang saya uji pada tingkat DB tetapi semua disarikan oleh panggilan proc yang disimpan.

Saya mencoba membanting DB untuk melihat apa yang menjadi titik puncaknya (# permintaan per detik).

Singkatnya, saya punya tabel seperti userId ini, newMsgCount dengan indeks berkerumun di userId. SQL harus dapat server ratusan atau ribuan tanggapan ini per detik. Saya pikir laggard adalah aplikasi .NET saya.

Bagaimana saya bisa membuat ini menjadi tes yang bagus untuk mencapai hasil tes berdasarkan kinerja SQL?

Apakah ada alat untuk ini yang bisa saya berikan nama proc yang tersimpan dan param untuk itu untuk pund DB saya?

Saya ingin melihat apakah DB dapat mengembalikan min. 250 tanggapan per detik.


1
Pertanyaan bagus Saya akan mengembangkannya menjadi sedikit lebih umum dan bertanya: Bagaimana Anda memuat menguji database Anda?
Nick Chammas

Jawaban:


11

SQLQueryStress adalah alat yang hebat untuk pengujian konkurensi skala kecil tetapi tidak sepenuhnya sesuai dengan tugas pengujian beban. Toolset mengejutkan yang sedikit diketahui tersedia secara gratis, dari Microsoft, yang dapat mengatasi sebagian besar skenario pengujian stres SQL Server, RML Utilities .

Garis besar alat yang sangat singkat:

  • ReadTrace mengkonversi jejak Profiler dari file .trc ke .rml (Replay Markup Language).
  • OStress digunakan untuk memutar ulang file .rml dan .sql terhadap server.
  • ORCA (OStress Replay Control Agent) mengoordinasi replay di seluruh instance OStress yang didistribusikan.
  • Reporter memberikan laporan analisis kinerja.

Ada artikel mulai cepat yang sangat baik dari tim SQLCat yang mencakup database contoh dan beban kerja, Kinerja Presisi untuk Microsoft SQL Server menggunakan RML Utilities 9.0

Anda memiliki opsi untuk aktivitas Pembuatan Ulang profil untuk ulangan atau, mungkin lebih tepat dalam skenario Anda, melakukan engkol tangan sekumpulan skrip .sql yang kemudian Anda putar ulang melalui OStress dan ORCA.

Alat hebat untuk menguji beban dan menyelidiki masalah kinerja.


6

Salah satu alat yang dapat Anda gunakan adalah SQLQueryStress . Untuk mulai cepat menyediakan: prosedur yang tersimpan iterasi dan jumlah utas. Kemudian mulailah tes stres. Metrik seperti detik CPU, bacaan logis, dll ... akan ditampilkan.


4

Sepertinya Anda adalah pengembang .NET. Salah satu caranya adalah dengan menulis aplikasi kecil yang menggunakan multithreading dan hanya memiliki jumlah klik yang bersamaan untuk database dan prosedur yang tersimpan. Jalankan jejak saat ini terjadi.

Tulis kode aplikasi untuk menambah jumlah utas bersamaan pada interval tertentu jika Anda ingin secara otomatis menambah beban pada SQL Server.

Begitulah cara saya melakukannya.


Mengapa Anda tidak menulis aplikasi ini menggunakan proyek open source saya Benchmark.NET dan menggunakan tolok ukur paralel?
Andrei Rînea
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.