Re: inet versus text for ip addresses
От | Bruce Momjian |
---|---|
Тема | Re: inet versus text for ip addresses |
Дата | |
Msg-id | 200307210347.h6L3l4L23262@candle.pha.pa.us обсуждение исходный текст |
Ответ на | inet versus text for ip addresses ("Dan Langille" <dan@langille.org>) |
Список | pgsql-sql |
Dan Langille wrote: > The PostgreSQL inet datatype stores an holds an IP host address, and > optionally the identity of the subnet it is in, all in one field. > This requires 12 bytes. > > Using my "random" data of approximately 8000 IP addresses collected > during previous polls, I've found the average length of an IP address > is 13.1 bytes. An integer requires 4 bytes. > > First question: Why not store an option to store just an IP address? > That should require less than the 12 bytes for inet. We store inet and cidr in similar structures, and they are of variable length (4 byte overhead): /* * This is the internal storage format for IP addresses * (both INET and CIDR datatypes): */typedef struct{ unsignedchar family; unsigned char bits; unsigned char type; union { unsigned int ipv4_addr; /* networkbyte order */ /* add IPV6 address type here */ } addr;} inet_struct;/* * Both INET and CIDR addressesare represented within Postgres as varlena * objects, ie, there is a varlena header (basically a length word) infront * of the struct type depicted above. * * Although these types are variable-length, the maximum length * is prettyshort, so we make no provision for TOASTing them. */typedef struct varlena inet; In 7.4, we support IPv6, so they will be even larger. -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 359-1001+ If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square, Pennsylvania19073
В списке pgsql-sql по дате отправления: