1.索引不适合哪些场景
- 数据量少的不适合加索引
- 更新比较频繁的也不适合加索引
- 离散性低的字段不适合加索引(如性别)
2. 日常工作中你是怎么优化SQL的?
可以从这几个维度回答这个问题:
- 加索引
- 避免返回不必要的数据
- 适当分批量进行
- 优化sql结构
- 主从架构,提升读性能
- 分库分表
3.数据库索引的原理,为什么要用 B+树
1)B+Tree范围查找,定位min与max之后,中间叶子节点,就是结果集,不用中序回溯
2)B+Tree磁盘读写能力更强(叶子节点不保存真实数据,因此一个磁盘块能保存的关键字更多,因此每次加载的关键字越多)
3)B+Tree扫表和扫库能力更强(B-Tree树需要扫描整颗树,B+Tree树只需要扫描叶子节点)
4. 在高并发情况下,如何做到安全的修改同一行数据?
要安全的修改同一行数据,就要保证一个线程在修改时其它线程无法更新这行记录。一般有悲观锁和乐观锁两种方案
使用悲观锁
悲观锁思想就是,当前线程要进来修改数据时,