Kapan menggunakan socket MySQL dan kapan menggunakan host: port?


19

Banyak aplikasi memungkinkan saya untuk terhubung ke Mysql menggunakan nama pengguna, host kata sandi dan port. Beberapa mengizinkan saya untuk mengkonfigurasi soket bukan host:port.

Apakah ada manfaat yang jelas dari satu di atas yang lain? Saya bisa membayangkan bahwa soket hanya berfungsi ketika MySQL berada di mesin yang sama. Apakah begitu? Dan jika demikian, apakah ada manfaat menggunakan soket itu daripada menghubungkan localhost:3306?

Saya tidak terlalu akrab dengan seluk beluk jaringan dan soket, jadi mungkin saya benar-benar kehilangan beberapa informasi penting dan pertanyaan saya benar-benar bodoh; jika demikian, dapatkah Anda menjelaskan apa yang saya lewatkan?

Jawaban:


19

Sederhana saja.

Socket adalah komunikasi berbasis file, dan Anda tidak dapat mengakses soket dari komputer lain.

Di sisi lain, port terbuka untuk dunia (tergantung pada konfigurasi) dan Anda dapat mengakses mysql dari komputer lain menggunakan host + kombinasi port.

Juga, seperti yang saya mengerti soket, mereka hanya kombinasi dari host + port, hanya dalam format file. Jadi, saya tidak melihat manfaat yang jelas dalam menggunakan salah satu dari mereka (sepengetahuan saya).

Meskipun saya pribadi lebih suka menggunakan host + port, karena kode saya menjadi lebih fleksibel, karena saya dapat memindahkannya ke komputer lain, tanpa banyak berubah.

Salin tempel dari beberapa pos lama :

Soket Unix sedikit lebih cepat karena Anda tidak memiliki tcp-overhead. Jika Anda menyadari kehilangan kinerja ini adalah masalah beban server. Jika Anda tidak memiliki beban server yang sangat tinggi, Anda tidak akan mengenalinya.

Jika Anda menggunakan Jails (FreeBSD) atau teknologi virtualisasi lainnya untuk memisahkan misal MySQL-Server dari Webserver, Anda sering menggunakan pengaturan tcp / ip alih-alih soket. Aturan firewall perlu membatasi akses.

Anda perlu mencari tahu apakah sistem Anda berada di bawah beban berat sehingga soket adalah suatu keharusan atau Anda dapat fokus pada desain sistem yang bagus (memisahkan layanan), maka solusi tcp / ip akan lebih baik.

Jadi, buat jawaban panjang yang singkat:

Ya, ada perbedaan kinerja, soket lebih cepat. Jika Anda tidak mengalami beban server yang tinggi, pilih saja yang cocok dengan desain sistem Anda.


Tetapi ketika saya memiliki keduanya, ketika mysqld hidup di mesin yang sama dengan klien; apakah ada perbedaan dalam menggunakan satu sama lain? Apakah yang satu lebih ringan, lebih berkinerja, rawan kesalahan atau apa pun selain yang lain?
Berkel

Baru saja memperbarui jawabannya dengan beberapa info lagi.
GeekRide

Dan beberapa info lagi.
GeekRide
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.