ohmyblog

#数据库

经典题解析:主键用 int 还是 string,不只是存储大小问题

先说明属性:这是一篇经典题解析,题目出自本地历史面试资料(原题问「使用 int 做 primary key 和使用 string 有什么优劣」),与任何公司的当前招聘无关。

经典题解析:数据库三范式,什么时候该遵守、什么时候该违反

先说明属性:这是一篇经典题解析,题目出自本地历史面试资料,与任何公司的当前招聘无关。三范式是数据库理论的老面孔,但面试官真正想听的是后半句:什么时候该违反它。只会背定义的人,解释不了为什么真实业务库里宽表遍地都是。

经典题解析:inner join、left join、right join,一张图记住

先说明属性:这是一篇经典题解析,题目出自本地历史面试资料,与任何公司的当前招聘无关。连接查询的种类是 SQL 面试的基本功题,靠背定义容易混,画两个圆就再也不会错。

经典题解析:drop、delete、truncate 都是删,区别在哪

先说明属性:这是一篇经典题解析,题目出自本地历史面试资料,与任何公司的当前招聘无关。drop、delete、truncate 是数据库面试的保留节目,题面短,但一口气能问出语句分类、事务行为、日志开销和工程安全意识。

经典题解析:MySQL 存储引擎怎么选,InnoDB 凭什么成为默认

先说明属性:这是一篇经典题解析,题目出自本地历史面试资料,与任何公司的当前招聘无关。题面只有一句话:MySQL 的存储引擎有哪几种,怎么选?

经典题解析:建索引之前,先把这几件事想清楚

先说明属性:这是一篇经典题解析,题目出自本地历史面试资料,与任何公司的当前招聘无关。「创建数据库索引应该怎么考虑」——这道题不问原理,问的是决策。很多人背得出 B+ 树结构,却在生产表上乱建索引:查询没快多少,写入先慢了一截。

经典题解析:数据库事务靠什么实现,undo log 和 redo log 各管什么

先说明属性:这是一篇经典题解析,题目出自本地历史面试资料,与任何公司的当前招聘无关。「事务的 ACID 靠什么实现」是数据库面试的骨架题——undo log、redo log 两个词人人会背,但「崩溃的那一刻数据库做了什么」能把一半人问倒。

经典题解析:SQL 优化从哪几处下手,最左前缀到底什么意思

先说明属性:这是一篇经典题解析,题目出自本地历史面试资料,与任何公司的当前招聘无关。「SQL 优化从哪几处下手」配「最左前缀是什么意思」,是数据库面试的经典组合拳:前者考你有章法,后者考你真懂索引。

经典题解析:单表数据量太大,分库分表有哪些拆法

先说明属性:这是一篇经典题解析,题目出自本地历史面试资料(见文末来源说明),与任何公司的当前招聘无关。「单表数据量太大怎么办」是数据库方向的架构题,面试官想听的不是背诵「分库分表」四个字,而是你清不清楚拆开的两种方向、以及拆开之后必然冒出来的新问题。

经典题解析:数据库的隔离级别和 MVCC,一题讲透

先说明属性:这是一篇经典题解析,题目出自本地历史面试资料(见文末来源说明),与任何公司的当前招聘无关。「四种隔离级别」是数据库面试的必背题,但只背表格的人过不了追问——面试官真正想要的后半句是:InnoDB 的「可重复读」为什么能做到读写互不阻塞?这就必须讲 MVCC。