面试题答案
一键面试常见配置参数
- lock_timeout
- 说明:此参数设置一个语句等待锁的最长时间,单位为毫秒。若等待时间超过此设定值,语句将报错并回滚。
- 默认值:通常为0,表示无超时限制,会一直等待锁。
场景及参数调整策略
- 高并发短事务场景
- 场景描述:大量短事务同时执行,竞争锁资源频繁。
- 调整策略:适当设置
lock_timeout
为一个较小的值,如5000毫秒(5秒)。这样能使等待锁超时的事务快速失败并回滚,释放资源,避免长时间等待占用资源,提升系统整体并发处理能力。同时,应用程序需做好事务重试逻辑,确保失败的事务能再次执行。
- 长事务且锁竞争不激烈场景
- 场景描述:事务处理复杂,执行时间长,但锁竞争情况较少。
- 调整策略:可将
lock_timeout
设置为较大值或保持默认的0,因为长时间的事务处理本身就需要足够的时间获取锁,设置较小的超时可能导致不必要的事务回滚。例如,对于一些涉及复杂数据计算和更新的批处理事务,将lock_timeout
设置为60000毫秒(60秒)甚至更大,以确保事务能正常执行完毕。
- 混合事务场景
- 场景描述:既有长事务,又有短事务,锁竞争情况多样。
- 调整策略:可先尝试设置一个适中的
lock_timeout
值,如10000毫秒(10秒)。同时,对长事务和短事务进行分类处理。对于长事务,可通过优化业务逻辑,尽量减少锁的持有时间;对于短事务,确保其能快速获取锁执行。如果发现某些特定类型的事务经常因锁等待超时失败,可针对性地调整相关事务获取锁的逻辑或适当调整lock_timeout
值。