Jawaban singkat
Ya , Anda dapat menulis tolok ukur yang bermakna dari kasus yang diteliti, jika Anda melakukannya dengan hati-hati, dan memahami bahwa jika relevan untuk kasus tertentu, itu mungkin tidak untuk kasus lain. Ini sama benarnya ketika membandingkan database dari tipe yang sama (database relasional vs database relasional lain) atau database dari tipe yang berbeda.
Tidak , Anda tidak dapat menulis patokan yang secara ajaib akan membuktikan bahwa basis data tertentu jauh lebih baik daripada yang lain dalam setiap kasus, untuk setiap aplikasi.
Jawaban panjang
Sangat mungkin untuk mengatakan bahwa "pindah dari database ke yang lain meningkatkan kinerja situs kami".
Anda mengukur kinerja database sebelumnya melalui profil atau statistik runtime dengan mengumpulkan informasi yang cukup tentang kueri dan seberapa cepat mereka.
Anda memindahkan aplikasi ke database baru.
Anda melakukan langkah yang sama.
Anda membandingkan.
Sebagai contoh, jika daftar lengkap 3 182 432 produk dimuat dalam 2,834 dtk. pada database lama dan memuat dalam 0,920 s. pada database baru, mengingat bahwa dalam kedua kasus, aplikasi memiliki cache kosong, itu adalah sebuah kemenangan: database baru meningkatkan kinerja situs Anda mengenai permintaan ini.
Sekarang, seperti metrik kinerja apa pun, itu bias:
Setuju, permintaan baru lebih cepat. Tapi tunggu, DBA Anda tidak tahu cara menggunakan database yang Anda miliki sebelumnya , jadi kueri yang memuat semua produk tidak dioptimalkan . Jika Anda menulis ulang seperti itu, Anda akan dapat memuat produk-produk tersebut dalam 0,855 s. bukannya 2,834.
Oke, Anda memiliki hasil yang lebih baik. Tetapi tidakkah Anda berpikir bahwa tidak adil untuk membandingkan suatu basis data dengan data baru saja menyiram ke basis data berumur 10 tahun yang rencana pemeliharaan terakhir dijalankan tiga tahun lalu? Omong-omong, bukankah Anda pikir Anda harus memperbarui produk database setidaknya sekali selama empat tahun terakhir?
Beberapa pertanyaan lebih cepat. Beberapa lebih lambat. Bagaimana Anda menghitung hasil rata-rata untuk mengetahui bahwa Anda memperoleh kinerja secara keseluruhan saat pindah ke database baru? Oke, waktu Anda memuat semua produk 3 182.432 lebih cepat. Tetapi apakah itu penting, sementara permintaan dieksekusi di situs web hanya dalam kasus yang jarang terjadi ketika seorang administrator melakukan beberapa tugas tertentu yang dia lakukan hanya dua kali dalam sepuluh tahun terakhir? Di sisi lain, menjalankan semua kueri di halaman beranda untuk pengguna baru menghabiskan 0,281 detik. dengan database baru, saat itu 0,207 s. dengan database lama. Hasil ini jauh lebih penting, terutama karena pertanyaan-pertanyaan itu tidak dapat di-cache untuk waktu yang lama, dan dieksekusi puluhan ribu kali per hari.
Kedua database harus diuji pada server yang sama, perangkat keras yang sama, struktur yang sama. Misalnya, Anda tidak dapat menguji satu database pada satu hard drive, dan yang lainnya pada RAID1 dua SSD. Saat Anda memigrasi proyek besar ke database baru, ada kemungkinan Anda hanya akan meng-host database baru di seratus server rak yang baru dikerahkan, ketika database sebelumnya akan tetap di mesin sebelumnya.
Untuk meringkas, Anda dapat membandingkan permintaan basis data suatu aplikasi, dan mendapatkan metrik yang tepat . Tapi kemudian, Anda harus memberi arti pada angka. Pada kondisi ini, tergoda untuk mengatakan bahwa Anda memperoleh kinerja situs: jika tidak, manajemen akan marah mengetahui bahwa Anda telah menghabiskan ribuan dolar dan bulan kerja hanya untuk membuat segalanya lebih lambat.
Kesalahan paling mengerikan adalah mengambil kesimpulan itu dari tolok ukur dan menyimpulkan beberapa kebodohan seperti "Microsoft SQL Server tiga kali lebih cepat daripada Oracle": mengatakan ini seperti mengatakan bahwa "Java lebih baik daripada PHP". Tentukan lebih baik. Lebih baik dalam hal apa? Untuk jenis aplikasi apa? Untuk tim pengembang apa?
Semakin Anda menafsirkan dan menggeneralisasi, semakin hal itu menjadi tidak relevan dan tidak berarti.
Kueri select [...]
yang dapat Anda temukan di file revisi # 832 ProductFactory.cs
, baris 117 dijalankan di bawah 0,5 s. dengan database baru ketika diuji dalam kondisi yang ditentukan dalam persyaratan non-fungsional lampiran M, kasus 3. Hal ini memungkinkan melewati persyaratan non-fungsional 527 (lihat halaman 80, revisi 9). Persyaratan yang sama tidak puas dengan database sebelumnya, ketika hasil tes berada di kisaran 0,9..1.3 s. dalam kondisi yang sama.
bermakna bagi pengembang, dan cukup tepat untuk mengetahui apa yang diuji, bagaimana, dan apa hasilnya. Ini menjawab pertanyaan Anda nomor 2.
Sayangnya, itu tidak masuk akal bagi manajemen. Sebagai gantinya:
Migrasi produk kami dari MySQL ke versi terbaru Microsoft SQL Server meningkatkan kinerja keseluruhan produk kami hingga lima, sekaligus mengurangi biaya dua dan jejak lingkungan menjadi tiga. Kami percaya bahwa migrasi semua aplikasi kami ke Microsoft SQL Server tahun depan akan memberikan hasil yang lebih baik dan meningkatkan daya saing pasar kami.
adalah jibber-jabber pemasaran murni, dan, secara teknis, tidak berarti apa-apa, tetapi secara mengejutkan memiliki nilai untuk departemen manajemen dan pemasaran.
Akhirnya, dapatkah kita membandingkan berbagai jenis basis data? Saya akan mengatakan itu sangat mungkin. Katakanlah saya memiliki situs web yang menampung foto-foto besar. Foto-foto itu disimpan di varbinary(max)
dalam Microsoft SQL Server 2005 (jadi saya tidak bisa menggunakan filestream
). Saya khawatir tentang kinerja saat memuat foto-foto itu, jadi saya memutuskan untuk menyimpan foto sebagai file, menggunakan sistem file sebagai database baru saya. Pertama, file-file itu disimpan di mesin yang sama dari database. Saya profil solusi baru, dan mendapatkan hasil yang menunjukkan bahwa dalam kasus saya, file dimuat 4% lebih cepat dari sistem file daripada dari Microsoft SQL Server. Benchmarknya sangat jelas. Sekarang saya dapat berpikir tentang menggunakan dedicated server yang dioptimalkan untuk penyimpanan file langsung, daripada menggunakan server yang dioptimalkan untuk Microsoft SQL Server.