SORU
5 Mart 2009, PERŞEMBE


MySQL depolama SHA1 hash değerleri

MySQL veritabanı SHA1 karma sonucu saklamak istediğim zaman yaşanan basit bir sorum var:

Ne kadar olmalıVARCHARhangi hash sonucu mağazası bir alan?

CEVAP
5 Mart 2009, PERŞEMBE


Sabit uzunlukta veri için değişken uzunlukta veri, ama değil VARCHAR kullanmak istiyorsunuz. SHA-1 değeri olduğu içinher zaman160 bit uzunluğunda VARCHAR sadece an additional byte for the length of the fixed-length field atık.

Ve ben de SHA1 dönüyor bu değeri saklamak olmaz. Karakter başına sadece 4 bit kullanır ve böylece 160/4 = 40 gerekir karakter çünkü. Ama eğer karakter başına 8 bit kullanıyorsanız, sadece 160/8 = 20 karakter uzunluğunda bir alan gerekir.

BINARY(20) UNHEX function ikili SHA1 değeri dönüştürmek için kullanmanızı tavsiye ederim.

BINARY(20) CHAR(40) Depolama şartları karşılaştırdım.

CREATE TABLE `binary` (
    `id` int unsigned auto_increment primary key,
    `password` binary(20) not null
);
CREATE TABLE `char` (
    `id` int unsigned auto_increment primary key,
    `password` char(40) not null
);

Kayıtlar milyon binary(20) char(40) 64.57 M. alırken 44.56 M, alır InnoDB motoru.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Abe Olandres

    Abe Olandres

    16 EYLÜL 2006
  • Adam Khoury

    Adam Khoury

    23 Ocak 2008
  • JTechTalk

    JTechTalk

    11 Temmuz 2010