MySQL存储引擎InnoDB

1. 存储引擎的概念
存储引擎就是数据库存储数据的机制,索引的技巧以及锁定水平的集合。直白点说就是存储的方式和存储的格式。

存储引擎也属于MySQL当中的组件,实际上执行的就是数据的读写I/O。

2. MySQL存储引擎的分类
MySIAM :MySQL-5.5版本之前默认的存储引擎是 MySIAM,插入的速度和查询速度很快,但是不支持事务。这个版本已经极少使用了。

INNODB :MySQL-5.5版本之后默认开始使用INNODB引擎,事务型速记存储引擎,支持ACID,支持行级锁定。现在常见的是5.7版本或者8.0以上版本。

Memory :内存型存储引擎,数据在写入时都保存在内存当中,一旦断电或重启,内存中的数据全部丢失。使用的也少。

CSV :逗号分割数据的存储引擎,数据文件以.csv文件保存,能和execl兼容。保存的文件就是一个普通的文本文件,没有加密,也不支持索引。先已基本淘汰。
 3. INNODB存储引擎

InnoDB的特点

  • 读写阻塞(锁表)和事务的隔离级别
  • 能够高效的缓存数据,支持多种类的索引
  • 表的索引的类型默认是B-TREE
  • 支持外键,支持全文索引
  • 对硬件资源要求较高
  • 行级锁定:多用户同时对数据库进行读写时,会把行锁住,禁止操作。

模糊查询

  • like进行查询时,会进行全表扫描,在扫描的过程中锁定整个表。
  • 如果对没有创建索引的列进行查询时,也会锁定整个表。
  • 如果查询的是索引列,锁定条件的行,即行锁定。

查询当前存储引擎

4. 行锁 死锁 排他锁
行锁是通过索引来实现的,但如果没有索引,InnoDB会使用默认的隐藏索引来对记录进行加锁。

加了索引就是锁行,没加索引就会锁表。

mysql默认是自动提交写入,运行后即时commit到数据库;

oracle则运行后需要手动commit,否则不会写入到数据库。

死锁:deadlock :事务相互等待对方的资源,最后形成一个环路造成的。

如果发生了死锁,数据库会自动选择一个事务作为受害者,会回滚该事务以解除死锁。

而MySQL会终止其中一个事务,但是不回滚。

排他锁:for update :又叫写锁,当一个事务的操作未完成时,其他事务可以读取但是不能写入,即不能update或delete
 *  如何避免死锁的情况出现?

  • 以固定的顺序访问表和行
  • 大事务尽量拆分成小事务,事务越复杂,出现问题的可能越大,也难以排查
  • 为表添加合理的索引

MySQL备份与恢复

1.1 备份相关概念

备份的目的:备灾,防止数据丢失在生产环境中,数据的安全性是非常重要的。

数据丢失的可能原因:1、程序问题,程序出错 ;2、人为的问题;3、磁盘故障

备份的策略

全量备份:每次对数据库进行完整的备份。

增量备份:只有在上次完全备份或者增量备份后被修改的文件才会被备份。

备份的分类:

物理备份:对磁盘或者对文件直接进行备份。
  冷备份:脱机备份,先把指定的服务关闭/程序停止,然后进行备份
  热备份:联机备份,不用关闭服务/停止程序,就可以对数据进行备份
逻辑备份:根据数据库文件当中保存的SQL语句、表结构等等,以特定的格式和命令对文件的内容进行还原。
  逻辑备份是热备份的一种。
  逻辑备份只能对表进行恢复,库没了没有办法恢复。**所以一般结合全量备份使用。
 1.2 全量备份

1.2.1 物理备份

物理备份一般是全量备份,把数据库的内容整个一次性的备份。全量备份常用冷备份。

物理备份的恢复:把打包的数据库文件解压到数据库工作目录即可

1.2.2 mysqldump备份

mysqldump :mysql自带的备份命令,可以备份库,也可以备份库里的表

备份库与恢复库:

备份表与恢复表:

1.3 增量备份

增量备份使用binlog日志间接实现,要先开启二进制日志功能binlog日志记录

binlog :逻辑备份,会生成一个文件,包含了SQL语句,要使用特定的方式和语句才能够恢复。

binlog的文件格式

STATEMENT :基于SQL语句:只是记录用户操作的SQL语句,效率较高。但是在高并发的情况下,记录操作的SQL语句的顺序可能会出错,导致恢复数据有误差或丢失数据。

ROW :基于行:记录每一行的数据,准确,高并发也不会出错,但是恢复的效率低。

MIXED :混合模式:正常情况下(非高并发情况),使用STATEMENT,高并发情况下使用ROW。服务会智能判断工作情况,自行切换格式。
 开启二进制日志成功后,在工作目录(data目录)会看到mysql-bin.000001

从特定位置节点开始恢复

position(位置节点)

在mysql-bin.000001 这些binlog日志文件中可以看到at 位置节点(数字),at后面的数字就是位置节点,每个SQL语句对应一个at。

恢复到特定位置节点

打开查询日志(select的记录)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值