第五篇 数据存储(Mysql、Redis、MongoDB)

本文深入探讨了Mysql、Redis和MongoDB的存储引擎、索引、事务、锁机制以及Redis的优缺点和常见数据结构。讨论了如何优化SQL,解决并发事务带来的问题,以及Redis的数据淘汰策略。还提到了缓存同步方案和解决缓存穿透、击穿、雪崩的策略。
摘要由CSDN通过智能技术生成

数据存储 文章目录

前言

一、Mysql

1. 存储引擎===================================

2. 索引=======================================

6、什么是索引?(高频)

3. SQL优化====================================

16、关心过业务系统里面的sql耗时吗?统计过慢查询吗?对慢查询都怎么优化过?(高频)(未写完)

  • 在业务系统中 , 除了使用主键进行的查询 ,其他的我都会在测试库上测试其耗时 ,慢查询的统计主要由运维在做 ,会定期将业务中的慢查询反馈给我们 ;
  • 慢查询的优化首先要搞明白的原因是什么 ?
      1. 是查询条件没有命中索引 ?
      1. 是load了不需要的数据列 ?
      1. 还是数据量太大 ?
  • 所以优化也是针对这三个方向来的 :
      1. 分析语句的执行计划 , 然后获得其使用索引的情况 .之后修改语句或者修改索引 ,使得语句可以尽可能的命中索引 ;
      1. 分析语句 ,看看是否load了额外的数据 ,可能是查询了多余的行并且抛弃掉了,可能是加载了许多结果中并不需要的列 ,对语句进行分析以及重写 ;
      1. 如果是表中的数据量太大导致查询慢 ,可以进行横向或者纵向的分表 ;

4. 事务 =======================================

20、什么是事务?(高频)

  • 由多个操作组成的一个逻辑单元 , 组成这个逻辑单元的多个操作要么同成功 , 要么同失败 ;

21、简单谈一下事务的特性? ACID是什么?可以详细说一下吗?(高频)

  • 事务有四个特性 :
  • A = Atomicity 原子性 :
    • 要么全部成功 , 要么全部失败 , 不可能只执行一部分操作 ;
  • C = Consistency 一致性 :
    • 系统 (数据库)总是从一个一致性的状态转移到另一个一致性的状态 , 不会存在中间状态 ;
  • I = Isolation 隔离性 :
    • 通常来说 , 一个事务在完全提交之前 , 对其他事务是不可见的 ;(有例外情况) ;
  • D = Durability 持久性 :
    • 一旦事务提交 , 哪怕系统崩溃也不会影响到这个事务的结果 ;

22、并发事务带来哪些问题?(高频)

  • 在典型的应用程序中 , 多个事务并发运行 , 经常会操作相同的数据来完成各自的任务(多个用户对同一数据库进行操作) , 并发虽然是必须的 , 但是可能会导致以下问题 :
  • 脏读(Dirty read) :
    • 当一个事务正在访问数据并且对数据进行了修改 , 而这种修改还没有提交到数据库中 , 这时另外一个事务也访问了这个数据 , 然后使用了这个数据 ;
    • 因为这个数据是还没有提交的数据 , 那么另外一个事务读到的这个数据是"脏数据" , 依据"脏数据"所做的操作可能是不正确的 ;
  • 丢失修改 (Lost to modify) :
    • 指在一个事务读取另一个数据时 , 另外一个事务也访问了该数据 , 那么在第一个事务中修改了这个数据后 , 第二个事务也修改了这个数据 ;
    • 这样第一个事务内的修改结果就被丢失 , 因此称为丢失修改 ;
    • 例如 :
      • 事务1读取某表中的数据A=20 , 事务2也读取A=20
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值