Mysql基本架构图

  • 两种优化方式
    RBO 基于规则优化
    CBO 基于成本优化 这个用的多

Mysql 日志

1. binlog (server)
数据库data目录下的binlog文件

show VARIABLES like '%binlog%' 


binary log

恢复数据过程

  1. 找到最近的一次全量备份数据
  2. 从备份的时间点开始,将备份的binlog取出来,重放到恢复的那个时刻

2. redolog (存储引擎 innodb)
数据库data目录下有这俩文件

  • 当发生数据修改时,innodb存储引擎会将记录下入到redo log中,并更新
    内存,此时更新就算完成了,同时innodb引擎会在何时的时机将记录写入到磁盘中
  • redo log是固定大小的 是循环写入的

    • 有了redo log后 innodb就可以保证即使数据库发生异常重启,之前的记录也不会丢失 叫做 crash-safe
  • wal write ahead log
    数据写入的时候 不是直接写入磁盘 而是先写入内存 合适时机才会写入磁盘
    写入性能上感觉是提升了
  • redolog 存储的过程 三种方式

    • 加入数据存储过程中 mysql服务器断电了 重启之后 会去redolog中 找日志
      然后进行重写
  • 保证实物的持久化

3. undolog(Innodb存储引擎)

  • Undo log 是为了实现实物的原子性 在Mysql数据库Innodb存储引擎中,
    还用Undo log 来实现多版本的并发控制(简称:MVCC)
  • 在操作数据之前,首先将一个数据备份到一个地方(这个存储数据备份的地方叫undo log).然后进行数据修改,如果出现了错误或者用户执行了ROLLBACK语句
    系统可以利用Undo log中的备份数据恢复到事物开始之前的状态
    注意:
    undo log 的逻辑日志,可以理解为:
  • 当delete一条数据的时候,undo log 会记录一条与之对应的insert语句
  • 当insert一条记录时,undo log会记录一条与之对应的delte语句
  • 当update一条记录时,undo log 会记录一条相反的update语句

ACID:
A(Atomicity) 原子性
C(Consistency)一致性
I(Isolation)隔离性
D(Durability)持久性

binlog redolog

  • Binlog是Server层的数据 主要做Mysql 功能层面的事情
  • 与redo 日志的区别
    1. redo 是innodb独有的 binlog是所有引擎都可以使用的
    2. redo是物理日志 记录的是在某个数据页上做了什么修改,
      binlog是逻辑日志 记录的是这个语句的原始逻辑
    3. redo是循环写的 空间会用完,binlog是可以追加的,不会覆盖之前的日志信息
    4. 数据更新流程
1. 执行器先从引擎中找到数据如果在内存中就直接返回如果不在内存就查询后返回
2. 执行器拿到数据后先修改  然后调用引擎接口重新吸入数据
3. 引擎将数据更新到内存 同时写入redo log此时处于prepare阶段并通知执行器完成,随时可以操作
4. 执行器将操作写入binlog
5. 执行器调用存储引擎的事物提交接口,引擎把刚刚写完的redo 改成commit状态更新完成。注意:1.  先写redo log 再写binlog redo log写完了 binlog没写呢 服务器断电了 重启之后redo log 恢复数据与binlog对不上2. 先写binlog 也是一样
知识点
set @t1 = 0;
select @t1; --> 0 set @t2:=3;
select @t2 ; -->3

mysql优化 个人笔记 非礼勿扰 -m07相关推荐

  1. mysql优化 个人笔记 非礼勿扰 -m04

    1. 索引干啥的 加快查询效率!! 帮助mysql高效获取数据结构 2. 索引怎么用 -- 添加索引 ALTER TABLE `test` ADD INDEX `n_uid_title` (`uid` ...

  2. mysql优化 个人笔记 非礼勿扰 -m02

    1. processlist 功能:查看连接数 注意:自己创建连接 一定要关闭连接!! 现在项目都用数据源 这个基本不用自己管(DBCP,c3p0,Druid(https://github.com/a ...

  3. mysql优化 个人笔记 非礼勿扰 -m08

    binlog 简单使用 数据恢复 1. 查看binlog状态 show variables like '%log%'; 2. 打开binlog vim /etc/my.cnf[mysqld] # bi ...

  4. mysql优化 个人笔记 非礼勿扰 -m05

    一 .树 树是一种递归数据结构,包含一个或多个数据节点的集合 其中一个节点被定为树的根,而其余节点被称之为根的子代. 除根节点以外的其他节点均被划分为多个非空集合,其中每个集合都称为子树 节点与节点之 ...

  5. mysql优化 个人笔记 非礼勿扰 -m06

    索引分类 1.主键索引 主键是一种唯一索引,但他必须制定为PRIMARY KEY ,每个表只能有一个主键(一个主键指的不是一个列 也可能有多个列联合主键) 其实主键没有的话 数据库会根据唯一键 建立索 ...

  6. mysql优化 个人笔记 - 非礼勿扰 -m17

    上一篇讲到了 datadir.socket.pid_file.port.default_storage_engine.skip-grant-tables.character_set_client.ch ...

  7. mysql优化 个人笔记 - 非礼勿扰 -m16

    一 . 服务器参数设置 vim /etc/my.conf 1. 通用设置 #数据文件存放目录 datadir=/var/lib/mysql # mysql.socket表示server和client在 ...

  8. mysql优化 个人笔记 非礼勿扰 -m03

    数据源连接池 1. druid 地址 https://github.com/alibaba/ -> https://github.com/alibaba/druid 右侧有菜单 通用配置 htt ...

  9. mysql优化 个人笔记 (mysql 进阶索引 ) 非礼勿扰 -m14

    查询优化 1. 查询慢的可能原因 网络 CPU (时间片) IO (磁盘) 上下文切换 (线程切换) 系统调用 生成统计信息 锁等待时间 2. 优化数据访问 查询性能低的主要原因是访问的数据太多,某些 ...

最新文章

  1. java注解和python装饰器_Java 的注解 和 Python 的装饰器 是一回事吗?
  2. 围观了张一鸣近10年的微博,我整理了这20多条经验之谈
  3. 图像处理中的通信原理——冈萨雷斯读书笔记(一)
  4. azure机器学习_使用Azure ML Studio的Azure机器学习简介
  5. GPS :NEMA数据解析
  6. 使用spring cloud,nacos,dubbo,gateway搭建微服务
  7. 双目视觉图像的色彩调整
  8. 你专属的程序员春节“大礼包”
  9. 【MM32F5270开发板试用】四、SPI的驱动,先点个屏幕
  10. Audified 发布 Linda IronVerb 混响插件
  11. vue 头像修改-裁剪图片 vue-cropper
  12. ubuntu 安装迅雷
  13. pentaho连接数据库
  14. python 字典嵌套列表 循环打印_python的list的基本操作、list循环、切片、字典基本操作、字典嵌套、字符串常用方法...
  15. sql之分组TOPN
  16. action的编写方式
  17. 微信小程序标题栏放logo 搜索框
  18. excel表格拆分如何快速完成
  19. 游戏编程基础(五)背景地图滚动显示
  20. Dubbo源码解析-——服务引用

热门文章

  1. 事业单位考试计算机专业知识题库,事业单位考试计算机专业基础知识试卷及答案.docx...
  2. 同态加密:以CKKS为例的Bootstrapping操作介绍(不定期更新)
  3. mybatis-plus/mybatis的组件们——拦截器、字段填充器、类型处理器、表名替换、SqlInjector(联合主键处理)
  4. 第二届全球程序员节北京分会场盛大召开 大数据将引领行业发展
  5. MiniUI关闭当前Tab页面并回到指定Tab
  6. 【CSDN竞赛第26期】赢实体图书盲盒和高级定制背包等周边
  7. 蓝桥杯嵌入式模板构建_tim
  8. java版gRPC实战之五:双向流
  9. HDU-7092 仓颉造数
  10. 湖北武汉电动机保护器公司哪家好_电动机保护器-上海硕吉电器_新浪博客