日志的记录和维护是数据库中相当重要的内容,写这篇文章和后面几篇文章作为学习官网文档的笔记。MariaDB数据库日志可分为二进制日志、查询日志、错误日志、myISAM表日志、relay日志和撤销日志(undo log)。

MariaDB(mysql)的undo log 保存数据被InnoDB事务修改前的版本,用于数据恢复或者提供给“一致读consistent read”级别的事务读取,具体细节如下:

1.在某行数据被修改前,首先复制数据到undo log中,表中的每行数据包含一个指针指向undo log中最近的版本,redo log中的每行数据则包含一个指向前一个版本的指针(如果有的话),这样每行被修改的数据就形成了一个记录变更的“历史链history chain”,或者称之为变更集吧。

2.MariaDB中的每一个事物都运行在一定的隔离级别上,这个隔离级别isolation level 决定了怎样创建记录的“视图view”,对于READ UNCOMMITTED通常使用记录当前的版本(不管是否提交,即“脏读dirty reads”)。其它的事务隔离级别的视图则在redo log中查找最后一次提交的版本,READ COMMITTED针对每个表使用不同的视图,REPEATABLE READ可重复度和SERIALIZABLE则针对所有的表使用统一的视图。

3.存在一个全局的变更集(history chain),当有事务提交时,则将该记录版本添加到这个变更集中,这个变更集中的记录是按照事务提交的先后顺序保存的。

4.MariaDB的purge thread会删掉现有视图(view)不再需要的redo log中的记录。

在MariaDB中运行长事务会有哪些问题呢,从redo log工作的方式来考虑,首先的问题就是会造成redo log体积膨胀,因为较长的事务需要保存更多的版本历史,另一个问题是,如果事务需要读取很早之前的版本,就会造成性能影响。虽然只读的事务不会向redo log写记录,但是这些事务会阻止purge thread线程清除redo log,也会造成redo log臃肿。还有一个问题是,使用长事务更容易发生死锁,当然死锁和redo log没有关系。

和undo log相关的一些系统变量配置:

1.MariaDB的undo log通常是物理磁盘上的系统表空间的一部分,在10.0以后的版本中,可以使用 innodb_undo_directory 和 innodb_undo_tablespaces系统变量来将undo log保存到指定的设备位置。

2.innodb_undo_logs系统变量用于确定每个事物可用的最多回滚段数(undo log中的关于insert或者update操作的部分就是回滚段)。

3.innodb_avaliable_undo_logs状态变量保存InnoDB undo log中总的可用回滚段数。

4.innodb_flush_log_at_trx_commit决定了事物写入(flush)到undo log的频率,调整这个参数可以在速度和稳定性方面取得平衡(想必事物太频繁的flush undo log会造成性能低下), Binlog group commit and innodb_flush_log_at_trx_commit中有更详细的说明。

MariaDB——(二) MariaDB 10.0.15 日志文件—undo 日志的更多相关文章

  1. SpringBoot日志配置(详解) 涉及控制台输出日志、生成日志文件、日志级别修改、hibernate日志不输出

    写在前面 本篇主要讲述日志配置,看完本篇可以解决下述问题, 控制台输出日志.生成日志文件.日志级别修改.hibernate日志不输出 Git Demo Path:https://github.com/ ...

  2. Zookeeper日志文件&事务日志&数据快照

    Zookeeper持久化两类数据,Transaction以及Snapshot,logDir存储transaction命令,dataDir存储snap快照,其下子目录名称以version-2命名,子目录 ...

  3. mysql事务、redo日志、undo日志、checkpoint详解

    转载: https://zhuanlan.zhihu.com/p/34650908 事务: 说起mysql innodb存储引擎的事务,首先想到就是ACID(不知道的请google),数据库是如何做到 ...

  4. Cenos7 编译安装 Mariadb Nginx PHP Memcache ZendOpcache (实测 笔记 Centos 7.0 + Mariadb 10.0.15 + Nginx 1.6.2 + PHP 5.5.19)

    环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7.0-1406-x86_64-DVD.iso 安装步骤: 1.准备 1.1 显示系统版 ...

  5. CentOS7 编译安装 Mariadb (实测 笔记 Centos 7.0 + Mariadb 10.0.15)

    环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7.0-1406-x86_64-DVD.iso 安装步骤: 1.准备 1.1 显示系统版 ...

  6. MariaDB——(三) MariaDB 10.0.15 standard replication主从复制搭建

    最近看了一下MariaDB的常规复制章节,就按部就班的搭建了一下最简单的主从复制.需要的硬件环境很简单(在虚拟机VMware中搭建): 1:两台server:Master: 192.168.6.133 ...

  7. Java日志使用slf4j 配置log4j后,有日志文件 但日志文件内容为空

    SLF4J的全称是Simple Logging Facade for Java,即简单日志门面. SLF4J并不是具体的日志框架,而是作为一个简单门面服务于各类日志框架,如java.util.logg ...

  8. (72)zabbix监控日志文件 MySQL日志为例

    一般情况下,日志最先反映出应用当前的问题,在海量日志里面找到我们异常记录,然后记录下来,并且根据情况报警,大家可以监控系统日志.nginx.Apache.业务日志. 这边我拿常见的MySQL日志做监控 ...

  9. MariaDB——(一)CentOS 6.5 下 MariaDB 10.0.15 YUM 安装

    1.配置yum源: 在MariaDB官网提供了yum源在线生成器,选择合适的系统和版本后,会生成所需的repo文件内容: 在/etc/yum.repos.d/目录下新建一个MariaDB.repo文件 ...

随机推荐

  1. Redis 攻击还原Linux提权入侵的相关说明

    https://files.cnblogs.com/files/fudong071234/redis_crackit_v1.1%E2%80%94%E2%80%94redis%E6%94%BB%E5%8 ...

  2. [dedecms]隐藏栏目不生成静态页面

    重点文件在:/data/cache/inc_catalog_base.inc.php文件,里面存放的是栏目ID 先找到 /dede/sys_cache_up.php(后台更新缓存的地方),找到里面的U ...

  3. 【原创】ACR傻瓜式破解IC芯片卡

    1.简介: 智能卡(英语:Smart card 或IC Card),又称智慧卡.聪明卡.集成电路卡及IC卡,是指粘贴或嵌有集成电路芯片的一种便携式卡片塑料.卡片包含了微处理器.I/O接口及存储器,提供 ...

  4. AIX下core文件的分析

    笔者曾在AIX系统下使用C语言开发多个应用系统.众所周知,C语言编写程序时容易出现内存使用不当的BUG,例如内存越界.使用野指针.内存未初始化等等.在程序运行时,这些BUG很可能造成程序崩溃,但在测试 ...

  5. python写mapReduce初步

    最近在学了python了,从mapReduce开始 ,话不多说了,直接上代码了哈 map阶段,map.py文件 import sys # 标准输入 # 在终端的话,就需要这样了 cat a.txt | ...

  6. 为什么想起开通blog?

    为什么想起开通博客 2016年跨年夜写年终总结时,曾对自己许下愿,要成为一个会讲“故事”的人,无奈口才不行,写字也不好看,所以只能在电脑上码码字代替了. 在我看来,这“故事”该有许多种含义:首先,电子 ...

  7. L2-001 紧急救援 (25 分)

    L2-001 紧急救援 (25 分)   作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图.在地图上显示有多个分散的城市和一些连接城市的快速道路.每个城市的救援队数量和每一条连接两个城市的快 ...

  8. scott 本月报将收录移动Web加速技术的主要进展,欢迎读者一起完善,投稿邮箱:openweb@baidu.com

    _trackPageview 功能说明 用于发送某个URL的PV统计请求,适用于统计AJAX.异步加载页面,友情链接,下载链接的流量. 代码语法 _czc.push(["_trackPage ...

  9. 安装Feflow遇取的问题

    http://www.feflowjs.org/zh-cn/docs/ 在安装 npm install -g feflow-cli 是遇到这要一个问题 i C:\Program Files (x86) ...

  10. 评测parser的好坏

    1.在dependency parsing中一般是用 LAS UAS 来衡量 简要说来UAS是知道是边对了(也就是它依赖的节点找对了)就算对,而LAS在前者的基础上要求更加严格,还要求边的Label也 ...