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. python 查找日志关键字

    1.抓取出含有关键字”xiaoming”的行 2.在上一个问题的基础上,假设所在行的格式为location=xiaoming, value=xxx,请筛选出value值 #!/usr/bin/pyth ...

  2. 学习了clipboard复制剪切插件的使用

    第一步:引入clipboard插件JS <script src="dist/clipboard.min.js"></script> 第二步:在HTML代码加 ...

  3. face++静态库转为动态库

    前言 苹果商店上架应用,有规定支持iOS8.0以上的iPA可执行文件的大小不能超过60M. face++提供过来的是静态库,会导致苹果上架的ipa的包增加1.5M左右.而刚好我们的APP包Mach-O ...

  4. mysql杯观锁与乐观锁

    悲观锁与乐观锁是两种常见的资源并发锁设计思路,也是并发编程中一个非常基础的概念.本文将对这两种常见的锁机制在数据库数据上的实现进行比较系统的介绍. 悲观锁(Pessimistic Lock) 悲观锁的 ...

  5. codeforces-3

    C Game"23" #include<iostream> using namespace std; int main() { long long n,m; long ...

  6. [转载来之雨松:NGUI研究院之为什么打开界面太慢(十三)]

    本文固定链接: http://www.xuanyusong.com/archives/2799

  7. Genymotion-Android模拟器提示"Unable to connect to the Genymotion server. Please check your Internet connection."解决方法

    昨天刚装的Genymotion,昨晚还用得好好的. 今晚开机,重新打开Genymotion,却提示:"Unable to connect to the Genymotion server. ...

  8. zigbee组网函数的一些用法

    1.NLME_PermitJoiningRequest(0)  :(1)值0x00:表示禁止加入网络  (2)值0x01-0xFE:表示允许链接的秒数 (3) 值0xff:表示启用网络 同时此函数:是 ...

  9. SpringBoot Controller接收参数的几种常用方式

    第一类:请求路径参数1.@PathVariable获取路径参数.即url/{id}这种形式. 2.@RequestParam获取查询参数.即url?name=这种形式 例子GET http://loc ...

  10. sourceTree 代码未同步合并

    在同一个分支下,提交代码会有代码合并情形. 1.未同步代码前,提交代码 2.提交报错 3. 拉取未同步的提交代码 4.点击提交到暂存区, 5. 暂存区变成2条,再点击推送. 6.sourceTree ...