Loading

随笔分类 -  八股文

摘要:事务的隔离性是由锁和mvcc实现的。 其中mvcc的意思是多版本并发控制。指维护一个数据的多个版本,使得读写操作没有冲突,它的底层实现主要是分为了三个部分,第一个是隐藏字段,第二个是undo log日志,第三个是readView读视图。 隐藏字段是指: 在MySQL中给每个表都设置了隐藏字段,有一个 阅读全文
posted @ 2024-05-10 11:04 worshipone 阅读(29) 评论(0) 推荐(0)
摘要:undo log和redo log的区别 redo log日志记录的是数据页的物理变化,服务宕机可用来同步数据,而undo log不同,它主要记录的是逻辑日志,当事务回滚时,通过逆操作恢复原来的数据,比如我们删除一条数据的时候,就会在undo log日志文件中新增一条delete语句,如果发生回滚就 阅读全文
posted @ 2024-05-10 10:19 worshipone 阅读(40) 评论(0) 推荐(0)
摘要:并发事务带来的问题 第一是脏读,当一个事务正在访问数据并且对数据进行了修改,而这种修改还没有提交到数据库中,这时另外一个事务也访问了这个数据,因为这个数据是还没有提交的数据,那么另外一个事务读到的这个数据是“脏数据”,依据“脏数据”所做的操作可能是不正确的。 第二是不可重复读,比如在一个事务内多次读 阅读全文
posted @ 2024-05-10 10:07 worshipone 阅读(28) 评论(0) 推荐(0)
摘要:ACID,分别指的是:原子性、一致性、隔离性、持久性。 举个例子,A向B转账500,转账成功,A扣除500元,B增加500元,原子操作体现在要么都成功,要么都失败。 在转账的过程中,数据要一致,A扣除了500,B必须增加500。 在转账的过程中,隔离性体现在A向B转账,不能受其他事务干扰。 在转账的 阅读全文
posted @ 2024-05-10 09:44 worshipone 阅读(13) 评论(0) 推荐(0)
摘要:sql的优化经验 sql优化会从这几方面考虑,比如建表的时候、使用索引、sql语句的编写、主从复制,读写分离,还有一个是如果数据量比较大的话,可以考虑分库分表。 创建表如何优化 主要参考的《阿里开发手册(嵩山版)》,比如,在定义字段的时候需要结合字段的内容来选择合适的类型。 如果是数值的话,像tin 阅读全文
posted @ 2024-05-09 21:36 worshipone 阅读(21) 评论(0) 推荐(0)
摘要:什么情况下索引会失效 违反最左前缀法则。 范围查询右边的列,不能使用索引。 不要在索引列上进行运算操作,索引将失效。 字符串不加单引号,造成索引失效。(类型转换)。 以%开头的Like模糊查询,索引失效。 阅读全文
posted @ 2024-05-09 17:36 worshipone 阅读(18) 评论(0) 推荐(0)
摘要:1,2,5,6比较重要。 针对于数据量较大,且查询比较频繁的表建立索引。单表超过10万数据(增加用户体验)。 针对于常作为查询条件(where)、排序(order by)、分组(group by)操作的字段建立索引。 尽量选择区分度高的列作为索引,尽量建立唯一索引,区分度越高,使用索引的效率越高。 阅读全文
posted @ 2024-05-08 19:10 worshipone 阅读(29) 评论(0) 推荐(0)
摘要:什么是覆盖索引 覆盖索引是指select查询语句使用了索引,在返回的列,必须在索引中全部能够找到,如果我们使用id查询,它会直接走聚集索引查询,一次索引扫描,直接返数据,性能高。 如果按照二级索引查询数据的时候,返回的列中没有创建索引,有可能会触发回表查询,尽量避免使用select*,尽量在返回的列 阅读全文
posted @ 2024-05-08 17:59 worshipone 阅读(50) 评论(0) 推荐(0)
摘要:什么是聚簇索引什么是非聚簇索引 聚簇索引是指数据与索引放到一块,B+树的叶子节点保存了整行数据,有且只有一个,一般情况下主键作为聚簇索引。 非聚簇索引是数据与索引分开存储,B+树的叶子节点保存对应的主键,可以有多个,一般我们自已定义的索引都是非聚簇索引。 分类 含义 特点 聚集索引(Clustere 阅读全文
posted @ 2024-05-08 11:50 worshipone 阅读(104) 评论(0) 推荐(0)
摘要:什么是索引 索引在项目中还是比较常见的,它是帮助MySOL高效获取数据的数据结构,主要是用来提高数据检索的效率,降低数据库的IO成本,同时通过索引列对数据进行排序,降低数据排序的成本,也能降低了CPU的消耗。 索引的底层数据结构 MySQL的默认的存储引擎InnoDB采用的B+树的数据结构来存储索引 阅读全文
posted @ 2024-05-08 11:36 worshipone 阅读(23) 评论(0) 推荐(0)
摘要:如果一条sql执行很慢的话,通常会使用MySQL自动的执行计划explain来去查看这条sql的执行情况,比如在这里面可以通过key和key_len检查是否命中了索引,如果本身已经添加了索引,也可以判断索引是否有失效的情况,第二个,可以通过type字段查看sql是否有进一步的优化空间,是否存在全索引 阅读全文
posted @ 2024-05-08 10:00 worshipone 阅读(67) 评论(0) 推荐(0)
摘要:做压力测试的时候有的接口非常的慢,接口的响应时间超过了2秒以上。 系统部署了运维的监控系统Skywalking,在展示的报表中可以看到是哪一个接口比较慢,并且可以分析这个接口哪部分比较慢,这里可以看到SQL的具体的执行时间,所以可以定位是哪个SQL语句出了问题。 另外MySQL中也提供了慢日志查询的 阅读全文
posted @ 2024-05-07 16:55 worshipone 阅读(31) 评论(0) 推荐(0)
摘要:Redis是单线程的,但是为什么还那么快 完全基于内存的,C语言编写 采用单线程,避免不必要的上下文切换可竞争条件 使用多路IO复用模型,非阻塞IO 例如: bgsave 和 bgrewriteaof 都是在后台执行操作,不影响主线程的正常使用,不会产生阻塞 解释一下多路IO复用模型? 多路IO复用 阅读全文
posted @ 2024-04-28 17:18 worshipone 阅读(21) 评论(0) 推荐(0)
摘要:Redis集群有哪些方案? 在Redis中提供的集群方案总共有三种:主从复制、哨兵模式、Redis分片集群 主从同步 单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,可以搭建主从集群,实现读写分离。一般都是一主多从,主节点负责写数据,从节点负责读数据,主节点写入数据之后,需要 阅读全文
posted @ 2024-04-28 16:50 worshipone 阅读(31) 评论(0) 推荐(0)
摘要:Redis分布式锁如何实现 ? 在Redis中提供了一个命令setnx(SET ifnot exists) 由于Redis的单线程的,用了命令之后,只能有一个客户端对某一个key设置值,在没有过期或删除key的时候是其他客户端是不能设置这个key的。 如何控制Redis实现分布式锁有效时长呢? Re 阅读全文
posted @ 2024-04-26 11:53 worshipone 阅读(35) 评论(0) 推荐(0)
摘要:Redis过期策略有几种? Redis中提供八种过期策略,默认是noeviction,即不删除任何数据,当内存不足时会直接报错。可以在Redis的配置文件中进行设置。 noeviction:不淘汰任何key,但是内存满时不允许写入新数据,默认就是这种策略。 volatile-ttl: 对设置了TTL 阅读全文
posted @ 2024-04-26 10:39 worshipone 阅读(75) 评论(0) 推荐(0)
摘要:在Redis中提供了两种数据过期删除策略: 惰性删除:在设置该key过期时间后,我们不去管它。当需要该key时,我们会检查其是否过期,如果过期,就删除它;反之,返回该key。 定期删除:每隔一段时间,我们会对一些key进行检查,删除其中过期的key。定期清理有两种模式: SLOW模式:使用定时任务, 阅读全文
posted @ 2024-04-26 10:17 worshipone 阅读(55) 评论(0) 推荐(0)
摘要:缓存穿透 缓存穿透是指查询一个一定不存在的数据,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到 DB 去查询,可能导致 DB 挂掉。这种情况大概率是遭到了攻击。 解决方案的话,我们通常都会用布隆过滤器来解决它。 布隆过滤器主要是用于检索一个元素是否在一个集合中。我们当时使 阅读全文
posted @ 2024-04-25 17:45 worshipone 阅读(21) 评论(0) 推荐(0)
摘要:redis做为缓存,数据的持久化是怎么做的? 在Redis中提供了两种数据持久化的方式: RDB AOF 这两种持久化方式有什么区别呢? RDB是一个快照文件,它是把redis内存存储的数据写到磁盘上,当redis实例宕机恢复数据的时候,方便从RDB的快照文件中恢复数据。 AOF的含义是追加文件,当 阅读全文
posted @ 2024-04-25 17:40 worshipone 阅读(17) 评论(0) 推荐(0)
摘要:介绍自己简历上的业务 我们当时是把文章的热点数据存入到了缓存中,虽然是热点数据,但是实时要求性并没有那么高,所以,我们当时采用的是异步的方案同步的数据。 我们当时是把抢券的库存存入到了缓存中,这个需要实时的进行数据同步,为了保证数据的强一致我们当时采用的是redisson提供的读写锁来保证数据的同步 阅读全文
posted @ 2024-04-25 16:57 worshipone 阅读(96) 评论(0) 推荐(0)