MySQL为什么要用数字做自增主键?
1.MySQL为什么要用数字做自增主键?
首先为什么我们使用的是int类型,而不是varchar类型
- int永远是固定的4个字节,而char类型是1~255字节之间
优点
- 占用空间小,节省CPU开销
- 在使用中,通常会在主键上建立索引,使用整形可以将更多地索引载入内存,提高性能
- 使用整形才可以使用AUTO_INCREAMENT
缺点
- 产生锁竞争的问题
在某个时刻,用户甲、用户乙、用户丙可能会同时或者先后(前面一个作业还没有完成)对数据表A进行查询或者更新的操作。当某个线程涉及到更新操作时,就需要获得独占的访问权。在更新的过程中,所有其它想要访问这个表的线程必须要等到其更新完成为止。此时就会导致锁竞争的问题。
2.为什么不能没有主键?
- 主键起到了一个唯一标识的作用,保证我们可以安全的更改或删除表中指定的某一行
成为主键需要具备的两个条件
- 任何两行都不具有相同的主键值
- 每个行都必须具有一个主键值(主键列不允许NULL值)
3.主键的选择顺序?
- (只选择这一个)选择与业务内容无关的一个自增字段作为主键
- 使用自增主键,那么新来的数据就顺序插入到末尾,当一页写满,操作系统开辟另一页供写;如果使用的是非自增主键,那么主键的值就是随机的,那么插入的时候就需要,插入到现有索引页的某一个位置。这时目标页的数据就需要移动,再从磁盘读取,增加了很多开销,且容易产生内存碎片。
- 参考
MySQL为什么要用数字做自增主键?相关推荐
- mysql添加数据的同时返回自增主键id
方法一(实测可用): <insert id="add" useGeneratedKeys="true" keyProperty="id" ...
- mysql自增主键到头了怎么办_自增主键用完了怎么办
在面试中,大家应该经历过如下场景 面试官:"用过mysql吧,你们是用自增主键还是UUID?" 你:"用的是自增主键" 面试官:"为什么是自增主键?& ...
- mysql 主键自增_还再使用数据库自增主键吗?
加油站: 在数字经济时代,数据的重要性堪比石油.大数据的四个特点:Volume(数据体量大).Variety(数据类型繁多).Velocity(处理速度快).Value(商业价值高),只要合理利用数据 ...
- MySQL自增主键删除后重复问题
这是我同事的一个朋友遇到的问题,标题可能有些拗口,我重现下场景: 设置一张MySQL表,表里有一个自增主键ID,往表里插入数据,假如插入数据之后表最后一行的ID是100,我先删除这条ID为100的记录 ...
- oracle 实现 自增主键功能
转自:https://blog.csdn.net/zxh2075/article/details/78488141 之前有一项工作是将mysql的数据库实现转移到oracle,遇到了自增主键实现的问题 ...
- 数据库自增主键用完了怎么办
引言 在面试中,大家应该经历过如下场景 面试官:"用过mysql吧,你们是用自增主键还是UUID?" 你:"用的是自增主键" 面试官:"为什么是自增主 ...
- 自增主键用完了怎么办?
点击上方"Java后端技术",选择"置顶或者星标" 你关注的就是我关心的! 作者:孤独烟 微信公众号:孤独烟(zrj_guduyan) 引言 在面试中,大家应该 ...
- bigint如何自增_自增主键用完了该怎么办
引言 在面试中,大家应该经历过如下场景面试官:"用过mysql吧,你们是用自增主键还是UUID?" 你:"用的是自增主键" 面试官:"为什么是自增主键 ...
- MySQL使用on duplicate key update时导致主键不连续自增
在做数据统计的时候,我们经常会用到mysql的on duplicate key update语法来自动更新数据,比如 最近项目上需要实现这么一个功能:统计每个人每个软件的使用时长,客户端发过来消息,如 ...
最新文章
- SQL Server 查看identity值的几种方法。
- P4294-[WC2008]游览计划【斯坦纳树】
- JavaScript中的原型继承原理
- sklearn特征工程
- springboot之数据校验及多环境切换
- 如和用Python获取今日头条上面三千美女图,且看教程
- 如果你正处于迷茫期,那就来做这份工作吧!
- sql中全文检索的具体细节
- 强悍的 Ubuntu —— 粘贴板
- 用Python画一颗心、小人发射爱心
- 使用py 和flask 实现的服务器系统目录浏览,日志文件实时显示到网页的功能
- 计算机excel素材,excel操作练习题素材.doc
- 怎样缩小图片大小kb?
- PSD95抗体研究丨SYSY PSD95抗体结果图展示
- 高效能人士的七个习惯简介
- 融云会话界面自定义功能_Android快速集成融云
- QT HTTP接收多个数据包生成图片
- Error retrieving parent for item: No resource found that matches the given name 'Theme.AppCompat.Lig
- AWD平台搭建–Cardinal
- 贝叶斯网络、拉普拉斯平滑
热门文章
- Kubernetes CRD开发模式及源码实现深入剖析-Kubernetes商业环境实战
- welcome to my blog
- PL/SQL Developer 使用技巧小结(转)
- linux带宽最小的远程桌面,【图片】linux下哪种远程桌面服务最快?_linux吧_百度贴吧...
- linux 安装ftp下载,LINUX FTP安装与配置
- Mysql高级考试题_MySQL高级应用答案试题题目及答案,期末考试题库,章节测验答案...
- Scude导入MySQL_FM2017_FMF赛季更新和真实修正数据库[更新至9.9,超过89000个更新]
- 如何在redhat8里使用gcc命令_如何使用who命令检查用户登录信息
- html标签object和embed,html标签object和embed的区别
- java applet 换行_Java复习题