国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区

掃一掃
關注微信公眾號

詳解Sybase數據庫ASE事務日志的管理技巧
2008-07-16   賽迪網

SYBASE ASE事務日志

SYBASE ASE的每一個數據庫,無論是系統數據庫(master,model, sybsystemprocs, tempdb),還是用戶數據庫,都有自己的transaction log,每個庫都有syslogs表。Log記錄用戶對數據庫修改的操作,所以如果不用命令清除, log會一直增長直至占滿空間。清除log可用dump transaction 命令;或者開放數據庫選項trunc log on chkpt,數據庫會每隔一段間隔自動清除log。管理好數據庫log是用戶操作數據庫必須考慮的一面。

下面就幾個方面談談log及其管理: 

一、ASE如何記錄及讀取日志信息

我們知道,ASE是先記log的機制。Server Cache Memory中日志頁總是先寫于數據頁:

圖1

◆Log pages 在commit ,checkpoint,space needed 時寫入硬盤。

◆Data pages 在checkpoint,space needed 時寫入硬盤。

系統在recovery 時讀每個database 的syslogs 表的信息,回退未完成的事務(transaction)(數據改變到事務前狀態);完成已提交的事務(transaction)(數據改變為事務提交后的狀態)。在Log中記下checkpoint點。這樣保證整個數據庫系統的一致性和完整性。

二、Transaction logs 和checkpoint 進程 

checkpoint 命令的功能是強制所有“臟”頁(自上次寫入數據庫設備后被更新過的頁)寫入數據庫設備。自動的checkpoint 間隔是由ASE 根據系統活動和系統表sysconfigures中的恢復間隔(recovery interval)值計算出的。通過指定系統恢復所需的時間總量,恢復間隔決定了checkpoint 的頻率。

如果數據庫開放trunc log on chkpt選項,則ASE在數據庫系統執行checkpoint時自動清除log。但用戶自己寫入執行的checkpoint命令并不清除log,即使trunc log on chkpt選項開放。只有在trunc log on chkpt選項開放時,ASE自動執行checkpoint動作,才能自動清除log 。這個自動的checkpoint動作在ASE中的進程叫做checkpoint進程。當trunc log on chkpt選項開放時,checkpoint進程每隔60秒左右清除log,而不考慮recovery interval設置時間的間隔。

三、Transaction log 的大小

沒有一個十分嚴格的和確切的方法來確定一個數據庫的log應該給多大空間。對一個新建的數據庫來說,log大小為整個數據庫大小的20%左右。因為log記錄對數據庫的修改,如果修改的動作頻繁,則log的增長十分迅速。所以說log空間大小依賴于用戶是如何使用數據庫的。 例如:

◆update,insert和delete 的頻率
◆每個transaction 中數據的修改量
◆ASE系統參數recovery interval 值
◆log是否存到介質上用于數據庫恢復

還有其它因素影響log大小,我們應該根據操作估計log大小,并間隔一個周期就對log進行備份和清除。

四、檢測log 的大小 

若log 在自己的設備上,dbcc checktable (syslogs) 有如下信息:

例:***NOTICE:space used on the log segment is 12.87Mbytes,64.35%
***NOTICE:space free on the log segment is 7.13Mbytes,35.65% 

根據log剩余空間比例來決定是否使用dump transaction 命令來備份和清除log。

用快速方法來判斷transaction log 滿的程度。

◆1>use database_name 
◆2>go
◆1>select data_pgs (8,doampg)
◆2>from sysindexes where id=8
◆3>go

Note:this query may be off by as many as 16 pages.
在syslogs 表用sp_spaceused 命令。

五、log設備 

一般來說,應該將一個數據庫的data和log存放在不同的數據庫設備上。這樣做的好處:

◆可以單獨地備份(back up)transaction log 
◆防止數據庫溢滿
◆可以看到log空間的使用情況。[dbcc checktable (syslogs)] 
◆可以鏡像log設備 

六、log的清除 

數據庫的log是不斷增長的,必須在它占滿空間之前清除。前面已經討論過,清除log可以開放數據庫選項trunc log on chkpt,使數據庫系統每隔一段時間間隔自動清除log,還可以執行命令dump transaction 來清除log.trunc log on chkpt 選項同dump transaction with truncate_only 命令一樣,只是清除log而不保留log到備份設備上。所以如果只想清除log而不做備份,可以使用trunc log on chkpt 選項及dump transaction with truncate_only,dump transaction with no_log 命令。若想備份,應做dump transaction database_name to dumpdevice。

七、管理大的transactions 

有些操作是大批量地修改數據,log增長速度十分快,如:

◆大量數據修改

◆刪除一個表的所有記錄

◆基于子查詢的數據插入

◆批量數據拷貝 

下面講述怎樣使用這些transaction 使log 不至溢滿:

大量數據修改,例如 :

1>update large_tab set col_1=0 
2>go

這個表很大,則此update動作在未完成之前就可能使log滿,引起1105錯誤(log full)而且執行這種大的transaction所產生的exclusive table lock,阻止其他用戶在update期間修改這個表,這可能引起死鎖。為避免這些情況,我們可以把這個大的transaction分成幾個小的transactions,并執行dump transaction 動作。 

上述例子可以分成兩個或多個小transactions,例如:

1>update large_tab set col1=0
2>where col2
3>go
1>dump transaction database_name with truncate_only
2>go

1>update large_tab set col1=0
2>where col2>=x
3>go
1>dump transaction database_name with truncate_only
2>go

若這個transaction 需要備份到介質上,則不用with truncate_only 選項。若執 行dump transaction with truncate_only,應該先做dump database 命令。

刪除一個表的所有記錄,例如:

1>delete table large_tab 
2>go

同樣,把整個table的記錄都刪除,要記很多log,我們可以用truncate table命令代替上述語句完成相同功能。

1>truncate table large_tab 
2>go

這樣,表中記錄都刪除了,而使用truncate table 命令,log只記錄空間回收情況,而不是記錄刪除表中每一行的操作。#p#副標題#e#

基于子查詢的數據插入

例:

 1>insert new_tab select col1,col2 from large_tab 
 2>go
 
同樣的方法,對這個大的transaction,我們應該處理為幾個小的transactions。

 1>Insert new_tab 
 2>select col1,col2 from large_tab where col1<=y
 3>go
1>dump transaction database_name with truncate_only
2>go
 1>insert new_tab
 2>select col1,col2 from large_tab where col1>y
 3>go
  1>dump database database_name with truncate_only
  2>go

同樣,若想保存log到介質上,則dump transaction 后不加with truncate_only 選項。若執行dump transaction with truncate_only,應該先做dump database 動作。

批量數據拷貝

在使用bcp把數據拷入數據庫時,我們可以把這個大的transaction變成幾個小的transactions處理,避免log劇增。 

開放trunc log on chkpt選項

 1>use master 
 2>go
1>sp_dboption database_name,trunc,true
2>go
 1>use database_name
 2>go
1>checkpoint
2>go 
 bcp... -b 100 (on unix)
 bcp... /batch_size=100(on vms)

關閉trunc log on chkpt選項,并dump database。

在這個例子中,一個批執行100行拷貝。也可以將bcp輸入文件分成兩或多個分開的文件,在每個文件執行后做dump transaction 來避免log 滿。

若bcp使用快速方式(無索引,無triggers),這樣操作不記log,換句話說,log 只記載空間分配情況。在這種情況下,要先做dump database(為恢復數據庫用)。若log太小,可置trunc log on chkpt 選項,這樣在每次checkpoint后清除log。

八、Threshold 和transaction log 管理 

ASE提供閾值管理功能,它能幫助用戶自動監視數據庫log設備段的自由空間。log的管理是靈活而復雜的,我們應該在實踐中摸索經驗,針對每個數據庫的不同情況,不同操作,做不同處理。

1.如何截斷數據庫的事務日志?

事務日志填滿數據庫中的日志空間后,可能不能使用轉儲事務日志的辦法備份并且清除原來存在的日志,因為轉儲日志這個動作本身也需要記錄日志。

這時候,可以首先使用dump transaction database_name with truncate_only命令,該命令只是截斷/清除事務日志,并不生成實際的備份。

如果不能奏效,可以使用dump transaction database_name with no_log命令。該命令也是僅僅清除既有的事務日志,不生成實際的備份文件,且該命令本身不記日志。

如果該命令還不能奏效,應當使用alter database命令為此數據庫的日志分配額外的空間,隨后執行dump transaction。

2.使用dump transaction with no_log的危險性

在命令參考手冊中的dump transaction with no_log條目下,有一條警告信息告訴你,你應該把這條命令作為沒有其它辦法時的最后一招才使用它。但是“最后一招”究竟是什么意思呢?當你使用這條命令時會怎樣呢?那你應使用哪條命令來代替它呢?最后,若這條命令如此有問題,為什么Sybase卻要提供它呢? 

Sybase技術支持建議你定期的dump你的transaction log。你必須根據你的數據庫中記入日志的活動量的大小以及你的數據庫的大小來決定dump的方式。有些地方按月dump transaction;有些地方每夜dump transaction。 

若你從未做過dump transaction,transaction log將最終會滿。 SQLServer使用log(日志)是出于恢復目的的。 當log滿時,服務器將停止事物的繼續進行,因為服務器將不能將這些事物寫進日志,而服務器不能運行大多數的dump tran命令,因為ASE也需在日志中記錄這些命令。 

這就是為什么當其它dump tran命令不能執行時no_log可執行的原因。但是想一下dump transaction with no_log被設計執行的環境,將不做并發性檢查。 

若你在對數據庫的修改發生時使用dump transaction with no_log,你就會冒整個數據庫崩潰的風險。在多數情況下,它們被反映成813或605錯誤。為了在數據庫被修改時,刪除transaction log中的不活躍部分可使用dump transaction with truncate_only。這條命令寫進transaction log時,并且它還做必要的并發性檢查。這兩條命令都有與其相關的警告,在命令參考手冊中會看到這些警告。請確保在使用其中任一條命令以前,你已理解這些警告和指示。 Sybase提供dump transaction with no_log來處理某些非常緊迫的情況。為了盡量確保你的數據庫的一致性,你應將其作為“最后一招”。

3.為什么數據庫事務日志滿了,使用dump tran with no_log仍不能截斷日志?

有兩種情況,可能出現這個問題。一是應用系統給ASE發送了一個用戶自定義事務,一直未提交,這個最早活躍事務阻礙系統截斷日志。二是客戶端向ASE發送了一個修改數量大的事務,清日志時,該事務還正在執行之中,此事務所涉及的日志只能等到事務結束后,才能被截掉。

對于第一種情況,只要督促用戶退出應用或者提交事務,系統管理員便可清掉日志。因為給ASE發送Dump transaction with no-log或者with truncate-only,它截掉事務日志的非活躍部分。所謂非活躍部分是指服務器檢查點之間的所有已提交或回退的事務。而從最早的未提交的事務到最近的日志記錄之間的事務日志記錄被稱為活躍的。從此可以看明,打開的事務能致使日志上漲,因為在最早活躍事務之后的日志不能被截除。

對于第二種情況,道理也同上。只是在處理它時,需慎重從事。如果這個大事務已運行較長時間,應盡量想法擴大數據庫日志空間,保證該事務正常結束。若該事務被強行回滾,ASE需要做大量的處理工作,往往是正向執行時間的幾倍,系統恢復時間長,可能會影響正常使用的時間。

熱詞搜索:

上一篇:網管必修課 中小企業安全路由器配置
下一篇:分離數據庫的日志和數據的步驟

分享到: 收藏
国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区
色香蕉成人二区免费| 麻豆成人免费电影| 国产福利精品导航| 国产日产欧美一区| 9i看片成人免费高清| 中文字幕一区二区三区精华液| 91亚洲精华国产精华精华液| 亚洲最色的网站| 欧美一三区三区四区免费在线看| 天天影视网天天综合色在线播放 | 久久久久国色av免费看影院| 国产成人在线观看| 国产精品欧美一级免费| 91久久国产综合久久| 日本不卡视频一二三区| 久久一夜天堂av一区二区三区| 成人性生交大片免费看视频在线 | 亚洲国产视频在线| 精品久久人人做人人爰| 成人免费看的视频| 亚洲成人自拍网| 精品国产免费人成电影在线观看四季| 国产91丝袜在线播放九色| 亚洲一区二区三区四区在线免费观看| 91精品国产综合久久精品图片| 国产乱码精品一区二区三区忘忧草| 中文字幕久久午夜不卡| 欧美日韩黄色影视| 国产激情一区二区三区四区 | 成人一区在线观看| 亚洲一区二区三区中文字幕| 亚洲精品一区二区三区四区高清| 久久黄色级2电影| 综合在线观看色| 久久久久9999亚洲精品| 日本丶国产丶欧美色综合| 日韩高清不卡一区二区三区| 精品国产乱码久久久久久1区2区| 一本一本大道香蕉久在线精品| 性感美女久久精品| 日韩久久一区二区| 欧美大片在线观看| 欧美性生活影院| 99热99精品| 国产麻豆成人精品| 麻豆视频观看网址久久| 一区二区三区四区亚洲| 日本一区二区三区高清不卡 | 国产乱码精品一区二区三区五月婷| 亚洲综合在线免费观看| 国产人妖乱国产精品人妖| 欧美日韩高清一区| 色琪琪一区二区三区亚洲区| 久久99精品国产麻豆不卡| 偷拍与自拍一区| 最新中文字幕一区二区三区| www久久久久| 日韩欧美亚洲国产另类| 欧美日韩一区不卡| 91在线你懂得| av午夜精品一区二区三区| 久久成人久久鬼色| 美国十次综合导航| 美女一区二区久久| 三级欧美在线一区| 一区二区三区波多野结衣在线观看| 国产清纯美女被跳蛋高潮一区二区久久w | 国产精品久久午夜夜伦鲁鲁| 精品国产制服丝袜高跟| 国产日韩欧美麻豆| 精品久久久久久久人人人人传媒 | 欧美一二三区精品| 欧美午夜精品久久久久久超碰| 色综合久久综合| 日本高清不卡一区| 在线观看国产日韩| 色天使久久综合网天天| 色狠狠桃花综合| 欧美日韩一区二区三区免费看| 色老头久久综合| 欧洲一区二区三区在线| 在线观看网站黄不卡| 欧美日韩精品欧美日韩精品一综合| 欧美视频你懂的| 欧美裸体bbwbbwbbw| 7878成人国产在线观看| 日韩午夜精品电影| 2020国产精品久久精品美国| 国产亚洲精品中文字幕| 国产精品成人免费| 亚洲人成亚洲人成在线观看图片| 亚洲人成小说网站色在线| 一区二区三区色| 亚洲国产中文字幕| 日本最新不卡在线| 日本不卡一二三区黄网| 久久99国产精品麻豆| 国产91高潮流白浆在线麻豆| 99精品国产视频| 7777女厕盗摄久久久| 久久综合精品国产一区二区三区 | 国产高清不卡二三区| 成人av先锋影音| 欧美日韩精品一区二区三区蜜桃 | 亚洲欧美色综合| 丝袜美腿成人在线| 国产麻豆欧美日韩一区| 色系网站成人免费| 欧美一区二区视频在线观看2020| 日韩久久久久久| 日韩毛片在线免费观看| 日韩国产欧美一区二区三区| 国产成人啪免费观看软件| 色噜噜狠狠色综合欧洲selulu| 欧美日韩日日夜夜| 国产日韩精品一区| 亚洲成a人在线观看| 国产一区二区三区在线观看免费 | 这里只有精品视频在线观看| 欧美成人乱码一区二区三区| 亚洲欧美中日韩| 美日韩黄色大片| 成人精品视频一区二区三区尤物| 在线免费观看日本欧美| 精品少妇一区二区三区在线视频 | 一个色综合av| 日韩高清在线观看| 91亚洲午夜精品久久久久久| 日韩欧美高清在线| 亚洲一区二区免费视频| 岛国av在线一区| 精品人伦一区二区色婷婷| 亚洲自拍与偷拍| 大胆亚洲人体视频| 亚洲精品在线三区| 日本aⅴ免费视频一区二区三区| jiyouzz国产精品久久| 精品少妇一区二区三区免费观看| 一区二区三区蜜桃网| 国产精华液一区二区三区| 在线观看91精品国产麻豆| 国产精品久线在线观看| 国产一区二区三区视频在线播放| 欧美人与禽zozo性伦| 亚洲精品视频在线观看网站| 成人av网站在线观看免费| 久久久国产精品麻豆| 久久国产精品99精品国产| 3d动漫精品啪啪1区2区免费| 亚洲美女视频在线观看| 成人黄页毛片网站| ww亚洲ww在线观看国产| 免费成人在线网站| 91精品在线一区二区| 一区二区三区欧美视频| 91在线视频18| 成人免费一区二区三区在线观看| 国产成人亚洲综合a∨婷婷| 91精品国产色综合久久不卡电影| 亚洲国产三级在线| 欧美久久免费观看| 亚洲成人tv网| 欧美精品电影在线播放| 一个色妞综合视频在线观看| 欧美性xxxxxxxx| 一区二区三区成人| 色av成人天堂桃色av| 国产精品伦一区| 成人精品gif动图一区| 中文字幕中文在线不卡住| 成人av电影在线网| 久久久高清一区二区三区| 国产精品主播直播| 中日韩免费视频中文字幕| av电影一区二区| 亚洲综合一二三区| 在线播放中文一区| 麻豆精品一区二区三区| 久久这里只精品最新地址| 成人午夜电影网站| 亚洲日本丝袜连裤袜办公室| 日韩一区和二区| 精品一区二区三区在线观看| 久久只精品国产| 91亚洲国产成人精品一区二区三| 一区二区三区不卡视频在线观看| 欧美三级电影网站| 久久成人18免费观看| 欧美国产精品v| 在线视频一区二区三| 首页亚洲欧美制服丝腿| 精品少妇一区二区三区日产乱码 | 亚洲三级电影全部在线观看高清| 欧美影院精品一区| 美女尤物国产一区| 中文字幕一区二区三区不卡| 欧美撒尿777hd撒尿| 久久成人精品无人区| 中文字幕综合网| 欧美一级精品大片|