java面试重点自记--数据库

一、MySQL

在这里插入图片描述

1.存储引擎

  • 查看MySQL提供的所有存储引擎
mysql> show engines;

在这里插入图片描述
在这里插入图片描述

  • 查看MySQL当前默认的存储引擎
mysql> show variable like '%storage_engine%';
  • 查看表的存储引擎
mysql> show table status like "table_name";

在这里插入图片描述

1) MyISAM和InnoDB区别

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2)字符集及校对规则

在这里插入图片描述
MySQL字符集及校对规则

3)索引

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

4)查询缓存的使用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5)事务

在这里插入图片描述

6)事务的四大特性(ACID)

在这里插入图片描述
在这里插入图片描述

7)并发事务带来哪些问题?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8)事务隔离级别有哪些?MySQL的默认隔离级别是?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8)锁机制与InnoDB锁算

mySQL锁机制


MyISAM和InnoDB存储引擎使用的锁

  • MyISAM采用表级锁(table-level locking)
  • InnoDB支持行级锁(row-level locking)和表级锁,默认行为行级锁。

行级锁和表级锁对比:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

9)大表优化

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
MySQL大库优化策略

10) 什么是池化设计思想?什么是数据库连接池?为什么需要数据库连接池?

池化设计思想

这里是引用

11)分库分表之后,id主键如何处理?

在这里插入图片描述

12)一些参考

一条SQL在MySQL中如何执行的

MySQL高性能优化规范建议
腾讯面试:一条SQL语句执行得很慢的原因有哪些?—不看后悔系列

后端程序员必备:书写高质量SQL的30条建议

二、Redis

1. Redis

在这里插入图片描述

2.分布式缓存常见的技术选型方案有哪些?

在这里插入图片描述
在这里插入图片描述

1)Redis和Memcached的区别和共同点

在这里插入图片描述
在这里插入图片描述

2)缓存数据的处理流程?

在这里插入图片描述
在这里插入图片描述

3)为什么要用Redis/为什么要用缓存?

在这里插入图片描述

  • 高性能
    在这里插入图片描述

  • 高并发
    在这里插入图片描述

3.Redis常见的数据结构及使用场景分析:

1)string

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2)list

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3)hash

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4)set

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5) sorted set

在这里插入图片描述
在这里插入图片描述

4. Redis单线程模型详解

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4. Redis没有使用多线程?为什么不使用多线程?

在这里插入图片描述
在这里插入图片描述

5.Redis6.0之后为何引入多线程?

在这里插入图片描述

1)Redis6.0实现机制

在这里插入图片描述

流程简述如下:
1、主线程负责接收建立连接请求,获取 socket 放入全局等待读处理队列
2、主线程处理完读事件之后,通过 RR(Round Robin) 将这些连接分配给这些 IO 线程
3、主线程阻塞等待 IO 线程读取 socket 完毕
4、主线程通过单线程的方式执行请求命令,请求数据读取并解析完成,但并不执行
5、主线程阻塞等待 IO 线程将数据回写 socket 完毕
6、解除绑定,清空等待队列

在这里插入图片描述

推荐阅读
Redis6.0新特性-多线程连环13问!
为什么redis选择单线程模型

6. Redis给缓存设置过期时间有啥用?

在这里插入图片描述

7. Redis如何判断数据是否过期的呢?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8.过期数据的删除策略?

在这里插入图片描述
在这里插入图片描述

9. Redis内存淘汰机制?

在这里插入图片描述
在这里插入图片描述

10.Redis持久化机制(怎么保证Redis挂掉之后再重启数据可以进行恢复)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
redis的AOF 方式
在这里插入图片描述

11.Redis事务

在这里插入图片描述
在这里插入图片描述
Reids官网介绍在此
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Redis不满足原子性的问题
阅读解释

12. 缓存穿透

1)什么是缓存穿透?

在这里插入图片描述

2)缓存穿透的处理流程是怎么样的?

如下图所示,用户的请求最终都要跑到数据库中查询一遍
在这里插入图片描述

3)解决办法

在这里插入图片描述

  1. 缓存无效key
    在这里插入图片描述
    在这里插入图片描述

  2. 布隆过滤器
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    布隆过滤器

13.缓存雪崩

1)什么是缓存雪崩?

在这里插入图片描述

2)解决方法?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

14.如何保证缓存和数据数据的一致性?

在这里插入图片描述
## 15

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Changcc_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值