MySQL日志

目录

一 关于mysql的设计和运行逻辑

二 MySQL的三类日志

三 对于日志的利用

插入查询

1 备份

2 删除重复数据


一 关于mysql的设计和运行逻辑

mysql在启动的时候非常占空间,需要申请很大的空间,但是有时候内存并没有那么多,所以OS会把mysql需要的空间一部分一部分地给他。

mysql申请了空间之后,对申请的空间进行管理划分,专门有对应的区域来存储日记,缓存,管理相关信息等。

这样mysql处理就有对应的空间了,那么他是如何进行处理数据的?

mysql处理数据为了保证速度,是把数据从磁盘中加载到内存中再进行操作的。(把数据从内存加载到磁盘中的行为叫做落盘)

另一方面,这种行为让磁盘中保留了我们表之前的数据,如果想进行回滚事务的话,就可以利用保存的数据进行回滚。---》

我们在进行对应的数据操作的时候,首先被保存在磁盘上的应该是对应的mysql的日记,因为mysql有设计对应的管理数据的结构,但是插入我的数据的是设计到整个表结构,相比之下,保存数据的速度快很多,并且保存了数据之后,就可以插入数据。

我们就是利用这个日记来进行恢复的

二 MySQL的三类日志

关于mysql的三类主要的日记

①undolog:InnoDB存储引擎生成的日志,主要用于事物的回滚和MVCC,保证了事务的原子性

②binlog:Server层生成的日志,主要是用来备份数据,集群

Server层生成的日志,就是用户的sql指令

Mysql是个服务器,所有的sql指令通过mysql客户端交给mysqld这样的进程,进程在处理的时候,对于日记除了词法语法分析调优等外,还会把历史上用户的所有指令记录下来。

Mysql会记录下所有的数据,做数据库级别的分布式备份,可以把日志同步;还可以增量式备份……

③redo log:InnoDB存储引擎生成的日志,用于崩溃后修复数据,保证了事务的持久性

三 对于日志的利用

插入查询

1 备份

对于A表如果要进行备份的话,我们可以把对应的A表的数据全部查询出来之后写到另一个数据表中。

首先创建一个这样的表,表的结构是一样的,但是没有数据

之后把筛选出来的数据插入到我们的用来测试的表结构中,就完成了数据的备份

2 删除重复数据

我们可以利用distinct来删除重复的数据,这样就保证了每个数据只有一份。此时我们创建一个和之前表A一样结构的表B,把数据插入表B即可

 

这样就完成了去重之后的数据插入。对于原始表,去掉重复数据,并且重复数据只能有一份,move操作,是原子的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值