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?
performance
database-design
google-app-engine
performance-testing
Brian Ballsun-Stanton
sumber
sumber
Jawaban:
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.
sumber
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.
sumber