Saya mencoba mencari informasi tentang fungsi yang ditentukan pengguna PostgreSQL dalam kinerja bahasa prosedural untuk tugas waktu nyata.
- Bagaimana mereka dibandingkan dengan fungsi builtin?
- Apakah ada perbedaan (dalam overhead) bagaimana Postgres memanggil / mengelola fungsi plpython vs plpgsql vs pllua (Saya tertarik dengan sisi integrasi / konteks / transfer data Postgres, bukan VM itu sendiri)?
- Apakah konteksnya overhead yang besar? Bisakah saya menggunakannya untuk pemetaan data waktu nyata (misalkan 1000 pertanyaan)
- Apakah ada manfaat menulis fungsi yang ditentukan pengguna dalam plpgsql kemudian pg / bahasa lain? Pada dokumentasi mereka menyebutkan keuntungan, tapi saya pikir mereka berlaku untuk semua bahasa prosedural postgresql.
Temuan terkait:
sumber
ini sulit dikatakan. itu benar-benar tergantung pada apa yang Anda lakukan. misalnya: PL / pgSQL sangat bagus jika Anda memiliki pernyataan SQL besar di dalamnya - itu benar-benar gila jika Anda mendapatkan semua jenis percabangan, manajemen substring dan semua itu.
Anda benar-benar harus menguji dari kasus ke kasus.
sumber
Kinerja tergantung pada perangkat keras dan kompleksitas fungsi Anda. Saya membuat alat yang dijalankan pada server 12-core kecil dan kartu FusionIO (total biaya € 10.000) dan melakukan sekitar 2.500 transaksi per detik dengan 20 pengguna secara bersamaan. Setiap transaksi memanggil 29 prosedur tersimpan untuk memproses data dan mengembalikan beberapa informasi yang berguna kepada klien. Beberapa fungsi hanya menjalankan satu query, yang lain beberapa query. Secara total, ini mengeksekusi sekitar 200000 INSERT, SELECT dan UPDATE pernyataan per detik.
Ini semua ditulis dalam PL / SQL, PL / pgSQL dan PL / PerlU. Dan saya cukup yakin sistem dapat berjalan lebih cepat ketika beberapa fungsi ditulis ulang dalam C.
Dalam alat ini, sebagian besar kinerja berasal dari kartu SSD. Pada disk tunggal yang berputar, kita tidak akan pernah mendapatkan kinerja ini. Drive SSD murah juga gagal, ia bekerja selama satu jam (karena caching raid-card) dan kemudian game berakhir. Kartu FusionIO itu mahal, tetapi investasi yang sangat bagus ketika Anda terikat IO.
sumber