jsxqf
V2EX  ›  问与答

数据库表 id 设为 auto_increment 是不是一个好习惯?

  •  
  •   jsxqf · Jul 30, 2014 · 5574 views
    This topic created in 4487 days ago, the information mentioned may be changed or developed.
    19 replies  •  2014-07-30 23:56:54 +08:00
    rainysia
    rainysia
    Jul 30, 2014
    1
    看情况而言
    有些情况需要自增来设置log_id, 至少能保证唯一性
    有些情况下就需要用代码直接生成id, 预生成id模式
    你去看电商的uid, pid, 淘宝店铺的店铺id, qq号. 这些实际都是自增的.
    em70
    em70
    Jul 30, 2014 via Android
    2
    不自增你还要id干嘛
    raincious
    raincious
    Jul 30, 2014
    3
    @rainysia QQ号是自增?我一直以为是分配好了放在一个池子里的呢。
    wy315700
    wy315700
    Jul 30, 2014
    4
    @rainysia
    @raincious
    QQ号是根据某个算法算出来的伪自增。

    话说你们俩的ID。。。
    kmvan
    kmvan
    Jul 30, 2014 via Android
    5
    你们两个的id也是自增的吧!
    我帮楼上说了
    Aoliz
    Aoliz
    Jul 30, 2014
    6
    有时候为了防止爬虫爬数据,会选择不自增的方式?
    shinwood
    shinwood
    Jul 30, 2014
    7
    自增要有一个,另外可以加设一个唯一的id防爬虫。
    em70
    em70
    Jul 30, 2014
    8
    @wy315700
    @raincious
    @raincious

    QQ号绝对不是自增,有号码池,不一定先注册就比后注册数字小,特殊号码早就被提取出来单独销售了,没意义的号才放池子里.曾经听一个去腾讯实习的哥们说,QQ号只用了一个字节储存.
    raincious
    raincious
    Jul 30, 2014
    9
    @em70 真的?8 Bit?怎么做到的?
    O21
    O21
    Jul 30, 2014
    10
    我一般都用自增长。。。方便
    em70
    em70
    Jul 30, 2014
    11
    @raincious 我也没想明白,就算32位,也只有8位数,但现在QQ也10位了
    YouXia
    YouXia
    Jul 30, 2014❤️2
    12
    @em70
    应该不是一个字节,应该是一个int,一个int倒是足够存储了。假如QQ数字为V,则用以下方式表示:

    int id = V / 32;

    int shift = V % 32;
    jsonline
    jsonline
    Jul 30, 2014❤️1
    13
    上面不要搞笑,从 2011 年起 QQ 上是 64 位的,8 bytes, 64 bits.
    Automan
    Automan
    Jul 30, 2014
    14
    看应用场景吧。。比如优惠券号码之类的,就非常不适合用自增。另外多机负载下,自增 id的同步也是个大问题。
    Automan
    Automan
    Jul 30, 2014
    15
    在一般情况下,自增id算是效率最高最方便的产生唯一ID的方法了吧
    YouXia
    YouXia
    Jul 30, 2014
    16
    @jsonline

    只是举了例子说明了下一个int足够存储QQ所有号码了。

    另外,一般情况下(当然这个还是看编译器),多数64位系统下sizeof(int) = 4 ,只是long int 变为8了。
    awanabe
    awanabe
    Jul 30, 2014❤️1
    17
    自己做一个sequence吧...
    如果分布式的话就需要给集群不同的标示, 从而生成独立的id
    csx163
    csx163
    Jul 30, 2014
    18
    查询上下两条记录就靠这个了...
    rainysia
    rainysia
    Jul 30, 2014
    19
    晕. 我说的是最开始的时候, qq号是自增的...
    现在肯定都是预生成了.
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   943 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 43ms · UTC 22:31 · PVG 06:31 · LAX 14:31 · JFK 17:31
    ♥ Do have faith in what you're doing.