Untuk Menyimpan Hash SHA1 dalam MySQL: VARCHAR atau BINARY?

Linda Hamilton
Lepaskan: 2024-11-23 22:33:14
asal
477 orang telah melayarinya

To Store a SHA1 Hash in MySQL: VARCHAR or BINARY?

Menyimpan Nilai Hash SHA1 dalam MySQL: VARCHAR lwn. BINARY

Apabila menyimpan hasil cincangan SHA1 dalam pangkalan data MySQL, yang sesuai jenis dan panjang medan mesti dipertimbangkan dengan teliti. Bertentangan dengan amalan biasa, menggunakan medan VARCHAR untuk tujuan ini adalah tidak cekap.

VARCHAR lwn. BINARY

Cincangan SHA1 sentiasa sepanjang 160 bit. Medan VARCHAR direka untuk data panjang berubah-ubah, tetapi medan tersebut memperkenalkan overhed satu bait untuk panjang medan. Oleh itu, menggunakan VARCHAR untuk nilai panjang tetap, seperti cincang SHA1, adalah tidak diperlukan.

Medan binari, sebaliknya, menyimpan data binari tanpa sebarang overhed. Ia sesuai untuk nilai panjang tetap seperti cincang SHA1.

Perwakilan Aksara

Cincangan SHA1 biasanya diwakili sebagai rentetan heksadesimal, yang menggunakan 4 bit setiap aksara. Untuk menyimpan perwakilan heksadesimal cincang SHA1 dalam medan VARCHAR, ia memerlukan 160/4 = 40 aksara. Walau bagaimanapun, medan binari menggunakan 8 bit setiap aksara, membenarkan cincangan yang sama disimpan dalam medan 160/8 = 20 aksara.

Pendekatan Disyorkan

Ia adalah disyorkan untuk menggunakan BINARY(20) untuk menyimpan nilai hash SHA1 dalam MySQL. Jenis medan ini menghapuskan overhed yang dikaitkan dengan VARCHAR dan membenarkan cincangan disimpan dengan cekap. Selain itu, fungsi UNHEX boleh digunakan untuk menukar perwakilan heksadesimal cincang kepada binari sebelum menyimpannya dalam pangkalan data.

Perbandingan Storan

Perbandingan keperluan storan mendedahkan bahawa BINARY(20) lebih cekap daripada CHAR(40) untuk menyimpan nilai cincang SHA1. Sebagai contoh, dengan berjuta-juta rekod, BINARY(20) memerlukan lebih kurang 44.56M storan, manakala CHAR(40) memerlukan 64.57M. Perbezaan ini menjadi lebih ketara dengan set data yang lebih besar.

Atas ialah kandungan terperinci Untuk Menyimpan Hash SHA1 dalam MySQL: VARCHAR atau BINARY?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan