黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

淺談幾個(gè)SQL的日志概念

系統(tǒng) 2039 0
淺談幾個(gè)SQL的日志概念

今天抽出一點(diǎn)時(shí)間解釋幾個(gè)關(guān)于SQL日志的概念,他們也經(jīng)常使初學(xué)者望而止步,反正計(jì)算機(jī)的術(shù)語(yǔ)都是很抽象的,所以第一感覺(jué)就是頭疼,然后然后幾次后就沒(méi)感覺(jué)了.以下有些是從書(shū)上摘抄的,有的是從網(wǎng)上找的算是借花獻(xiàn)佛吧!!

物理日志文件:
? ? 這個(gè)比較好理解,實(shí)實(shí)在在的東西,數(shù)據(jù)庫(kù)目錄下面的.ldf文件就是,有些人喜歡改后綴,感覺(jué)不大好,數(shù)據(jù)庫(kù)的事務(wù)日志記錄就在這里面

虛擬日志:
? ? 相信多數(shù)人有這個(gè)感覺(jué),虛擬這個(gè)字眼總是神秘的代名詞,虛擬個(gè)飯島愛(ài)我喜歡,但虛擬日志,虛擬內(nèi)存,虛擬。。。。,看了就討厭。解釋?xiě)?yīng)該是這樣的,對(duì)于一個(gè)或多個(gè)連續(xù)的物理日志文件,SQL SERVER在這些文件的內(nèi)部又劃分成了多個(gè)小的文件,稱為虛擬日志文件,他是日志文件收縮和日志截?cái)嗟淖钚挝唬热缥锢砣罩疚募?00M,內(nèi)部劃分了4個(gè)100M的虛擬文件,收縮時(shí)你得到的是300M,200M,不可能得到239M,對(duì)于一個(gè)物理文件,會(huì)劃分成多少個(gè)虛擬文件,這個(gè)由SQL自己維護(hù),唯一可以人工干預(yù)的是指定較大的物理日志文件,并指定較大的增長(zhǎng)比例,這樣可能虛擬文件的塊頭會(huì)大點(diǎn),數(shù)量會(huì)少點(diǎn),系統(tǒng)的維護(hù)開(kāi)銷(xiāo)會(huì)低一點(diǎn)

邏輯日志:
? ? 不要頭暈,硬著頭皮看吧?。?!感覺(jué)這個(gè)應(yīng)該是數(shù)據(jù)庫(kù)事務(wù)日志的真實(shí)寫(xiě)照,物理日志文件好比是一個(gè)容器,里面容納的是日志記錄,這些記錄就稱為邏輯日志,從物理日志文件的起點(diǎn)開(kāi)始,邏輯日志順序的生成,記錄下數(shù)據(jù)庫(kù)里發(fā)生的每個(gè)事務(wù),這些事務(wù)被打上一個(gè)標(biāo)簽,LSN,順序的排列下來(lái),這樣邏輯日志就在物理日志文件內(nèi)慢慢的成長(zhǎng),直到充滿了他,這個(gè)時(shí)候物理日志文件就會(huì)自動(dòng)添加新的空間,以繼續(xù)前面的步驟,這種情況是最直接的一種(從來(lái)不截?cái)嗳罩?,基本上就是這樣的),但事實(shí)上往往是復(fù)雜的多

檢測(cè)點(diǎn)(checkpoint)和恢復(fù)周期(recovery interval):
? ? checkpoint不是用于檢查數(shù)據(jù)是否完整,頁(yè)面連接是否正確的,他是由系統(tǒng)維護(hù)的一個(gè)進(jìn)程(你也可以手工的執(zhí)行),用于將高速緩存里的臟頁(yè)刷新到磁盤(pán),兩者的配合算是惟妙惟肖,當(dāng)緩存中的臟頁(yè)積累到一定的數(shù)量,SQL估計(jì)演算這些臟頁(yè)要花的時(shí)間快要接近設(shè)定的recovery interval(分鐘)時(shí),系統(tǒng)就會(huì)產(chǎn)生一個(gè)checkpoint,所以checkpoint的產(chǎn)生不是定時(shí)的,它由recovery interval和數(shù)據(jù)庫(kù)的更新頻繁度決定。如果你的數(shù)據(jù)庫(kù)永遠(yuǎn)不用重啟,永遠(yuǎn)不會(huì)出現(xiàn)什么故障,就這么一直運(yùn)行下去,那么checkpoint和recovery interval就沒(méi)有想象中的重要了,SQL總是先寫(xiě)日志,情況應(yīng)該是這樣的:用戶提交一個(gè)更新操作,SQL在高速緩存里緩沖了需要的數(shù)據(jù)頁(yè)和日志頁(yè),然后打上begin tran標(biāo)簽,對(duì)日志進(jìn)行修改,再修改數(shù)據(jù)頁(yè),然后打上commit tran標(biāo)簽,最后把修改過(guò)的日志頁(yè)刷新到磁盤(pán)上,在保證了這個(gè)步驟完成后,數(shù)據(jù)頁(yè)才被寫(xiě)入磁盤(pán),如果這個(gè)時(shí)候機(jī)器突然斷電導(dǎo)致高速緩存中數(shù)據(jù)頁(yè)的丟失,那么重啟機(jī)器時(shí)SQL的恢復(fù)進(jìn)程將根據(jù)已經(jīng)刷新的日志記錄來(lái)演算剛才的數(shù)據(jù)頁(yè),保證數(shù)據(jù)的完整性,這就好比支票已經(jīng)開(kāi)到了,但貨卻在路上丟了,憑借支票,你還是可以得到你的東西,像這種提交了又還沒(méi)來(lái)得及刷新數(shù)據(jù)頁(yè)到磁盤(pán)的日志事務(wù)可以稱為活動(dòng)日志,雖然概念不是這么定義的,但可以這么理解,因?yàn)橐坏┤罩居涗浐推鋵?duì)應(yīng)的數(shù)據(jù)頁(yè)被刷新到磁盤(pán)的話,這條日志的作用也就完成了,并稱為非活動(dòng)的日志,他的唯一用處就是備份下來(lái)留著以后做日志恢復(fù),所以SQL的邏輯日志你就應(yīng)該知道大概是怎么個(gè)樣子了,前面一大部分,是已經(jīng)演算的日志記錄(非活動(dòng)日志),后面一部分,是還沒(méi)有演算的(活動(dòng)日志),活動(dòng)部分的第一條事務(wù)稱為MinLSN,系統(tǒng)會(huì)擱段時(shí)間利用檢測(cè)點(diǎn)(checkpoint)演算活動(dòng)日志,來(lái)縮短數(shù)據(jù)庫(kù)重啟時(shí)的恢復(fù)時(shí)間,在演算結(jié)束后,checkpoint會(huì)在日志里打上一個(gè)結(jié)束語(yǔ),并將MinLSN標(biāo)識(shí)給下一個(gè)緊跟著的活動(dòng)事務(wù)日志,這也是下一個(gè)checkpoint的起點(diǎn)

截?cái)嗍聞?wù)日志:
? ? 這個(gè)概念很是讓初學(xué)者費(fèi)解,截?cái)嗍鞘裁匆馑????截?cái)嗪笕罩具€會(huì)增長(zhǎng)嗎???截?cái)嗫傆袀€(gè)斷點(diǎn)吧,他是從哪里開(kāi)始截?cái)嗟陌????截?cái)嗪髸?huì)釋放日志空間嗎???等等。。。。現(xiàn)在逐一擊破
? ? 首先截?cái)嗍菍?duì)SQL邏輯日志的一個(gè)清除過(guò)程,清除非活動(dòng)的邏輯事務(wù)日志。可以想象斷點(diǎn)應(yīng)該是活動(dòng)與非活動(dòng)的邊界處--MinLSN,他會(huì)將MinLSN前面的這段日志清除掉,邏輯日志的起點(diǎn)也會(huì)指向斷點(diǎn)MinLSN處,清除出來(lái)的空間并不會(huì)返還給操作系統(tǒng),而是被標(biāo)識(shí)為非活動(dòng)的虛擬日志文件,他表示當(dāng)有新的日志記錄進(jìn)來(lái)時(shí),這些空間可以被再次利用,所以截?cái)嗳罩静⒉粫?huì)減小物理日志文件的大小,只是清理了里面的一些內(nèi)容,以便新的日志記錄可以進(jìn)來(lái),SQL總是以循環(huán)鏈表的方式使用物理日志文件的,當(dāng)邏輯日志增長(zhǎng)到物理日志文件的盡頭時(shí),他會(huì)循環(huán)到日志文件的首部搜索被截?cái)喽尫懦鰜?lái)的空間,如果這個(gè)時(shí)候沒(méi)有空間的話,說(shuō)明物理日志已經(jīng)用完了,就得增加物理日志的大小,如果磁盤(pán)也用盡了,系統(tǒng)就會(huì)返回一個(gè)錯(cuò)誤提示。至于截?cái)嗪笕罩臼欠襁€會(huì)增長(zhǎng),疑點(diǎn)可能存在于trunc log on chkpt上,當(dāng)數(shù)據(jù)庫(kù)處于這種狀態(tài)時(shí)用戶會(huì)發(fā)現(xiàn)他們的日志文件總是那么小一點(diǎn)點(diǎn),道理很簡(jiǎn)單,檢查點(diǎn)截?cái)嗳罩竞?,日志文件里面總?huì)有空間容納新的日志記錄,自然是不會(huì)變大了,但也有特殊情況,當(dāng)一個(gè)較長(zhǎng)的事務(wù)運(yùn)行時(shí)(比如一個(gè)長(zhǎng)達(dá)2個(gè)小時(shí)的UPDATE語(yǔ)句),他會(huì)迅速的充滿日志,并補(bǔ)充新的空間進(jìn)來(lái),這個(gè)時(shí)候系統(tǒng)是來(lái)不及截?cái)嗟模@樣物理日志文件就馬上變大了,當(dāng)事務(wù)完成后,截?cái)嘣龠M(jìn)行時(shí),對(duì)文件的大小他是無(wú)能為力了,只是清理下剛才的戰(zhàn)場(chǎng)而已,所以截?cái)嗳罩竞筮壿嬋罩臼抢^續(xù)增長(zhǎng)的,至于物理日志,要看你提交事務(wù)的大小了

最后的話題:
? ? 經(jīng)常聽(tīng)到這樣的說(shuō)法,定期轉(zhuǎn)存事務(wù)日志,以釋放日志空間,backup log...with no_log,backup log...with truncate_only,這些只能使日志文件不變大,要想減小日志文件,還是要收縮日志文件,這樣才真正將空間返還給操作系統(tǒng),在sybase里面truncate_only和no_log還是有區(qū)別的,都是截?cái)嗳罩?,但前者在截?cái)嘀皶?huì)啟動(dòng)checkpoint,所以當(dāng)你的日志完全被充滿,truncate_only是不能成功的,他已經(jīng)沒(méi)有空間讓你checkpoint,這時(shí)只能采用no_log(SQL里面我還不知道),還有一個(gè)關(guān)鍵字就是no_truncate,他表示備份但不截?cái)嗳罩荆J(rèn)是截?cái)嗟模跀?shù)據(jù)庫(kù)因故障損壞時(shí)用這個(gè)備份日志特別有效

好了,就說(shuō)這么多了,由于這部分的概念實(shí)在是太抽象,本人能力也非常有限,所以表述可能不大清楚,錯(cuò)誤的地方請(qǐng)多多指教?。?!

淺談幾個(gè)SQL的日志概念


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦?。?!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論