How large can an id get in postgresql

后端 未结 2 2037
梦毁少年i
梦毁少年i 2021-01-01 16:49

I am using postgresql, and was wondering how large

id INTEGER PRIMARY KEY

can get compared to

id SERIAL PRIMARY KEY


        
相关标签:
2条回答
  • 2021-01-01 17:16

    Here is a handy chart for PostgreSQL:

    Name        Storage Size    Description                       Range
    smallint    2 bytes         small-range integer               -32768 to +32767
    integer     4 bytes         usual choice for integer          -2147483648 to +2147483647
    bigint      8 bytes         large-range integer               -9223372036854775808 to 9223372036854775807
    serial      4 bytes         autoincrementing integer          1 to 2147483647
    bigserial   8 bytes         large autoincrementing integer    1 to 9223372036854775807
    

    Source

    Your assessment is right, you'd run out of unique ID's if you used a data type that was insufficient.

    0 讨论(0)
  • 2021-01-01 17:25

    The data types smallserial, serial and bigserial are not true types, but merely a notational convenience for creating unique identifier columns (similar to the AUTO_INCREMENT property supported by some other databases)

    A bigserial is 8 bytes long. If that is not enough it is possible to use the 128 bits uuid:

    create table t (
        id uuid primary key
    );
    insert into t (id)
    select uuid_generate_v1mc();
    select * from t;
                      id                  
    --------------------------------------
     916bf7e6-f0c2-11e2-8d14-d372d5ab075f
    

    The uuid_generate_v1mc function is provided by the uuid-ossp module

    The main advantage of the uuid functions is that they generate an id that is very likely to be unique among different systems. A serial will have collisions between those systems.

    0 讨论(0)
提交回复
热议问题