zoukankan      html  css  js  c++  java
  • 浅谈数据库日志

    与往常一样,这不会太深入谈到技术点。数据库日志最好的学习是,读Oracle 8/9的日志原理。
    所有的系统都是程序员写出来的,因此,所有的IT系统,都是源于生活。
    我接触最早的是Dbase II,那时是单文件版本,单用户操作。到后来FoxPro 2 时结合NetWare386+DOS无盘站,就变成多用户系统(可参考当时订单处理系统,出入库系统等,证券网点大厅也有应用),那时有两个痛点:1,某个用户电脑忽然断电,数据写入不完整,导致大家都不能用了;2、多个用户对同一条记录进行写操作,或读与写不致,或ID增量重号。

    现在的数据库系统(Oracel、DB2、MS sql、Mysql等)都支持多用户,所有的数据库系统(包括Exchange),都是把数据先写到日志中,等某个时机(比如:确认commit)后再写到数据库记录中,日志是数据库最重要的数据之一,理解日志是相当重要的。为什么要用日志呢?就是要解决Foxfro多用户的痛点一啊。
    日志一般分成Undo与Redo:Undo一般用于事务的取消与回滚,记录的是数据被修改前的值,Redo一般用于恢复已确认但未写入数据库的数据,记录的是数据修改后的值,例如:数据库忽然断电重启,数据库启动时一般要做一致性检查,会把已写到Redo的数据但未写入数据库的数据重做一遍。

    数据库系统如何来确认哪些数据需要redo或undo呢?那就需要一个检查点(checkpoint),在系统中一般有一个表或一个控制文件来记录检查点,日志是按顺序一直写下去的,检查点设置后,只需要比对检查点之后的数据就可以了。

    源于生活就是这样,让我们想如何这个问题?估计也就是用这种日志方式,具体操作时加上一个检查点。

    日志明白了之后,有什么用呢?
    备份,知道如何设置备份的粒度。
    数据恢复,当出问题时,知道需要找到哪些文件可以恢复数据。例如,让你恢复3个月前的一笔交易,只要日志备份的足够长,还是有办法的。

    引申:
    MS SQL 中日志设置分成三种,简单、大容量、完成,有什么区别?
    MS SQL用户进行错误操作后,如何查日志?APEX SQL Log是一个好工具。

  • 相关阅读:
    Centos 7.0 下安装 Zabbix server 3.0服务器的安装及 监控主机的加入(1)
    Linux系统级别能够打开的文件句柄的数file-max命令
    记:cloudstack--gluster主存储上的一个文件损坏导致SSVM启动失败
    Linux 之 inotify+rsync 备份文件系统
    为什么KVM计算机点无故重启?
    vim批量在文件每行添加内容以及查询cloudstack模板是否是增量
    记-cloudstack 更改二级存储
    apache 自定义404错误页面
    URL路由
    前端图片优化
  • 原文地址:https://www.cnblogs.com/owenwong/p/8241928.html
Copyright © 2011-2022 走看看