数据库、Redis

本文深入探讨了MySQL的索引机制,解释了为何不使用B树,以及索引失效的情况。同时,详细介绍了MVCC的概念及其在不同事务隔离级别下的表现和问题。在Redis部分,讨论了Redis为解决C语言存储字符串的不足而创建的sds数据结构,以及Redis的持久化机制,包括RDB和AOF的特点和应用场景。
摘要由CSDN通过智能技术生成

MySQL

索引

为什么不用B树
对于B树来说每一个节点都要存数MySQL数据,B树从根节点开始就存储数据

哈希表不支持模糊查询,不支持范围查询
最左前缀原则:

索引失效:
模糊查询
or:关键字前后必须都是索引才能走索引,一个不是的话就不能走
联合查询,必须要从首个索引开始
加减乘除
不等于(!=;<>,is not)
is null,is not null 有可能会导致失效,建议设置默认值
索引列使用内置函数也会导致失效
隐式转换
离散读:mrr优化,解决了离散读

MVCC

什么是MVCC

MVCC 是 MySQL 基于自己的回滚机制,为并发场景下的读操作做的读取的一个优化;MVCC 是基于 undo log实现的,它的多版本并发控制是为mysql并发场景下读操作提供的多版本控制,为了达到并发环境下读操作不需要被锁定这样的一个目的来加快mysql的读取

不同事务隔离级别下MVCC的表现

四个隔离级别:

  • 读取未提交数据
  • 读取已提交数据
  • 可重复读数据(默认隔离级别)
  • 串行化读数据:这种隔离级别下,只为数据安全

读已提交数据违背了事务的隔离性,事务并不会完全隔离

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值