面试必考题-数据库自增主键,自增主键用完

无论是做PHP开发还是做JAVA开发甚至前端开发,只要是开发,面试的时候都必考数据库。为什么前端也要考数据库?因为数据库课程是计算机的基础课程,同样的基础课程还有操作系统,数据结构。只要写代码就永远跳不出这三门基础课。

面试官和面试者都知道要考数据库,都会去刷题,数据库的知识点其实很少,一天就能刷完。长久以往面试流程会变成背书流程,面试官题目没说完,答题者已经了然于心,这样根本选不出合适的CRUD boy。很多大厂意识到了这点,所以一直在改革,比如宇宙大厂字节跳动就需要手写算法(红黑树是必背题)。怎么改呢?可以参考高考,拿高考数学来说,每年考察的知识点都差不多,这就会导致考满分的人逐年递增(优秀的人和更优秀的人无法拉开差距)。和机器学习很像,样本量越大,考生越不需要靠「运气」做出「好」的结果。所以出题人要想办法考察答题人的解题思路。

wxchat.png
wxchat (1).png
wxchat (2).png

面试谈到数据库肯定会谈到数据库引擎,不同索引的数据结构实现,SQL优化等。如果面试官直接问这几个问题,面试者肯定对答如流。因为网上的面试宝典早已把这些问题分析的入木三分,配上一些形象的例子,比读修仙小说还精彩。但优秀的面试官从不按套路出牌。

正常来说程序员是不会关心自增ID用完的,阿里的编程规范广为流传,里面严格要求自增ID为unsigned bigint,程序员和DBA都默认遵守这个规范。unsigned bigint到底有多大?The unsigned range is 0 to 18446744073709551615,想把这个值用完太难了。

那面试官到底想了解什么?

一. 自增ID用完了会报什么错?

具体报错信息是什么?面试官自己都不一定知道。不同的数据库底层实现不一样,不同版本也有差异。我测试不同版本的MySQL就有两个答案

1. Duplicate entry '*****' for key 'PRIMARY'
2. SQL Error (167): Out of range value for column 'id'.

大家都知道会报错,但是没人能肯定具体报错信息是什么。可能是数据越界,也可能是主键冲突,那就没有了标准答案,最后看谁的知识储备更多。一般来说一面面试官的技术不一定比面试者强。

二. 自增ID为什么用不完?

第一个问题是为了引出第二个问题。因为自增主键通常会设置为unsigned bigint,最大值为18446744073709551615,假设我们的项目需要每秒记录100万条数据,这个自增ID使用100万年后都用不完。全球也没几家公司能达到这个量级。

如果面试官问200万年后不会用完吗?这是个好问题。

参照当前的数据库软件和服务器硬件来说,MySQL单机单表的处理能力是千万级别。意思是当单表数据达到1千万时,MySQL性能就会开始下降,需要着手优化,这里的瓶颈主要是查询耗时。我们可以通过分区再撑一段时间,当数据量到10亿时,基本到了MySQL的极限,不分表分库的话,业务难以持续。如果分表分库的话自增ID很难保证唯一性,这时候必须弃用自增ID,采用其他算法。最后从业务的角度来讲自增ID不可能用完,单表支撑不了那么大的数据量。

三. 自增ID如何优化

当数据量达到千万时,数据库的单表性能会开始下降。这时为了优化性能,同时保证数据有唯一ID,又要考察另一个知识点了,这里不展开讲,大家看下这篇文章。

最后

感谢有朋友监督我更新文章,明天会再发一篇,分享我近期挖到的一个CSS漏洞,特别有意思,可以劫持很多网站的流量。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,386评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,142评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,704评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,702评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,716评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,573评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,314评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,230评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,680评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,873评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,991评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,706评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,329评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,910评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,038评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,158评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,941评论 2 355

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 10,970评论 6 13
  • 在数据库表设计中会纠结于”自然键”和”代理键”的选择,自然键在实现数据“软删除”时实现比较复杂,部分自然键因为键值...
    Ferrari1001阅读 1,841评论 0 0
  • MySQL数据库对象与应用 2.1-MySQL数据类型 库建立好之后基本不动,和我们接触最频繁的是表. 建表就是声...
    极客圈阅读 2,144评论 0 8
  • 在各个类似抖音、微博等的网络平台,我们会时不时的在孩子们的各种萌萌画面前停留。他们的动作,轻轻地融化着我们那颗柔软...
    Flyingforw_8d7f阅读 1,433评论 0 0
  • 寺庙就算经历了雪藏的年代,依然无法抹去他在信徒心中的地位。 语文课上老师总结啊,佛教是一个没有利用信仰制造暴乱的宗...
    不浣阅读 206评论 0 1