首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

MySQL 自增ID的几个小问题

ID最大的记录删除后,新插入的记录ID是什么 例如当前表中有ID为1,2,3三条记录,把3删除,新插入记录的ID从哪儿开始? 答案: 从4开始。...MySQL 重启后自增ID从哪儿开始 例如当前表中有ID为1,2,3三条记录,把3删除,重启MySQL,新插入记录的ID从哪儿开始? 很多人会认为从4开始,实际是从3开始。...重启MySQL。...手动插入ID后,下次插入时自增值是多少 例如当前的自增ID为4,新插入记录时,手动指定ID为10,下次使用自增方式插入时,ID是 11。...删除最大ID值对自增ID值没有影响,但MySQL重启之后有影响,不会使用之前的自增ID值,而是使用最大ID+1,因为自增ID值是存在内存中,重启后需要重新计算。 自增ID用完后就不变了。

7.8K21

关于mysql自增id的获取和重置

转载请注明出处:帘卷西风的专栏(http://blog.csdn.net/ljxfblog) ---- mysql获取自增id的几种方法 使用max函数:select max(id) from tablename...使用LAST_INSERT_ID函数:select LAST_INSERT_ID() 优点:获取到的是真正的自增id。 缺点:该函数是与table无关的,永远保留最新插入的自增列的id。...使用mysql查询函数:SHOW TABLE STATUS; 优点:能够准确的查到自增id。而且可以在语句后面加上where语句或者like语句来过滤。...使用自定义查询方法:mysql表相关的信息是放在information_schema表里。所以我们参考 SHOW TABLE STATUS来构建查询语句。...---- mysql自增id的重置 使用truncate:truncate table; 说明:使用truncate会删除表的数据释放空间,并且重置字自增id,但不会删除表的定义。

11.3K20

MySQL ORDER BY主键id加LIMIT限制走错索引

PRIMARY 4  NULL    7624    Using where 开启优化器跟踪查看MySQL优化过程 -- 开启优化器跟踪 set session optimizer_trace...这边时,MySQL也没有改变执行计划,还是选择了report_product_sales_data_hq_code_orgz_id_index索引               "clause": "ORDER...这边时,MySQL改变了执行计划,选择了PRIMARY主键索引               "clause": "ORDER BY",               "index_order_summary...join_execution": {         "select#": 1,         "steps": [         ]       }     }   ] } 现象及修改方案 通过现象可以看到MySQL...where 总结 在order by id的情况下,MySQL由于自身的优化器选择,为了避免某些排序的消耗,可能会走非预期的PRIMARY主键索引; order by 和 limit 结合使用,如果where

1.8K10

MySQL蜜罐获取攻击者微信ID

前言 前些日子有人问到我溯源反制方面的问题,我就想到了MySQL任意文件读取这个洞,假设你在内网发现或扫到了一些MySQL的弱口令,你会去连吗?...日常生活中,大家几乎都会使用微信,而如果攻击者没有做到办公—渗透环境分离的话,我们就有希望获取到攻击者的微信ID Windows下,微信默认的配置文件放在C:\Users\username\Documents...WeChat Files\中,在里面翻翻能够发现 C:\Users\username\Documents\WeChat Files\All Users\config\config.data 中含有微信ID...这里以超级弱口令检查工具为例,首先在本地起一个正常的MySQL服务,wireshark抓包看看扫描器有哪些请求: ?...写了个简单的web来显示攻击者的微信ID,扫一扫就能加上TA ? 思考 除了获取微信ID,我们还能获取哪些有价值的东西呢?

1.8K40

Mysql主主模式和主键id冲突问题

Mysql双机热备,简单的说,就是要保持两台数据库的数据同步。始终保持两个数据库数据一致。 主要有主备方式、双主方式;,实现双主互备,双主都可以写入;实现简单的负载均衡。...问题描述:因为多主中都可以对服务器有写权限,所以设计到自增长重复问题 解决方法: 我们只要保证两台服务器上插入的自增长数据不同就可以了 如:A插入奇数ID,B插偶数ID,当然如果服务器多的话...auto_increment_offset = 1 auto_increment_increment = 2 这样A的auto_increment字段产生的数值是:1, 3, 5, 7, …等奇数ID...auto_increment_offset = 2 auto_increment_increment = 2 这样B的auto_increment字段产生的数值是:2, 4, 6, 8, …等偶数ID

1.2K10

技术分享 | 关于 MySQL 自增 ID 的事儿

当我们使用 MySQL 进行数据存储时,一般会为一张表设置一个自增主键,当有数据行插入时,该主键字段则会根据步长与偏移量增长(默认每次+1)。...自增的值并不是保存在表结构信息内的,对于不同的版本它们有如下的区别: 1.1.1 MySQL 8.0版本之前(重启后可能会产生变化): 计数器的值存储在内存中的,重启后丢弃,下一次将读取最大的一个自增ID...https://dev.mysql.com/doc/refman/5.7/en/innodb-auto-increment-handling.html#innodb-auto-increment-initialization...1.1.2 MySQL 8.0版本(重启后保持不变): 计数器的值将会持久化到磁盘。...不一定,业务也不应该过分依赖 MySQL 自增 ID 的连续性,在以下三种情况下,并不能保证自增 ID 的连续性: 1.5.1 插入时的其他唯一索引冲突 假设已存在数据{1,张三},且张三所属的字段设置了唯一主键

3K10

MyBatis + MySQL返回插入成功后的主键id

这是最近在实现perfect-ssm中的一个功能时碰到的一个小问题,觉得需要记录一下,向MySQL数据库中插入一条记录后,需要获取此条记录的id值,以生成对应的key值存入到redis中,id为自增int...articleCreateDate},#{articleContent},#{addName}) 这种方式只是返回一个影响行数值,并不能满足此次需求,于是做了如下修改: <insert id...#{articleContent},#{addName}) 在insert中将useGeneratedKeys属性设置为true,并制定keyProperty为Article对象的id...=null); System.out.println("insert后article的id:"+article.getId()); } 结果如下: ?...mysql中表的记录如下: ? 结语 首发于我的个人博客,新的项目演示地址:perfect-ssm,登录账号:admin,密码:123456 ?

3.9K60

MySQL ORDER BY主键id加LIMIT限制走错索引

PRIMARY 4 NULL 7624 Using where 开启优化器跟踪查看MySQL优化过程 -- 开启优化器跟踪 set session optimizer_trace...这边时,MySQL也没有改变执行计划,还是选择了report_product_sales_data_hq_code_orgz_id_index索引 "clause": "ORDER...这边时,MySQL改变了执行计划,选择了PRIMARY主键索引 "clause": "ORDER BY", "index_order_summary...where 总结 在order by id的情况下,MySQL由于自身的优化器选择,为了避免某些排序的消耗,可能会走非预期的PRIMARY主键索引; 对于数据量比较大,而且执行量很高的分页sql,尽可能将所有的查询字段包括在索引中...,同时使用索引来消除排序; 多用explain查看是否使用到了最优索引; 利用optimizer trace查看优化器执行过程; 观察mysql的slow_query_log,及时做排查优化。

6.5K32

MySQL自增id超大问题查询 转

很快,小A就排查了一遍自己的代码,没有删除的地方,也没有主动插入、更新id的地方,怎么会这样呢?...查了资料之后,小A得知,原来,mysql主键自增有个参数innodb_autoinc_lock_mode,他有三种可能只0,1,2,mysql5.1之后加入的,默认值是1,之前的版本可以看做都是0。...是7   delete from t1 where id in (2,3,4);   -- 此时数据表只剩1,5,6了,自增id还是7   insert into t1 values(2, 106, "...上面的例子执行完之后表的下一个自增id是10,你理解对了吗,因为最后一条执行的是一个Mixed-mode inserts语句,innoDB会分析语句,然后分配三个id,此时下一个id就是10了,但分配的三个...id并不一定都使用。

4.9K20

计算机网络之数据交换(电路交换,报文交换,分组交换)电路交换报文交换分组交换分组交换与电路交换

电路交换 报文交换 分组交换 如何实现数据通过网络核心从源主机到达目的主机? 就要经过网络核心进行数据交换,数据不断从一个网络交换到另一个网络,直到到达目的主机。...数据交换主要有三种: 电路交换 报文交换 分组交换 电路交换 最典型电路交换网络:电话网络 电路交换的三个阶段: 建立连接(呼叫/电路建立) 通信 释放连接(拆除电路) 电路交换是独占资源的,建立连接之后...image.png 分组交换 分组:报文分拆出来的一系列相对较小的数据包 分组交换需要报文的拆分与重组 分组交换相对于报文交换会产生额外开销,因为i要进行数据的拆分和重组 ?...image.png 报文交换与分组交换均采用存储-转发交换方式 区别是: 报文交换以完整报文进行“存储-转发” 分组交换以较小的分组进行“存储-转发 两种方式各有各的特点,下面我们就具体的分析 首先从发送速率上来说...分组交换的报文交付时间的计算公式: ? image.png 分组交换与电路交换 分组交换允许更多用户同时使用网络!——网络资源充分共享 分组交换绝对优于电路交换

1.8K10
领券