「MySQL」 - 自增主键id

自增主键,就是表里自动加的ID,用AUTO_INCREMENT来弄。
简单说,新加一行,ID自动加1 但得注意,INT类型上限是4 亿多,太大表容易爆。
用BIGINT就安全多了,上限4 千亿。

InnoDB表没主键,系统会弄个row_id,但别靠它,容易丢数据。
最好自己弄个自增主键。

设计表时,选BIGINT,别用系统row_id。
多监控,别等到爆了才急。

MySQL自增长设置详解轻松实现ID自动递增mysql上怎么自增长

2 02 2 年,我负责的一个城市的数据库项目,当时遇到了一个难题。
项目需求是创建一个用户表,每个用户都有一个唯一的ID,这个ID需要自动递增。
我当时也是懵的,不知道该怎么设置。
后来我查阅了资料,才反应过来,原来MySQL有自增长设置这个功能。

我回忆起,当时我创建表的时候,是这样写的:
sql CREATE TABLE t_user ( id INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '自增长ID', username VARCHAR(6 4 ) NOT NULL COMMENT '用户名', password VARCHAR(6 4 ) NOT NULL COMMENT '密码', PRIMARY KEY (id) ) ENGINE=INNODB AUTO_INCREMENT=1 0000 DEFAULT CHARSET=utf8 mb4 COMMENT='用户表';
这里我设置了id列的自增长,并且指定了起始值为1 0000。
我还记得,当时我还特意加了注释,方便以后查看。

然后,我还用ALTER TABLE语句添加了自增长列:
sql ALTER TABLE t_user COMMENT='用户表'; ALTER TABLE t_user ADD COLUMN id INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '自增长ID' FIRST, ADD PRIMARY KEY (id);
当时我也挺紧张的,怕设置错了。
不过后来一切顺利,用户表中的ID都是自动递增的。

在使用过程中,我也遇到了一些问题。
比如,有一次我忘记了这个规则,手动在INSERT语句中指定了ID的值,结果数据就重复了。
我当时也懵了,后来才反应过来,原来自增长列的值不能手动指定。

还有一次,我听说自增长ID的最大值是2 ^3 2 -1 ,我当时也懵了,不知道这个值意味着什么。
后来我查了资料,才知道这个值很大,但也要注意,如果超过了这个值,就会出现问题。

总的来说,MySQL的自增长设置虽然方便,但也要注意细节。
我当时可能偏激了一些,但确实,这个功能对数据库管理来说非常重要。

在mysql中要将id设置成自增并且要在前面自动补0,应该要怎么实现啊??

哈,上周有个客人问我MySQL8 .0.1 6 的MGR新功能怎么用,我给他讲了一下。
这功能主要是为了解决成员自动重新加入组的问题,让系统更加高可用。

简单来说,以前如果MGR的成员因为网络问题或者其他原因离开了组,需要手动重新加入。
现在,MySQL8 .0.1 6 版本之后,这个功能就自动了,不需要手动操作了。

这背后的原理是这样的:MGR通过组成员服务来保证数据的一致性,如果成员离开,GCS(组通信层)会检测到并移除该成员。
但是,如果这个成员只是暂时离开了,那么它可以自动尝试重新加入。

怎么设置呢?你只需要在MySQL中设置一个变量group_replication_autorejoin_tries,这个变量用来设置成员自动重新加入的尝试次数。
默认是0,表示关闭这个功能。

举个例子,如果你想让成员尝试重新加入3 次,你就在MySQL中执行这个命令:
sql SET GLOBAL group_replication_autorejoin_tries = 3 ;
这个功能的好处就是,当网络故障导致成员离开时,它可以自动尝试重新加入,减少了手动干预的需要,提高了系统的可用性。

不过,这也有缺点。
比如,如果成员离开了太久,重新加入时可能会读取到过时的数据。
而且,如果你设置了驱逐超时,虽然可以延迟删除组内可疑成员,但同时也增加了重新建立连接的机会。

总的来说,这个自动重新加入的功能对于应对瞬间网络故障很有帮助,可以让系统更加稳定。
反正你看着办吧,根据你的需求来设置。
我还在想这个问题,看看还有什么细节可以跟你分享的。