摘要: 问题发现 早上过来,饭都没来的及吃,运维就给我发来信息,说是某个接口调用大量超时。因为最近这个接口调用量是翻倍了,所以我就去检查了下慢SQL,发现确实是有较多的慢SQL,所以我就缩减了查询的时间范围,但是效果并不好。 过了一会发现,这个服务fullGC是有问题的,太频繁了,这个应该是导致接口超时的根 阅读全文
posted @ 2023-03-16 13:55 theonenini 阅读(1831) 评论(5) 推荐(3) 编辑
摘要: Redis的高可靠性? redis的高可靠性主要是下面两点来保证: 使用AOF和RDB保证数据的持久性,数据尽量少丢失。 服务尽量少中断:增加副本冗余量,将一份数据同时保存在多个实例上。 多副本之间的数据如何保证一致性? Redis提供了主从库模式,以保证数据副本的一致,主从库之间采用的是读写分离的 阅读全文
posted @ 2023-02-03 17:21 theonenini 阅读(105) 评论(0) 推荐(0) 编辑
摘要: Redis的持久化主要有两大机制,即AOF日志和RDB快照 😀AOF日志 1.2 AOF日志是如何实现的? 说到⽇志,我们⽐较熟悉的是数据库的写前⽇志(Write Ahead Log, WAL)——例如mysql的redolog,也就是说,在实际写数据前,先把修改的数据记到⽇志⽂件中,以便故障时进 阅读全文
posted @ 2023-02-03 17:09 theonenini 阅读(75) 评论(0) 推荐(0) 编辑
摘要: Redis是单线程,主要是指Redis的⽹络IO和键值对读写是由⼀个线程来完成的,这也是Redis对外提供键值存储服务的主要流程。但Redis的其他功能,⽐如持久化、异步删除、集群数据同步等,其实是由额外的线程执⾏的。 1.为什么使用单线程? 1.1 多线程开销 系统中通常会存在被多线程同时访问的共 阅读全文
posted @ 2023-02-03 17:08 theonenini 阅读(81) 评论(0) 推荐(0) 编辑
摘要: 1.SDS struct sdshdr { //记录buf数组中已使用字节的数量 //等于SDS所保存字符串的长度 int len; //记录buf数组中未使用字节的数量 int free; //字节数组,用于保存字符串 char buf[]; }; SDS的空间分配策略完全杜绝了发生缓冲区溢出的可 阅读全文
posted @ 2023-02-03 16:52 theonenini 阅读(43) 评论(0) 推荐(0) 编辑
摘要: 原子性(Atomicity) 要么全做,要么全不做的规则称之为原子性。两个事务要么全部成功,要么全部失败,不能存在中间状态。 数据库中的一条操作也可能被分解成若干个步骤(比如先修改缓存页,之后再刷新到磁盘等),在任何一个可能的时间都可能发生意想不到的错误(可能是数据库本身的错误,或者是操作系统错误, 阅读全文
posted @ 2023-01-10 10:43 theonenini 阅读(68) 评论(0) 推荐(0) 编辑
摘要: 什么是Buffer Pool 为了缓存磁盘中的页,MySQL服务器启动的时候就向操作系统申请了一片连续的内存,他们给这片内存起了个名,叫做Buffer Pool(中文名是缓冲池)。innodb_buffer_pool_size参数的值,它表示Buffer Pool的大小。 Buffer Pool内部 阅读全文
posted @ 2023-01-09 16:05 theonenini 阅读(73) 评论(0) 推荐(0) 编辑