MySQL
你可能会说
面试官问为什么用 MySQL 不用 PostgreSQL,我只答得出「公司一直用这个」。
互联网业务最常用的开源关系型数据库数据按表存放,用 SQL 查询,用事务保证一组写入要么全成要么全败。默认引擎 InnoDB 提供行级锁和崩溃恢复;会它的人最多,遇到问题最容易搜到答案。
也常被叫作MySQL 数据库InnoDB
什么时候选它
- 订单、用户、库存这类必须保证一致的业务数据
- 需要 JOIN、聚合、事务的传统业务系统
- 团队和招聘市场都熟:排错、招人、托管服务都容易
- 单表千万行以内、读写比正常的在线业务
什么时候别选
- 海量日志、埋点、时序数据(列式库或对象存储更合适)
- 以全文检索、地理、向量检索为核心的产品
- 写入量巨大且能接受最终一致——分库分表前先想清楚
容易混在一起 · 怎么分
MySQL≠PostgreSQL
MySQL 生态更「人多手熟」,运维和托管最成熟;PG 的 SQL 能力、扩展类型(JSONB、地理、向量)和约束更完整。
MySQL≠Redis
MySQL 负责「最终正确」,Redis 负责「快」;别把 Redis 当唯一存储。
InnoDB≠MyISAM
InnoDB 有事务、行锁、崩溃恢复;MyISAM 是表锁且不支持事务,只剩历史包袱。
Q面试会问什么
- 问:为什么默认 InnoDB?
答:支持事务、行级锁、MVCC 和外键,崩溃后能恢复;MyISAM 不支持事务、是表锁,已不推荐。 - 问:索引为什么用 B+ 树?
答:层数低、磁盘 IO 少,叶子节点相连适合范围查询和排序;哈希索引只能等值查询。 - 问:RR 和 RC 的区别?
答:RR 同一事务里多次读结果一致(快照 + 间隙锁防幻读),RC 每次读最新已提交数据;互联网业务常用 RC。
延伸阅读 · 权威出处