面试题答案
一键面试事务隔离级别相关性能瓶颈及解决策略
- 性能瓶颈:
- 读未提交(Read Uncommitted):可能读到脏数据,虽无额外锁开销,但可能导致后续业务逻辑基于错误数据处理。
- 读已提交(Read Committed):每次读操作需获取共享锁,事务内多次读相同数据可能重复加锁解锁,影响性能,且并发写入时,写锁等待时间长。
- 可重复读(Repeatable Read):事务启动时需获取所有读取数据的共享锁并持有至事务结束,限制并发读操作,锁竞争激烈。
- 串行化(Serializable):完全串行执行事务,并发性能极低,锁持有时间最长,导致其他事务长时间等待。
- 解决策略:
- 根据业务场景合理选择隔离级别,如对数据一致性要求不高且追求高并发读场景可选读未提交或读已提交;对数据一致性要求高且并发读多写少场景可考虑可重复读;只有在对数据一致性要求极高,不允许并发场景才用串行化。
并发控制相关性能瓶颈及解决策略
- 性能瓶颈:
- 锁争用:多个事务同时访问相同数据时,锁竞争激烈,如写操作获取排他锁,其他读写操作需等待,导致事务等待时间长,吞吐量降低。
- 死锁:事务间相互等待对方释放锁,形成死循环,需数据库检测并回滚其中一个事务,增加额外开销。
- 解决策略:
- 优化锁粒度:尽量使用细粒度锁,如文档级锁而非集合级锁,减少锁冲突范围。
- 调整事务顺序:按固定顺序访问资源,避免死锁发生。
- 死锁检测与处理优化:提高死锁检测频率,快速发现并回滚代价最小的事务。
存储引擎缓存相关性能瓶颈及解决策略
- 性能瓶颈:
- 缓存命中率低:若缓存数据量小于频繁访问数据量,大量数据需从磁盘读取,I/O开销大,性能降低。
- 缓存刷新策略不合理:如刷新频率过高,频繁写入磁盘影响性能;刷新频率过低,内存占用过大甚至导致内存溢出。
- 解决策略:
- 合理配置缓存大小:根据服务器内存资源和业务数据访问模式,适当增加缓存大小,提高缓存命中率。
- 优化缓存刷新策略:采用更智能的刷新策略,如基于访问频率和时间的LRU(最近最少使用)策略,优先刷新不常用数据。