数据库常见问题

1.1.1. 什么是视图
视图(VIEW)也被称作虚表,即虚拟的表,是一组数据的逻辑表示,其本质是对应于一条SELECT语句,

1.1.2. 视图的作用
如果需要经常执行某项复杂查询,可以基于这个复杂查询建立视图,此后查询此视图即可,简化复杂查询;
 

7.场景题:在mysql的默认隔离级别下
有两个事务:事务A和事务B
第一个瞬间:事务A  begin
第二个瞬间:事务B  begin
第三个瞬间:事务A  update t set k=2 where id=1
第四个瞬间:事务B update t set k=3 where id=1,,这时候会发生什么嘛?
第五个瞬间:事务B  select k from t where id=1,,这个时候k等于多少?(面完试我才知道4的时候会卡住,但我当时瞎猜了。。)
第六个瞬间:事务A提交
第七个瞬间:事务B再读一次k,k是多少?

 

(这一题直接给我问懵)

4个隔离级别

5.幻读是什么

如何优化索引?用redis怎么优化?慢SQL调优的具体过程

怎样防止大事务,及处理办法

MySQL 索引 如何优化索引 explain 关键字 索引失效
SQL调优了解吗?

首先找出慢sql(慢sql日志,show proceslist)

其次用explain执行慢sql获取执行计划(分析的字段key,type,rows,extra),找到sql执行慢的原因(没用使用索引,出现长事务造成死锁)

没有使用索引的原因可能是索引建立的有问题,也可能是where条件使用不当(所以答索引建立的准则,和sql语句想要使用索引的注意事项)
如果是长事物的话注意,如何避免长事物,以及如何如何检查长事务




为什么有主键索引树?

主键具有唯一性,我们往往通过主键去查询数据(来确保获取的结果唯一),如果没有主键索引我们用什么索引查询数据呢


next-key lock, record lock, gap lock?

六、Next-Key Locks

Next-Key Locks 是 MySQL 的 InnoDB 存储引擎的一种锁实现。

MVCC 不能解决幻影读问题,Next-Key Locks 就是为了解决这个问题而存在的。在可重复读(REPEATABLE READ)隔离级别下,使用 MVCC + Next-Key Locks 可以解决幻读问题。

#Record Locks

锁定一个记录上的索引,而不是记录本身。

如果表没有设置索引,InnoDB 会自动在主键上创建隐藏的聚簇索引,因此 Record Locks 依然可以使用。

#Gap Locks

锁定索引之间的间隙,但是不包含索引本身。例如当一个事务执行以下语句,其它事务就不能在 t.c 中插入 15。

 

SELECT c FROM t WHERE c BETWEEN 10 and 20 FOR UPDATE;
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

#Next-Key Locks

它是 Record Locks 和 Gap Locks 的结合,不仅锁定一个记录上的索引,也锁定索引之间的间隙。它锁定一个前开后闭区间,例如一个索引包含以下值:10, 11, 13, and 20,那么就需要锁定以下区间:

 

(-∞, 10]
(10, 11]
(11, 13]
(13, 20]
(20, +∞)
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

#


mysql是mvcc如何实现的

可重复读怎么解决不可重复读问题(我就对不可重复读举了个例子他就没让我继续往下说了)

 

怎么用sql语句实现乐观锁

 

一条SQL语句在MySQL中执行过程全解析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值