mysql bin log
==> /etc/my.cnf
==> log_bin=/var/log/mysql/mysql-bin.log
==> binlog_do_db=your_db

==> 记录所有mysql存储引擎相关的日志
==> 类型无论是STATEMENT,ROW,MIXED其记录的都是关于一个事务的具体操作内容
==> 它属于逻辑日志且只在事务提交前写入磁盘一次
==> 主要用于主从同步数据

innodb redo log
==> 默认位置为mysql的data目录(/var/lib/mysql)
==> 默认文件为ib_logfile0和ib_logfile1(采用交替写入方式进行写入)

==> 事务在进行过程中就不断有redo log写入到重做日志文件中
==> undo log作为事务的回滚处理一同包含在redo log中
==> 在掉电恢复时未执行的
==> 完整事务重新执行事务操作
==> 不完整事务重新执行事务操作同时执行undo处理
==> 从而保证了事务的原子性和持久性

==> redo log记录的是页的物理操作
==> 基本上是顺序写的,所以速度很快
==> 在数据库运行时不需要对redo log的文件进行读取操作

innodb undo log
==> 默认位置为mysql的data目录(/var/lib/mysql)
==> 默认文件为共享表空间文件ibdata1,undo log存放在其中的rollback segment回滚段中
==> 每个rollback segment可以支持1024个事务并发执行,默认有128个rollback segment回滚段

==> undo log用来保证事务的一致性
==> 在事务异常时用于回滚操作
==> undo log会记录与执行操作相反的操作
==> 同时会记录上个版本的数据信息
==> 从而实现多版本并发(MVCC)的机制

==> undo log是逻辑日志根据每行记录进行记录
==> 需要随机读写
==> 事务提交后并不能马上删除undo log及undo log所在页
==> 这是因为可能其他事务需要通过undo log来得到行记录之前的版本
==> 故事务提交时将undo log放入一个链表
==> 是否可以最终删除undo log及undo log所在页由purge线程来判断

innodb 独立表空间配置
==> /etc/my.cnf
==> innodb_file_per_table=ON
==> table.ibd 独立表空间文件仅存储该表的数据、索引和插入BITMAP等信息,其余信息还是存放在默认表空间ibdata1中

mysql lock
==> 意向共享锁可以理解为表锁,每行数据加锁前都要先加意向锁,意向锁锁定成功后才可以对相应的行加锁
==> 共享锁/排他锁为行锁,只有获取到行锁才可以对行进行相应操作

==> innodb对于行的查询使用的都是next-key lock算法,其由(GAP + Record Lock)组合而成
==> 当查询的列是唯一索引时,next-key lock算法将降级为Record Lock从而提高并发性(若索引为辅助索引则算法依然为next-key lock)

 

 

mysql log and lock的更多相关文章

  1. detecting locked tables mysql (locked by LOCK TABLE)

    detecting locked tables mysql (locked by LOCK TABLE) up vote15down votefavorite 7 I would like to kn ...

  2. ubuntu更改mysql配置文件,使其产生日志文件mysql.log

    1.打开mysql配置文件,将68,69行的注释取消掉,保存关闭 sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf 2.重启mysql服务 sudo servic ...

  3. 从MySQL slave system lock延迟说开去

    本文主要分析 sql thread中system lock出现的原因,但是笔者并明没有系统的学习过master-slave的代码,这也是2018年的一个目标,2018年我都排满了,悲剧.所以如果有错误 ...

  4. 关于mysql的metadata lock

    昨天晚上上线,却发现一个ddl语句长时间没有生效 查processlist, 发现包括ddl语句在内的众多查询提示 “Waiting for table metadata lock” 唯一没有该提示的 ...

  5. MySql: log 位置

    mysql日志文件位置 登录mysql终端日志文件路径mysql> show variables like 'general_log_file';+------------------+---- ...

  6. mysql log

    mysql binlog3种格式,row,mixed,statement. 解析工作 mysqlbinlog --base64-output=DECODE-ROWS -v mysql-bin.0001 ...

  7. 用MySQL log调试程序

    打开my.ini文件 在[mysqld]的下面加上log = c:/mysql_query.log.txt重启mysql 以后你用可以用editplus查看你运行的sql了,不用在程序里一句句的用lo ...

  8. mysql deadlock、Lock wait timeout解决和分析

    项目上线 线上遇到大量的deadlock 和wait timeout 但是看程序没什么问题 问dba也不能给出很好的解决方案!最终自己去了解mysql锁 以及看mysq锁日志 如果了解mysql锁的机 ...

  9. MySQL 锁(lock与latch)

    一.什么是锁 锁机制用于管理对共享资源的并发访问,它是数据库系统区别于文件系统的一个关键特性. 数据库系统使用锁是为了支持对共享资源的并发访问,提供数据的完整性和一致性. InnoDB存储引擎锁的实现 ...

随机推荐

  1. 关闭 synactive guixt. 在sap gui的右上角一个标志里,将 active guixt 选项去掉即可。

    关闭 synactive guixt.  在sap gui的右上角一个标志里,将 active guixt 选项去掉即可.

  2. cocos2d-x C++ 获取网络图片缓存并展示

    #ifndef __HttpGetImg__ #define __HttpGetImg__ #include "cocos2d.h" #include "HttpRequ ...

  3. Vmworkstation启用错误

    无法打开内核设备"\\.\Global\vmx86":系统找不到指定的文件. 是否在安装 VMwareWorksation 后重新引到 ? 问题解决   无法连接 MKS:套接字连 ...

  4. package.json中 npm依赖包版本前的符号的意义

    版本的格式 major.minor.patch 主版本号.次版本号.修补版本号 ———————————————————— patch:修复bug,兼容老版本 minor:新增功能,兼容老版本 majo ...

  5. VMware Workstation 14永久激活密钥

    VMware Workstation是一款功能强大的桌面虚拟计算机软件,简单来说就是最强的中文虚拟机了,可以在桌面上运行不同的操作系统 VMware workstation 14永久激活密钥 : CG ...

  6. SpringBoot缓存之redis--最简单的使用方式

    第一步:配置redis 这里使用的是yml类型的配置文件 mybatis: mapper-locations: classpath:mapping/*.xml spring: datasource: ...

  7. java多线程之AtomicLong与LongAdder

    AtomicLong简要介绍 AtomicLong是作用是对长整形进行原子操作,显而易见,在java1.8中新加入了一个新的原子类LongAdder,该类也可以保证Long类型操作的原子性,相对于At ...

  8. 通过安全网闸访问MongoDB

    前景描述: 在10.235的内网3台虚拟机上部署了mongodb的副本集,同网段中的虚拟机上部署的Springboot工程可正常访问.spring配置文件: data: mongodb: uri: m ...

  9. Hadoop Mapreduce中shuffle 详解

    MapReduce 里面的shuffle:描述者数据从map task 输出到reduce task 输入的这段过程 Shuffle 过程: 首先,map 输出的<key,value >  ...

  10. SlidingMenu第三篇 --- SlidingMenu使用介绍

    在Activity中通过SlidingMenu的构造方法,直接设置侧滑菜单 public class Main2Activity extends Activity { @Override protec ...