读写分离

将读请求分发到从库,写请求分发到主库,减轻主库的压力。

实现方式,可以参考这篇文章:实现数据库读写分离有哪几种方式?

  1. 手动AOP + ThreadLocal实现
  2. 通用组件,例如 Apache ShardingSphere

QA:上述两种实现方式的比较?

QA:AOP的原理?

QA:ThreadLocal原理?

QA:Apache ShardingSphere的实现原理?

QA:主从同步如何实现?

分库分表

应对海量数据,分散存储和查询压力。

QA:如何做分库分表?

业务缓存

引用Redis等缓存,存储热点数据或者高频查询数据,缓解数据库压力。

QA:如何识别数据位热数据和冷数据?

QA:缓存数据淘汰机制?

批量操作

批量插入、删除、更新,减少网络IO和事务开销。

慢查询日志分析

定期分析MySQL慢日志,找出耗时SQL优化。

QA:如何进行慢SQL查找和分析优化?

数据参数调优

调整MySQL的innodb_buffer_pool_size、query_cache_size大小。

QA: 这两个参数是干什么的?

硬件优化

优化数据库服务器硬件资源:

  • 升级SSD硬盘
  • 增加内存
  • 更高性能的CPU

特定业务场景优化

某一个数据库并不适用于所有的业务场景。根据特定场景选用非关系型数据库,例如MongoDB,ES等。