Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Cara mengatur batas waktu untuk kueri MySQL menggunakan C API

Oke, saya menemukan solusinya.. Terima kasih kepada Will dan PRR ( rekan kerja saya ).

Saya tidak bisa mulai utas baru pada setiap kueri, karena ini adalah aplikasi waktu nyata, yang seharusnya memproses 1000+ pesan per detik..(Lagi pula, terima kasih kepada R.. untuk ide).

Juga, tidak mungkin untuk mengakhiri koneksi melalui perpustakaan, atau untuk membatalkan/membunuh kueri, karena masalahnya ada di server DB..

Dan inilah solusi brute-force, tetapi masih jauh lebih baik daripada _EXIT( FAILURE ) :Inilah pertanyaan terkait:"Cara memaksa penutupan socket di Linux?" - jadi, saya baru saja menutup soket menggunakan panggilan sistem.

CATATAN Penting :(terima kasih Will) - Ternyata, pembungkus perpustakaan MySQL kami memiliki tanda "fail-safe", sehingga pada soket tertutup (atau kesalahan kritis lainnya), ia mencoba "memecahkan" masalah, sehingga membuka kembali soket , dengan sendirinya, dalam kasus saya. Jadi, saya baru saja mematikan opsi ini dan semuanya baik-baik saja sekarang - eksekusi dihentikan karena pengecualian - ini adalah cara "paling lembut" untuk melakukan ini.
Ini harus dilakukan melalui utas lain, tentu saja - a pengatur waktu, misalnya.

EDIT: Batas waktu benar-benar berfungsi untuk versi setelah 5.0.25. Tapi, setidaknya pada RHEL4 dan RHEL5, batas waktu tiga kali lipat untuk beberapa alasan! Misalnya, jika beberapa batas waktu diatur ke 20 detik, batas waktu sebenarnya adalah ~60 detik..
Juga, hal penting lainnya adalah, batas waktu ini (seperti opsi lainnya) HARUS disetel setelah mysql_init dan sebelum mysql_connect atau mysql_real_connect .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara mengirim email dari MySQL 5.1

  2. Perbarui tabel MySQL dengan peringkat rekor dalam grup

  3. MySQL menghapus duplikat dari database besar dengan cepat

  4. Bisakah saya memasukkan kata sandi sekali untuk beberapa permintaan baris perintah mysql, di mana kueri tidak diketahui di muka?

  5. Dapatkan jumlah kolom MySQL di PHP