卡搜偶
这个作者很懒,什么都没留下…
展开
-
面试数据库篇(mysql)- 12分库分表
垂直分库:以表为依据,根据业务将不同表拆分到不同库中。垂直分表:以字段为依据,根据字段属性将不同字段拆分到不同表中。特点:1,冷热数据分离2,减少IO过渡争抢,两表互不影响。原创 2024-02-28 16:08:24 · 286 阅读 · 0 评论 -
面试数据库篇(mysql)- 11主从同步
二进制日志(BINLOG)记录了所有的 DDL(数据定义语言)语句和 DML(数据操纵语言)语句,但不包括数据查询(SELECT、SHOW)语句。MySQL主从复制的核心就是二进制日志。原创 2024-02-28 15:54:56 · 232 阅读 · 0 评论 -
面试数据库篇(mysql)- 10事务中的隔离性是如何保证
解决的是一个事务查询选择版本的问题,在内部定义了一些匹配规则和当前的一些事务id判断该访问那个版本的数据,不同的隔离级别快照读是不一样的,最终的访问的结果不一样。主要的作用是记录回滚日志,存储老版本数据,在内部会形成一个版本链,在多个事务并行操作某一行记录,记录不同事务修改数据的版本,通过roll_pointer指针形成一个链表。简单的select(不加锁)就是快照读,快照读,读取的是记录数据的可见版本,有可能是历史数据,不加锁,是非阻塞读。事务的隔离性是由锁和mvcc实现的。1.记录中的隐藏字段。原创 2024-02-28 15:42:01 · 267 阅读 · 0 评论 -
面试数据库篇(mysql)- 09undo log和redo log的区别
该日志文件由两部分组成:重做日志缓冲(redo log buffer)以及重做日志文件(redo log file),前者是在内存中,后者在磁盘中。当事务提交之后会把所有修改信息都存到该日志文件中, 用于在刷新脏页到磁盘,发生错误时, 进行数据恢复使用。undo log和redo log记录物理日志不一样,它是逻辑日志。重做日志,记录的是事务提交时数据页的物理修改,是用来。undo log可以实现事务的一致性和原子性。原创 2024-02-28 15:21:24 · 237 阅读 · 0 评论 -
面试数据库篇(mysql)- 08事务
事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。ACID是什么?可以详细说一下吗?原创 2024-02-28 15:14:28 · 197 阅读 · 0 评论 -
面试数据库篇(mysql)- 07索引创建原则与失效及优化
1). 针对于数据量较大,且查询比较频繁的表建立索引。2). 针对于常作为查询条件(where)、排序(order by)、分组(group by)操作的字段建立索引。3). 尽量选择区分度高的列作为索引,尽量建立唯一索引,区分度越高,使用索引的效率越高。4). 如果是字符串类型的字段,字段的长度较长,可以针对于字段的特点,建立前缀索引。5). 尽量使用联合索引,减少单列索引,查询时,联合索引很多时候可以覆盖索引,节省存储空间,避免回表,提高查询效率。原创 2024-02-28 15:01:46 · 180 阅读 · 0 评论 -
面试数据库篇(mysql)- 06覆盖索引
是指查询使用了索引,并且需要返回的列,在该索引中已经全部能够找到。原创 2024-02-28 14:35:18 · 169 阅读 · 0 评论 -
面试数据库篇(mysql)- 05什么是聚簇索引什么是非聚簇索引
回表查询。原创 2024-02-28 14:09:03 · 183 阅读 · 0 评论 -
面试数据库篇(mysql)- 04了解过索引吗?(什么是索引)
索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构(B+树),这些数据结构以某种方式引用(指向)数据, 这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。B-Tree,B树是一种多叉路衡查找树,相对于二叉树,B树每个节点可以有多个分支,即多叉。以一颗最大度数(max-degree)为5(5阶)的b-tree为例,那这个B树每个节点最多存储4个key。原创 2024-02-28 13:59:40 · 161 阅读 · 0 评论 -
面试数据库篇(mysql)- 03MYSQL支持的存储引擎有哪些, 有什么区别
存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表的,而不是基于库的,所以存储引擎也可被称为表类型。原创 2024-02-28 11:28:07 · 171 阅读 · 0 评论 -
面试数据库篇(mysql)- 02定位慢查询和分析
表象:页面加载过慢、接口压测响应时间过长(超过1s)调试工具:Arthas运维工具:Prometheus 、Skywalking慢查询日志记录了所有执行时间超过指定参数(long_query_time,单位:秒,默认10秒)的所有SQL语句的日志 如果要开启慢查询日志,需要在MySQL的配置文件(/etc/my.cnf)中配置如下信息:配置完毕之后,通过以下指令重新启动MySQL服务器进行测试,查看慢日志文件中记录的信息 /var/lib/mysql/localhost-slow.log。原创 2024-02-28 11:18:27 · 176 阅读 · 0 评论 -
面试数据库篇(mysql)- 01开篇
数据库面试方向:原创 2024-02-28 10:55:42 · 30 阅读 · 0 评论 -
面试redis篇-13Redis为什么那么快
I/O多路复用是指利用单个线程来同时监听多个Socket ,并在某个Socket可读、可写时得到通知,从而避免无效的等待,充分利用CPU资源。目前的I/O多路复用都是采用的epoll模式实现,它会在通知用户进程Socket就绪的同时,把已就绪的Socket写入用户空间,不需要挨个遍历Socket来判断是否就绪,提升了性能。IO多路复用:是利用单个线程来同时监听多个Socket ,并在某个Socket可读、可写时得到通知,从而避免无效的等待,充分利用CPU资源。,增加命令转换速度,在。原创 2024-02-26 15:32:01 · 236 阅读 · 0 评论 -
面试redis篇-12Redis集群方案-分片集群
主从和哨兵可以解决高可用、高并发读的问题。原创 2024-02-26 15:16:34 · 251 阅读 · 0 评论 -
面试redis篇-11Redis集群方案-哨兵
Redis提供了哨兵(Sentinel)机制来实现主从集群的自动故障恢复。原创 2024-02-26 15:11:41 · 223 阅读 · 0 评论 -
面试redis篇-10Redis集群方案-主从复制
当然,如果在rdb生成执行期间,依然有请求到了主节点,而主节点会以命令的方式记录到缓冲区,缓冲区是一个日志文件,最后把这个日志文件发送给从节点,这样就能保证主节点与从节点完全一致了,后期再同步数据的时候,都是依赖于这个日志文件,这个就是。指的是,当从节点服务重启之后,数据就不一致了,所以这个时候,从节点会请求主节点同步数据,主节点还是判断不是第一次请求,不是第一次就获取从节点的offset值,然后主节点从命令日志中获取offset值之后的数据,发送给从节点进行数据同步。:能说一下,主从同步数据的流程。原创 2024-02-26 15:03:15 · 194 阅读 · 0 评论 -
面试redis篇-09redis分布式锁
Redis实现分布式锁主要利用Redis的setnx命令。setnx是SET if not exists(如果不存在,则 SET)的简写根据业务执行时间预估给锁续期redisson实现的分布式锁-可重入利用hash结构记录线程id和重入次数redisson实现的分布式锁-主从一致性RedLock(红锁):不能只在一个redis实例上创建锁,应该是在多个redis实例上创建锁(n / 2 + 1),避免在一个redis实例上加锁。原创 2024-02-26 13:59:24 · 203 阅读 · 0 评论 -
面试redis篇-08数据淘汰策略
当Redis中的内存不够用时,此时在向Redis中添加新的key,那么Redis就会按照某一种规则将内存中的数据删除掉,这种数据的删除规则被称之为内存的淘汰策略。原创 2024-02-26 11:04:14 · 192 阅读 · 0 评论 -
面试redis篇-07数据过期策略
假如redis的key过期之后,会立即删除吗?Redis对数据设置数据的有效时间,数据过期以后,就需要将数据从内存中删除掉。可以按照不同的规则进行删除,这种删除规则就被称之为数据的删除策略(数据过期策略)。原创 2024-02-20 13:53:26 · 153 阅读 · 0 评论 -
面试redis篇-06Redis持久化
在Redis中提供了两种数据持久化的方式:1、RDB 2、AOF。原创 2024-02-20 10:54:13 · 238 阅读 · 0 评论 -
面试redis篇-05双写一致
当修改了数据库的数据也要同时更新缓存的数据,缓存和数据库的数据要保持一致:分布式锁,一致性要求高方案二:异步通知保证数据的最终一致性。原创 2024-02-20 10:31:27 · 488 阅读 · 0 评论 -
面试redis篇-04缓存雪崩
是指在同一时段大量的缓存key同时失效或者Redis服务宕机,导致大量请求到达数据库,带来巨大压力。原创 2024-02-19 17:48:39 · 292 阅读 · 0 评论 -
面试redis篇-03缓存击穿
给某一个key设置了过期时间,当key过期的时候,恰好这时间点对这个key有大量的并发请求过来,这些并发的请求可能会瞬间把DB压垮解决方案一:互斥锁解决方案二:逻辑过期。原创 2024-02-19 17:41:04 · 285 阅读 · 0 评论 -
面试redis篇-02缓存穿透
例: 一个get请求:api/news/getById/1:查询一个不存在的数据,mysql查询不到数据也不会直接写入缓存,就会导致每次请求都查数据库。原创 2024-02-19 10:39:08 · 259 阅读 · 0 评论 -
面试redis篇-01开篇
使用场景Redis的数据持久化策略有哪些 什么是缓存穿透,怎么解决 什么是布隆过滤器 什么是缓存击穿,怎么解决 什么是缓存雪崩,怎么解决 redis双写问题 Redis分布式锁如何实现 Redis实现分布式锁如何合理的控制锁的有效时长 Redis的数据过期策略有哪些 Redis的数据淘汰策略有哪些其他面试题Redis集群有哪些方案, 知道嘛 什么是 Redis 主从同步 你们使用Redis是单点还是集群 ? 哪种集群 Redis分片集群中数据是怎么存储和读取的 red原创 2024-02-19 10:22:36 · 342 阅读 · 0 评论