Dapatkan dan Pasang pengujian kinerja di Google BigTables (dan DB terintegrasi lainnya)

17

Apa beberapa cara efektif untuk melakukan pengujian kinerja terprogram pada operasi basis data, terutama di lingkungan di mana basis data itu sendiri tidak menawarkan alat khusus?

Misalnya, di Google App Engine, seluruh pemuatan halaman dievaluasi sebagai satu operasi yang dapat mencakup operasi basis data tertentu. Masalah ini juga mungkin ada dalam SQLite dan DB terintegrasi lainnya. Karena sulit untuk sepenuhnya abstrak (setara dengan) seleksi dan sisipan yang perlu diuji, apakah ada alat basis data yang direkomendasikan untuk melakukan diagnosa yang lebih menyeluruh pada pertanyaan semacam ini?

Brian Ballsun-Stanton
sumber
Apakah Anda memiliki akses langsung ke database yang dimaksud?
Stingervz
Ya, saya yang menulis aplikasi. Dan sementara kinerja aplikasi adalah pertanyaan yang berbeda, saya mendapatkan beberapa hit kinerja yang cukup parah dalam permintaan buruk yang saya tulis.
Brian Ballsun-Stanton
Kadang-kadang selusin pasang mata adalah diagnostik yang lebih baik daripada alat analisis permintaan ... (ok tidak sesering itu)
jcolebrand
@Brian Saya pikir Anda akan melakukan yang lebih baik di Stackoverflow dengan jenis pertanyaan seperti ini lebih merupakan pertanyaan pemrograman daripada yang DBA.
IAMIC
@IanC Drat. Saya mencoba untuk mendapatkan dasar tabel besar daripada kinerja secara keseluruhan. Tetapi saya akan menghapus jika orang tidak menganggap pertanyaan itu cocok. (Saya juga berusaha memastikan bahwa situs tersebut bukan oracle / sql-server / mysql sepanjang waktu)
Brian Ballsun-Stanton

Jawaban:

1

Menurut saya masalah Anda adalah Anda mencoba menguji metrik kinerja yang tidak didukung dengan baik di db yang mendasarinya. Ini membuatnya sangat sulit untuk membandingkan kinerja lintas sistem karena pendekatan yang mendasarinya sangat berbeda. Saya tidak berpikir itu mungkin untuk melakukan perbandingan apel dengan apel sama seperti saya tidak berpikir Anda bisa melakukan perbandingan perbandingan jenis pendekatan ORDBMS dengan pendekatan jenis RDBMS. Masalah kinerja terlalu berbeda dan jika Stonebraker benar bahwa mengoptimalkan ORDBMS untuk tes TPC-C tidak tepat, maka untuk sistem yang lebih jauh terpisah itu tidak mungkin. (Saya pikir dia ada di sana, bagaimanapun, hanya di mana fungsi ORDBMS ikut bermain.)

Saya pikir apa yang Anda harus jujur ​​adalah melihat bagaimana Anda akan menggunakan masing-masing sistem dan membangun alat benchmark berdasarkan pendekatan yang Anda ambil dengan masing-masing. Maka Anda dapat mengatakan setidaknya untuk alur kerja itu bahwa tolok ukur menunjukkan sesuatu yang spesifik. Saya tidak melihat bagaimana Anda bisa menggeneralisasi. Anda selanjutnya dapat menjalankannya di profiler untuk mendapatkan informasi tambahan tentang di mana waktu yang dihabiskan dalam uji coba di berbagai mesin.

Namun pembandingan db sangat sulit untuk membuat bermakna dalam keadaan terbaik dan ketika Anda membandingkan sistem yang berbeda menjadi tidak mungkin untuk menggeneralisasi.

Chris Travers
sumber
0

Appstats adalah alat utama untuk mengukur kinerja di App Engine. Ini akan menunjukkan waktu yang digunakan untuk setiap RPC, termasuk datastore, memcache, urlfetch, dan mengirimkan permintaan dalam grafik grafik. Biasanya permintaan muncul sebagai "tangga" di mana setiap permintaan dimulai pada titik permintaan sebelumnya berakhir, pada baris berikutnya ke bawah.

Jika Anda menggunakan permintaan asinkron lanjut di ndb, Anda sebenarnya dapat melihat permintaan terjadi secara paralel.

Alat ini telah sangat membantu saya dalam melihat di mana waktu dihabiskan dan bagaimana mengoptimalkan kueri.

Brent Washburne
sumber