hibernate 复合主键 根据主键删除_Python 之 MySql“未解之谜”11--主键 id 那些事

e356147fef96ca36971138340c77fb8f.gif
69ddd82941d3fe9463f77ef56b747a9b.png

主键 id 用自增和 uuid 有什么区别?

uuid 有 16 个字节,比 int(4 byte)和 bigint(8 byte)占用更多存储空间

有大量数据的时候 uuid 主键不会像自增主键那样越界,如果使用自增 id,字段类型一般选择 bigint

ce0a68756bb28d9e6f8977cc6ab0ae9a.png

● 如果 InnoDB 表的数据写入顺序能和 B + 树索引的叶子节点顺序一致的话,这时候存取效率是最高的,uuid 由于无序性,插入和查询比自增主键差

uuid 做主键相对安全,不能简单的从 uuid 获取信息,但是如果自增,则容易暴露信息,如果一个客户 id 是 123456,很容易猜到有客户 id 是 123456

● uuid 保证数据在表和库都是独立的,有利于处理分布式存储的数据表

uuid 主要解决的是分布式生成唯一编号的问题,但是不一定非要用现有的 uuid 方法,可以把每个机器都编个号,这样机器号加自增 id 也是一种 uuid 


主键自增 id 衍生问题

Ⅰ、初始 3 条数据,最大 id 是 3

f0dbb31fa9007c2f05122f2052a23623.png

Ⅱ、delete 第 3 条数据

5e05312dfe0d1c32644a224f10066636.png

Ⅲ、insert 一条数据

680a409e23aeb70be2f22a3850d7e853.png

我们可以看到主键 id 不连续,MySQL innodb 表的自增变量的值是内存中的临时值


● 删除命令:

0092faf63e0087901da0ad87841f6163.png

针对整张表数据(保留表结构)的删除,可以使用 DELETE 或者 TRUNCATE,二者的区别如下:

① TRUNCATE 在各种表上无论是大的还是小的都非常快。如果有 ROLLBACK 命令 DELETE 将被撤销,而 TRUNCATE 则不会被撤销

② TRUNCATE不能进行回滚操作,DELETE 语句执行删除的过程是每次从表中删除一行,并且同时将该行的的删除操作作为事务记录在日志中保存以便进行进行回滚操作

③ 当表被 TRUNCATE 后,这个表和索引所占用的空间会恢复到初始大小,而 delete 操作不会减少表或索引所占用的空间

④ 不能 TRUNCATE 一个带有外键的表,如果要删除首先要取消外键,然后再删除

TRUNCATE 全表后,主键自增 id 会重新从 1 开始,而 delete 全表后自增 id 不从 1 开始


● 面试题

f0dbb31fa9007c2f05122f2052a23623.png

如果 DELETE 第 3 行数据后,MySql 服务挂了,手动重启 MySql 服务,请问在 InnoDB 和 MyISAM 存储引擎中,新增一条数据,自增 id 的值是 3 还是 4?

MyISAM 引擎:MyISAM 表会把自增主键的最大 ID 记录到数据文件里,重启 MySQL 自增主键的最大 ID 也不会丢失。

InnoDB 引擎:InnoDB 表把自增主键的最大 ID 记录到内存中,重启数据库后,都会导致最大自增 ID 重置。当我们执行 insert 操作的时候,MySQL 会默认获取到自增长的最大值,类似于使用
SELECT MAX(id) FROM student FOR UPDATE; 然后再 + 1

所以说正确答案选 C

注意:在 MySql 8.0 版本中新增特性,「 自增主键持久化 」

将自增主键的计数器持久化到 redo log 中。每次计数器发生改变,都会将其写入到 redo log 中。如果数据库发生重启,InnoDB 会根据 redo log 中的计数器信息来初始化其内存值。为了尽量减小对系统性能的影响,计数器写入到 redo log 中,并不会马上刷新。


● 面试题

主键 id 不连续的解决办法(假设主键 id 与其他表无关联)

① 去掉 id 主键自增

e468ad37d91dee9b6ec3569bb4097004.png

② 增加一列 idd 作为主键,设置为自动递增

98a9f289a1955c341198b687bcaf6e97.png

③ 让 id 列从 1 开始自增

8bc86686ef720ab832ea15accafc78d3.png

④ 删除idd

a551f9c143500feb93df544a7c0f1da2.png

⑤ 将 id 重新设置为主键,加上自动递增

a78acfdb0d7ee81b6e8df121ea14835c.png

>>>Python 之 MySql“未解之谜”10--我以为我很懂MySql索引(下)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/522323.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

上万条数据撕开微博热搜的真相!

戳蓝字“CSDN云计算”关注我们哦!作者 | 徐麟,某互联网公司数据分析狮来源 | 数据森麟(id:shujusenlin)吃瓜前言关于新浪微博,向来都是各路吃瓜群众聚集之地,大家在微博中可以尽情吃瓜&#xff…

机器学习与Scikit Learn学习库

摘要: 本文介绍机器学习相关的学习库Scikit Learn,包含其安装及具体识别手写体数字案例,适合机器学习初学者入门Scikit Learn。在我科研的时候,机器学习(ML)是计算机科学领域中最先吸引我的一门学科。虽然这…

工作流实战_19_flowable 任务委派

项目地址https://gitee.com/lwj/flowable.git代码分支flowable-base视频讲解地址https://www.bilibili.com/video/av78294766/ 用户名密码0000001test0000002test0000003test0000004test文章目录场景分析1. 演示2. 代码分享3. 委派的执行处理场景分析 解释:委派 A…

【视频点播最佳实践】使用OSS SDK上传视频到点播

摘要: 场景 点播上传SDK缺乏需要的语言版本(如C/C、Go等)或相应的功能(如网络流上传、追加上传),可以直接使用OSS的SDK进行上传。 准备工作 确认已开通点播服务并完成了相关配置。确认已准备了阿里云账号AK…

Aruba 推出Instant On 为中小型企业提供安全、高速的无线连接

戳蓝字“CSDN云计算”关注我们哦!让你过几天没有Wi-Fi的生活,是一种什么样的感受?在现代人的生活里,离不开Wi-Fi已经成为日常,超市、酒店、住宅、医院、高铁……你能想到的所有场景几乎都已经部署了Wi-Fi。从个人角度来…

NSURLProtocol 拦截 NSURLSession 请求时body丢失问题解决方案探讨

摘要: “IP直连方案”主要在于解决DNS污染、省去DNS解析时间,通常情况下我们可以在项目中使用 NSURLProtocol 拦截 NSURLSession 请求,下面将支持 Post 请求中面临的一个挑战,以及应对策略介绍一下。 “IP直连方案”主要在于解决D…

工作流实战_18_flowable 流程任务的转办

项目地址https://gitee.com/lwj/flowable.git代码分支flowable-base视频讲解地址https://www.bilibili.com/video/av78184848/ 用户名密码0000001test0000002test0000003test0000004test文章目录1. 演示2. 代码分享1. 演示 2. 代码分享 public ReturnVo<String> turnTa…

深入解读:获Forrester大数据能力高评价的阿里云DataWorks思路与能力

摘要&#xff1a; Forrester发布了Now Tech: Cloud Data Warehouse Q1 2018报告&#xff0c;报告对云化数据仓库&#xff08;Cloud Data Warehouse, CDW&#xff09;的主要功能、区域表现、细分市场和典型客户等进行了全面评估。 1.前言 本文基于Now Tech: Cloud Data Warehous…

用C语言倒置字符串

要逆置这个字符串&#xff0c;有很多种方法&#xff0c;在此说一次比较巧妙的方法 首先&#xff0c;逆置这个字符串&#xff0c;可以考虑单独的把每个单词都逆序一下&#xff0c;在对整个字符串进行逆序 考虑本题中的I like beijing. 首先对I、like、beijing. 中的每个单词逆序…

java中怎么把生成文件到项目根目录_[SpringBoot2.X] 02- 项目结构介绍

POM文件继承Spring Boot 的父级依赖&#xff0c;只有继承它项目才是 Spring Boot 项目。 spring-boot-starter-parent 是一个特殊的 starter&#xff0c;它用来提供相关的 Maven 默认依赖。使用它之后&#xff0c;常用的包依赖可以省去 version 标签。也就是继承的是springboot…

大咖云集、精彩议题、独家内容,2019 AI ProCon震撼来袭!(日程出炉)

2019年9月5-7日&#xff0c;面向AI技术人的年度盛会—— 2019 AI开发者大会 AI ProCon&#xff0c;火热来袭&#xff01; 继2018 年由CSDN成功举办AI 开发者大会一年之后&#xff0c;全球AI市场正发生着巨大的变化。顶尖科技企业和创新力量不断地进行着技术的更迭和应用的推进。…

机器学习的未来——深度特征融合

摘要&#xff1a; 深度特征融合是一项能够克服机器学习不足&#xff0c;为机器学习打开通往未来大门的新技术。新技术要不要了解一下&#xff1f;即使是最敏锐的技术布道师也无法预测大数据对数字革命的影响。因为他们最初的关注点都聚焦在了扩大基础设施以构建现有服务上。在提…

原码,反码,补码的关系和大小端字节序存储的关系

在看如下代码之前&#xff0c;要知道原码&#xff0c;反码&#xff0c;补码之间的关系 首先要知道第一位是符号位&#xff0c;0代表是正数&#xff0c;1代码是负数 正数的原码&#xff0c;反码&#xff0c;补码相同 负数的反码是符号位不变&#xff0c;其他位按位取反 负数的补…

与机器学习算法有关的数据结构

摘要&#xff1a; 在机器学习中需要运用到许多数据结构&#xff0c;掌握它们是非常重要的。希望本文能有所帮助拥有机器学习技能是不够的。你还需要良好的数据结构的工作知识。学习更多&#xff0c;并解决一些问题。因此&#xff0c;你已经决定不再使用固定的算法并开始编写自己…

resnet结构_经典卷积网络(二)-ResNet

一、ResNet&#xff08;总结自csdn文章&#xff09;随着网络的加深&#xff0c;出现了训练集准确率下降的现象&#xff0c;确定这不是由于Overfit过拟合造成的。作者针对这个问题提出了一种全新的网络&#xff0c;叫深度残差网络&#xff0c;它允许网络尽可能的加深&#xff0c…

物联网避坑 3 大指南!

戳蓝字“CSDN云计算”关注我们哦&#xff01;整理 | 胡巍巍参考 | 中信出版社《物联网时代》如果你正是物联网从业者&#xff0c;你如何避免自己的投入&#xff0c;不会成为一种痛苦的学习经历&#xff0c;相反成为一个令人瞩目的成功故事呢&#xff1f;最好的方式之一&#xf…

深度学习工作机制通俗介绍

摘要&#xff1a; 本文是深度学习基础性介绍&#xff0c;以降维的角度分析卷积神经网络模型&#xff0c;并着重说明了目前人工智能存在的不科学性。在本文之前&#xff0c;写过一些关于人工智能的科普性文章&#xff0c;比如人工智能为什么能起作用、模型是什么以及如何去创建模…

结合Apache Kafka生态系统,谈谈2018年机器学习5大趋势

摘要&#xff1a; 让我们来研究下Uber和Netflix上的KSQL&#xff0c;ONNX&#xff0c;AutoML和机器学习平台&#xff0c;看看它们之间是如何相互关联的。在2018慕尼黑OOP会议上&#xff0c;我展示了使用Apache Kafka生态系统和深度学习框架&#xff08;如TensorFlow&#xff0c…

设计一段代码,判断在内存中是小端存储还是大端存储

大端存储&#xff1a;数据中的低位保存在内存中的高地址中&#xff0c;数据中的高位保存在内存中的低地址中。 小端存储&#xff1a;数据中的高位保存在内存中的高地址中&#xff0c;数据中的低位保存在内存中的低地址中。 假设int a1; 则a在存储中的存储是 00 00 00 01&#…

51单片机雾化片自动扫频程序_单片机简介

单片机简介数字电路简介在一个控制系统中&#xff0c; 单片机是电路的一部分&#xff0c; 单片机中的程序是针对其所在的电路编写的。因此&#xff0c;要对单片机编程并实现一定的功能&#xff0c;必须了解整个系统的电路图。单片机编程是针对某个特定的电路进行的单片机编程是…