面试题答案
一键面试高并发读场景
- 行锁影响:行锁粒度小,高并发读时,多个事务读取不同行数据基本不会相互阻塞,因为它们操作的是不同行,并发性能高。
- 表锁影响:表锁粒度大,只要有一个事务获取表锁进行读操作,其他事务无论是读还是写都要等待锁释放,严重降低查询并发性能。
- 锁策略选择:优先选择行锁,减少锁冲突,提高并发读性能。
高并发写场景
- 行锁影响:行锁虽粒度小,但高并发写时,不同事务可能操作同一行数据,导致行锁竞争,大量事务等待锁,性能下降。
- 表锁影响:表锁下,一个事务获取表锁进行写操作,其他事务都无法操作表,会出现严重阻塞,并发性能极低。
- 锁策略选择:可以考虑适当增加事务隔离级别等方式减少行锁竞争,必要时采用分区表等技术分散写操作,尽量避免表锁。
读写混合场景
- 行锁影响:行锁可以让读和写操作在不同行数据上并发执行,减少读写之间的相互阻塞,提高并发性能。但如果读写操作频繁涉及同一行数据,也会有锁竞争问题。
- 表锁影响:表锁会使读写操作相互阻塞,只要有写操作获取表锁,读操作就必须等待,严重影响并发性能。
- 锁策略选择:对于读多写少的场景,优先行锁;写多读少场景,可适当调整事务隔离级别,减少锁冲突;读写均衡场景,要优化SQL语句,减少锁争用范围,必要时进行锁升级或采用乐观锁等机制。