面试题答案
一键面试1. 数据库索引优化
- 技巧:合理创建索引,包括单列索引、联合索引等,索引能够加快数据的查找速度。例如在经常用于查询条件的字段上创建索引。
- 适用场景:适用于读多写少的场景,如报表查询系统,大量数据查询操作依赖索引快速定位数据。但写操作(插入、更新、删除)会因索引维护而变慢,所以写操作频繁场景需谨慎使用。
2. 读写分离
- 技巧:通过主从复制机制,将读操作分配到从库,写操作仍在主库执行。主库负责数据的写入并同步数据到从库,从库分担读压力。
- 适用场景:适用于读操作远多于写操作的应用,如新闻资讯网站,大量用户浏览新闻(读操作),而编辑发布新闻(写操作)相对较少。
3. 缓存机制
- 技巧:在应用和数据库之间加入缓存层,如Redis。先从缓存读取数据,缓存未命中再查询数据库,并将查询结果写入缓存。
- 适用场景:适用于数据变化频率低且查询频繁的数据,像电商平台的商品基本信息,商品上架后短时间内不会频繁修改,但大量用户会查询商品详情。
4. 分库分表
- 技巧:
- 垂直分库:按照业务模块将不同业务的数据拆分到不同数据库,例如将用户相关数据放在用户库,订单相关数据放在订单库。
- 垂直分表:把表中不常用或大字段拆分到另一张表,比如将用户表中的简历字段拆分到单独表。
- 水平分表:根据某一字段(如时间、ID 取模等)将数据分散到多个表中,如按日期将订单表按月份拆分。
- 适用场景:
- 垂直分库:适用于业务系统庞大,不同业务模块之间耦合度低的场景,可降低单个数据库压力并提升可维护性。
- 垂直分表:适用于表字段过多,部分字段查询频率低或占用空间大的情况,减少单次查询数据量。
- 水平分表:适用于数据量超大,单表数据过多影响读写性能的场景,如大型电商平台的订单数据按时间分表存储。
5. 批量操作
- 技巧:在插入、更新数据时,采用批量操作方式,减少数据库交互次数。如使用 JDBC 的 batch 方法批量插入数据。
- 适用场景:适用于需要一次性处理大量数据的写操作场景,如数据导入,批量更新用户状态等。减少数据库连接交互开销,提升整体写性能。