RSS
菜单
社区成员个人主页
阿成员
DEV CN / 成员主页

阿青 · 社区话题账号

查看阿青 · 社区话题账号发布的技术文章、关注圈子与公开讨论。

0技术文章4关注圈子457圈内发布1关注者
COMMUNITY POSTS

交流圈发布内容

作者在不同技术圈子中的观点与讨论

1
# MySQL

给 MySQL 面试者几条实用建议?

① 原理优先:B+ 树、MVCC、两阶段提交、redo/binlog/undo 能讲透(画图更好),这是拉分点;② 动手实践:自己搭主从、开慢日志、EXPLAIN 分析真实慢 SQL,别只背概念;③ 场景题有套路:面试官给表给查询让你优化——先看是否索引/覆盖/深分页/事务锁,按 EXPLAIN 思路答;④ 准备几个真实案例:线上慢查询优化、死锁解决、主从延迟处理(能讲清背景-排查-方案-结果);⑤ 背关键参数与命令:EXPLAIN 字…

2
# MySQL

MySQL 外键该不该用?有什么利弊?

外键(FOREIGN KEY):数据库层保证引用完整性(子表外键必须存在于父表,删除/更新父表受限)。利:① 数据一致性由 DB 强制(应用漏校验也不会脏数据);② 级联操作(ON DELETE CASCADE)简化代码。弊:① 性能开销:每次 DML 都检查父表(加锁、影响并发);② 高并发/分库分表后外键失效(跨库无法约束);③ 运维复杂(删表/改结构顺序约束);④ 阿里规范明确禁外键(应用层保证)。结论:中小项目/数据一致性要求高…

3
# MySQL

MySQL 分区表是什么?适用场景与限制?

分区表:逻辑上单表,物理上按分区键拆成多个分区文件(RANGE/LIST/HASH/KEY 四种分区方式),查询时可裁剪(partition pruning)只扫相关分区。适用:① 时间序列数据(订单、日志按年/月 RANGE 分区,归档直接 drop 分区);② 大表按时间/业务范围管理(删除历史数据快);③ 查询经常带分区键。限制/坑:① 分区键必须包含在主键/唯一键中;② 分区列查询不带分区键无法裁剪;③ 分区数过多(>1024)…

4
# MySQL

MySQL 数据库脑裂是什么?怎么避免?

脑裂(Split Brain):高可用集群中因网络分区/心跳异常,多个节点都认为自己是主(可写),导致双主写、数据分叉、恢复时数据不一致。常见场景:主从/双主心跳超时后从库被提升,原主网络恢复又继续写。避免手段:① 仲裁机制:第三方仲裁(VIP 存活探测、仲裁节点)少数服从多数(quorum)——多数派才有权当主;② MGR 组复制:Paxos 多数派协议天然防脑裂(少数派只读/拒写);③ 半同步复制:新主确认收到数据再切换(防丢+防分…

5
# MySQL

线上 MySQL 出问题怎么排查?

排查流程:① 看监控:连接数、QPS、慢查询、CPU/IO/内存、主从状态(先定异常面);② 快速止血:连接打满 kill 慢查询/无用连接;磁盘满清理 binlog;大事务回滚/限流;③ 慢 SQL:SHOW PROCESSLIST 抓当前慢语句 → EXPLAIN 分析(索引/扫描行/临时表/排序);④ 锁问题:SHOW ENGINE INNODB STATUS 看锁等待/死锁、information_schema.innodb_t…

6
# MySQL

MySQL 学习路线怎么规划?

阶段一(1-2 周):SQL 基础——建库建表、增删改查、聚合分组、JOIN、子查询(配合练习题刷熟);阶段二(2 周):原理——存储引擎(InnoDB 结构)、索引原理(B+ 树)、事务隔离与 MVCC、日志体系(redo/binlog/undo);阶段三(2 周):优化实战——EXPLAIN 执行计划、慢查询定位、索引优化案例、参数调优;阶段四(1-2 周):架构——主从复制搭建、读写分离(ProxySQL)、备份恢复演练;阶段五(…

7
# MySQL

MySQL 和 PostgreSQL 怎么选?

MySQL:易用(人人都会)、生态成熟(互联网标配、云 RDS 支持最好)、主从/分库分表方案成熟、性能在 OLTP 简单查询优秀;8.0 特性增强(窗口函数、CTE、hash join)。PostgreSQL:功能更全更强(复杂查询、CTE 递归、JSONB、全文检索、地理空间 PostGIS、物化视图、自定义类型/函数)、标准兼容好、并发控制(MVCC 更精细)、扩展性强;学习曲线与运维略复杂。选型:互联网 CRUD/海量数据/团队…

8
# MySQL

MySQL 和 Redis 怎么配合使用?缓存一致性怎么保证?

经典组合:Redis 做缓存加速读(Cache Aside),MySQL 做数据源。流程:读——先查 Redis,命中直接返回;miss 查 MySQL 回填 Redis(设 TTL);写——先更新 MySQL,再删 Redis(或延迟双删:更新 DB → 删缓存 → 延迟 N ms 再删一次,防并发读把旧值回填)。一致性权衡:① 强一致:直接读写 DB(缓存只读加速);② 最终一致:Cache Aside + 延迟双删 + 消息(DB…

9
# MySQL

MySQL 面试高频题有哪些?

基础:B+ 树为什么适合索引、聚簇/二级索引、回表与覆盖索引、索引失效场景;事务:ACID 与实现机制、隔离级别、MVCC、幻读与间隙锁、当前读/快照读;锁:行锁/表锁/间隙锁、死锁产生与解决;日志:redo/binlog/undo 区别、两阶段提交、WAL;复制:主从原理、延迟原因与解决、读写分离;优化:EXPLAIN 关键字段、慢查询定位、深分页优化、大表优化;高可用:MHA/MGR、分库分表、分布式事务、全局 ID。准备建议:动手…