`
langzhe
  • 浏览: 286906 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

auto_increment 生成的ID 中间少了一部分

阅读更多

 

 

ID 越过---没有生成 id 为64的记录 请问为什么
tsung测试 ejabberd http插入 数据库接口
 +------------+--------------+------+-----+---------+----------------+
| Field         | Type         | Null | Key | Default | Extra          |
+------------+--------------+------+-----+---------+----------------+
| id              | int(11)      | NO   | PRI | NULL    | auto_increment |
| vname     | varchar(128) | YES  | UNI | NULL    |                |
+------------+--------------+------+-----+---------+----------------+

 


select * from names where id like'6_' order by id;
+----------+------------+
|     id     |    vname |
+----------+------------+
|       60 | test160    |
|       61 | test161    |
|       62 | test162    |
|       63 | test163    |
|       65 | test164    |
|       66 | test165    |
|       67 | test166    |
|       68 | test167    |
|       69 | test168    |
+----------+------------+
 

 

 

这个与数据库内部实现机制有关。这个自增的字段属于临界资源,肯定是受内部并发控制锁来进行控制的。 再加上一定的缓存机制,可能前一个操作会预先分配了65和66,后一个操作只得到67,然后前一个操作只用了65,那么66就没有人再用力。

 oracle里面这个情况很常见。
 是的。
 它可能预分配资源,为了保持效率

 

分享到:
评论

相关推荐

    Hibernate教程02_ID生成策略

    2. ** Auto Increment **:适用于关系型数据库,如MySQL、SQL Server等,由数据库自增来生成ID。在Hibernate中,这个策略通常用`@GeneratedValue(strategy = GenerationType.IDENTITY)`表示。 3. ** Identity **:...

    细聊分布式ID生成方法.pdf

    分布式ID生成是构建稳定可靠的分布式系统的基础之一。通过对不同场景需求的分析,我们可以选择适合的ID生成策略。无论是基于时间戳排序还是利用数据库特性,亦或是采用高级算法如雪花算法,都应该根据具体的应用场景...

    全局自增ID设计方案

    1. **ID结构**:生成64位的ID,分为三个部分:41位的时间戳(精确到毫秒级别),10位的机器标识符(支持1024个节点),12位的序列号(支持每个节点每毫秒生成4096个ID)。 2. **优点**:Snowflake具有高性能、低...

    应用级自增ID的生成

    首先,自增ID通常在关系型数据库中由主键字段自动完成,如MySQL中的`AUTO_INCREMENT`。但在分布式系统中,单一数据库无法满足高并发和扩展性的需求,因此需要应用级别的解决方案。应用级自增ID的生成可能涉及到以下...

    mysql 学习笔记

    - 主键可以与`AUTO_INCREMENT`结合使用,用于自动生成唯一的ID: ```sql CREATE TABLE table_name ( id INT AUTO_INCREMENT PRIMARY KEY, ... ); ``` ##### 唯一主键 除了主键之外,还可以使用唯一键(`...

    java快速ID自增器

    它旨在提供一个高性能、线程安全的方式来生成自增ID,尤其适用于那些需要频繁生成ID的场景,如数据库记录的主键生成。 首先,我们需要理解自增ID的概念。自增ID通常用于数据库中的主键字段,确保每条记录都有一个...

    分布式id生成详解.pdf

    - 使用数据库的自动递增功能,如MySQL的`auto_increment`。优点是简单且有序,但并发性差,数据库压力大,一旦数据库故障,ID生成将受影响,还存在数量泄露的风险。 - 优化方案包括数据库水平拆分,设置不同初始值...

    十、关于MySQL 标识列,你该了解这些!

    主键是用来唯一标识表中每一行记录的字段,而标识列可以作为主键的一部分,确保其唯一性。不过,即使不是主键,只要满足唯一性要求,标识列也可以独立存在。 其次,一个表最多只能有一个标识列。这是因为在表的设计...

    百度开源的分布式 ID 生成器,太强大了!(csdn)————程序.pdf

    2. **高性能无锁机制**:UidGenerator采用了RingBuffer的数据结构,无锁地进行ID的生产和消费,极大地提升了生成ID的速度,适应高并发场景。 3. **支持多线程**:在多线程环境下,UidGenerator能保持高效稳定,不...

    mysql总结汇总

    当在一个表中插入新记录时,如果该记录的主键字段设置了`AUTO_INCREMENT`,那么每当插入一条新记录但没有显式指定该字段的值时,系统将自动为该字段生成一个新的唯一值。 - 示例代码:`INSERT INTO users (name) ...

    MYSQL事务回滚的2个问题分析

    `AUTO_INCREMENT`是MySQL中用于自动为新插入行生成唯一标识符的字段。在InnoDB引擎中,`AUTO_INCREMENT`计数器的当前值存储在内存中,而不是磁盘上的数据文件。当一个事务中执行`INSERT`操作时,这个计数器会递增,...

    在MongoDB中模拟Auto Increment的php代码

    这个代码定义了一个名为`generate_auto_increment_id`的函数,用于生成类似于Auto Increment的唯一ID。函数接受两个参数:$namespace(用于区分不同的ID序列)和一个可选的选项数组,包含初始值(init)和步长(step...

    MySql数据库自动递增值问题

    这个特性主要应用于整数类型的字段,并且通常设置为主键的一部分,确保每个记录的唯一性。 1. AUTO_INCREMENT的基本用法: 创建一个带有自动递增属性的表可以这样写: ```sql CREATE TABLE test ( id INT ...

    php mysql索引问题

    在执行上述插入操作时,由于id字段已经设置了AUTO_INCREMENT,所以无需在INSERT语句中指定id值,数据库会自动为新记录生成一个递增的数字作为id值。如此,就可以实现记录的连续性,从00000开始,每增加一条记录,...

    Tanking_短网址生成_php源码_

    `id` INT AUTO_INCREMENT PRIMARY KEY, `long_url` VARCHAR(2000) NOT NULL, `short_code` VARCHAR(10) UNIQUE NOT NULL ); ``` 2. **哈希函数**:可以使用PHP内置的`md5()`、`sha1()`等函数生成唯一标识符,但...

    MySQL 数据库双向镜像、循环镜像(复制)

    为了避免 AUTO_INCREMENT 字段冲突,通常需要设置 AUTO_INCREMENT_INCREMENT 和 AUTO_INCREMENT_OFFSET 参数,确保每个节点生成唯一的递增序列。 循环镜像则是一种更复杂的复制架构,它涉及三个或更多数据库,每个...

    td18913

    id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL, password VARCHAR(50) NOT NULL ); ``` 在SQL Server中,可以创建一个`IDENTITY`列来自动增长序列: ```sql CREATE TABLE Users ( UserId...

    常用数据库的自增字段创建方法汇总

    这里定义了一个名为 `T1_ID_SEQ` 的序列,用于生成连续的整数。 2. **创建表**: ```sql CREATE TABLE T1 ( id NUMBER(100) NOT NULL ); ``` 3. **创建触发器**: ```sql CREATE OR REPLACE TRIGGER ...

    ecshop礼品卡插件、ECSHOP充值卡插件 、ECSHOP会员卡插件全部教程

    `cat_id` SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, `cat_name` VARCHAR(90) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, `cat_mark` VARCHAR(20) CHARACTER SET utf8 COLLATE utf8...

    详解MySQL中default的使用

    要注意的是,一张表只能有一个`AUTO_INCREMENT`字段,并且通常这个字段作为主键的一部分。 最后,除了字段级别的约束,MySQL还支持表级别的约束,如主键(通常由`AUTO_INCREMENT`字段构成)、外键、索引和唯一性...

Global site tag (gtag.js) - Google Analytics