0221打卡
1.mysql的四种隔离级别。读未提交(最低),读已提交,可重复读(默认隔离级别),串行化(最高,同一时间只能有一个事务在执行,效率最低)
2.脏读和幻读的区别:
- 脏读:一个事务读到另一个事务未提交的数据。(另一个事务可能会失败和回滚)
- 幻读:同一个事务前后两次读到的数据集合不一致
3.mysql的乐观锁和悲观锁:
- 乐观锁:读多写少,所以不加锁,更新的时候会判断别人有没有更改数据(使用版本号来判断)
- 悲观锁:读少写多,每次都上锁。这样保证数据处理的安全,线程执行时会等待阻塞直到拿到锁
4.对数据库做过什么优化?
- 索引优化:对上百万数据的大表的字段创建索引可以减少查询时间,提高查询效率。包括复合索引。比如项目中经常涉及到订单order表。经常需要查询 一个用户哪个时间段做的订单,涉及到 user_id 和 start_date,就需要对这两个字段创建复合索引。
需要注意的是,顺序很重要,要遵循最左匹配原则,如果查询条件最左侧没有user_id,只有start_date的情况下,不会走到这个索引。
CREATE INDEX idx_order_user_date ON orders (user_id, start_date);
- 查询语法优化:慢sql
- 使用缓存:如redis缓存,将数据放入内存中,提高查询效率
- 读写分离:通过主从复制,将读和写分散到不同的服务器,提高系统的并发
- 分库分表:分库:项目中按业务划分为几个中心库。分表:按省份划分,可以分为8个域,每个域都是一个子表
评论
问答助学
相关内容
0个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
