程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

事務日志

編輯:SyBase綜合文章

日志文件是用來記錄數據庫每一次修改活動的文件。SQL Server中的每一個數據庫都有自己的日志文件,即系統表syslogs,也稱為事務日志。事務日志是撤消事務和出現故障時恢復事務的依據。
在某些情況下,事務日志比數據本身更為重要。
什麼是事務?
數據庫的修改是以事務為單位進行的。一個事務就是一個操作序列,這些操作要麼全做,要麼全不做,它是一個不可分割的工作單位。任何一個事務具備如下特征。
(1)執行的原子性(Atomic);
(2)保持數據的一致性(Consistency);
(3)彼此的隔離性(Isolation);
(4)作用的持久性(Durability)。
上述事務的四個特征被稱為事務的ACID准則。
事務在運行過程中,SQL Server把事務開始、事務結束以及對數據庫的插入、刪除和更新等每一個操作作為一個日志記錄存放到事務日志中。事務中的更新操作首先在數據庫緩沖區(內存)中進行,緩沖區分別有用來記錄操作活動的數據頁(data page)和日志頁(log page)。當運行到commit tran時,日志頁首先從緩沖區寫到磁盤上,而後數據頁從緩沖區寫到磁盤上,即遵循“先與日志(write_ahead log)”的原則,這樣保證出現故障的情況下,通過日志能夠得到最大限度的恢復。恢復必須撤消發生故障時還未提交的事務,已完成的事務若仍有未從緩沖區寫到數據庫設備中,還要重新運行該事務。
附:創建與裝載數據庫實例
use master

decl are @vedvno int
select @vdevno=max(convert(tinyint,substring(convert(binary(4),d.low),v.low,1))) 1
from master.dbo.sysdevices d,master.dbo.spt_values v
where v.type=’E’and v.number=3
declare @v_str char(2)
select @v_str=convert(char(2),@vdevno)
print @v_str

disk init
name=”YDDATA”,
physname=”D: yb_Data\YDDATA.dat”,
vdevno=@vdevno 1,
size=153600
disk init
name=”YDINDEX”,
physname=”D: yb_Data\YDINDEX.dat”,
vdevno=@vdevno 2,
size=102400
disk init
name=”YDLOG”,
physname=”D: yb_Data\YDLOG.dat”,
vdevno=@vdevno 3,
size=76800

create database YDMISDB
on YDDATA=300,YDINDEX=200
log on YDLOG=150

use YDMISDB

execute sp_addsegment indexdev,YTMISDB,YTINDEX
execute sp_dropsegment “default”,YTMISDB,YTINDEX
execute sp_dropsegment system,YTMISDB,YTINDEX

use master

load database YDMISDB from ‘d:\yd_dump\ydmis_backup.dmp’

online database YDMISDB

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved