面试题答案
一键面试1. 调整连接池大小
- 技巧:根据系统的负载情况,动态或静态地调整连接池中的最大连接数和最小连接数。如果负载较高,适当增加最大连接数;如果负载较低,减小最大连接数避免资源浪费。
- 优点:
- 高并发场景:增加最大连接数可满足大量并发请求对数据库连接的需求,减少等待时间,提升整体系统响应速度。
- 低并发场景:减小最大连接数能避免过多空闲连接占用资源,降低服务器内存等资源消耗。
- 缺点:
- 高并发场景:若最大连接数设置过大,可能导致数据库服务器资源耗尽,如内存不足、CPU 过载等。
- 低并发场景:若最小连接数设置过高,会造成不必要的资源浪费,因为低负载时无需维持过多连接。
2. 连接复用与缓存
- 技巧:尽量复用已经建立的数据库连接,而不是每次请求都创建新连接。可以通过在连接使用完毕后将其返回连接池供后续请求使用,同时可以对一些常用的查询结果进行缓存。
- 优点:
- 高并发场景:减少连接创建和销毁的开销,大大提高系统处理请求的速度,降低数据库服务器压力。缓存常用查询结果可直接返回数据,避免重复查询数据库。
- 低并发场景:同样能减少连接创建开销,提升单个请求响应速度,缓存也有助于提高特定查询的效率。
- 缺点:
- 高并发场景:连接复用可能存在线程安全问题,若处理不当可能导致数据不一致等错误。缓存一致性维护较复杂,数据更新后可能需要及时更新缓存,否则会读到过期数据。
- 低并发场景:缓存管理也有一定开销,对于低并发且数据变化频繁的场景,缓存带来的收益可能不明显,甚至可能因缓存维护开销影响性能。
3. 优化 SQL 查询
- 技巧:对执行的 SQL 语句进行优化,例如添加合适的索引、避免全表扫描、合理使用 JOIN 等操作,提高数据库执行查询的效率。
- 优点:
- 高并发场景:快速的 SQL 查询能减少每个连接处理请求的时间,使得连接池能更高效地处理更多并发请求,提升整体系统性能。
- 低并发场景:同样能提高单个请求的处理速度,减少响应时间。
- 缺点:
- 高并发场景:优化 SQL 需要对业务和数据库有深入理解,可能需要花费较多时间和精力。同时,不当的索引添加可能会增加数据库写入操作的开销,在高并发写入场景下可能影响性能。
- 低并发场景:优化 SQL 的投入产出比可能较低,因为低并发时系统性能瓶颈不一定在 SQL 查询上,可能花费大量精力优化但对整体性能提升有限。