https://www.nowcoder.com/discuss/821449606692106240
- 正确答案:当 MySQL 存储的数据量太大时,可以通过分库分表、索引优化、读写分离、使用缓存、调整存储引擎和SQL 优化等多种手段进行优化。核心目标是提升查询性能、降低单机负载、提高系统的可扩展性和可用性。
- 解答思路: 面对大数据量的 MySQL 场景,首先要分析瓶颈所在:是磁盘 I/O?内存不足?查询慢?还是连接数过高?然后从架构层面和数据库层面分别入手。
- 先考虑单表优化:如添加合适的索引、避免全表扫描、优化慢查询。
- 再考虑表结构设计:选择合适的数据类型、使用分区表(Partioning)。
- 数据增长部可控时,引入水平拆分(分表)或垂直拆分(分库),将大表拆成多个小表。
- 引入读写分离,利用主从复制分散读压力。
- 使用缓存(如 Redis)减少对数据库的直接访问。
- 对历史数据进行归档或冷热分离,减少活跃数据量。
- 必要时更换存储引擎(如 InnoDB 已经是主流,但特殊场景可考虑 TokuDB 等高压缩引擎)。