自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

日志真沒(méi)想象的那么簡(jiǎn)單

原創(chuàng)
數(shù)據(jù)庫(kù) SQL Server 數(shù)據(jù)庫(kù)運(yùn)維
凡是接觸過(guò)SQL Server的人現(xiàn)在應(yīng)該都知道,事務(wù)日志(transaction log)是任何SQL Server數(shù)據(jù)庫(kù)的一個(gè)重要組成部分。談?wù)撊罩臼俏覀€(gè)人偏愛(ài)的話題之一,單單介紹日志方面通常存在的一些誤解會(huì)是長(zhǎng)篇大論,豈止這篇短文涵蓋得了。

【51CTO精選譯文】凡是接觸過(guò)SQL Server的人現(xiàn)在應(yīng)該都知道,事務(wù)日志(transaction log)是任何SQL Server數(shù)據(jù)庫(kù)的一個(gè)重要組成部分。談?wù)撊罩臼俏覀€(gè)人偏愛(ài)的話題之一,單單介紹日志方面通常存在的一些誤解會(huì)是長(zhǎng)篇大論,豈止這篇短文涵蓋得了。

在過(guò)去的兩年里,我曾在無(wú)數(shù)次大會(huì)上作過(guò)名為《簡(jiǎn)單恢復(fù)到底有多簡(jiǎn)單?》的報(bào)告,今年5月在加拿大蒙特利爾舉行的DevTeach / SQLTeach大會(huì)上我還會(huì)做同樣的報(bào)告。雖然我無(wú)法在此介紹所有詳細(xì)內(nèi)容,也無(wú)法介紹日志的組織、日志為何會(huì)擴(kuò)大或縮小,以及截?cái)嗳罩镜降资鞘裁匆馑?,但可以基本回答“?jiǎn)單恢復(fù)到底有多簡(jiǎn)單”這個(gè)問(wèn)題。簡(jiǎn)單恢復(fù)的簡(jiǎn)單之處在于你的備份策略。你沒(méi)必要為每隔多久進(jìn)行日志備份而操心,因?yàn)闊o(wú)法進(jìn)行日志備份。

簡(jiǎn)單恢復(fù)并不意味著SQL Server不用日志功能了。這是個(gè)非常普遍的誤解,也是個(gè)普遍的要求——許多用戶想要以某種方法來(lái)運(yùn)行SQL Server,又不用負(fù)擔(dān)日志開(kāi)銷,因而想知道允許這么做的特殊而秘密的跟蹤標(biāo)志(trace flag)。實(shí)際上,沒(méi)有所謂的不生成日志的操作,即無(wú)日志操作,盡管人們可能需要這樣子。SQL Server至少需要把關(guān)于你操作的足夠多的信息記入日志,以便正常運(yùn)行過(guò)程中系統(tǒng)突然出現(xiàn)故障的話,可以撤消(或回滾)一切。

雖然SQL Server沒(méi)有執(zhí)行無(wú)日志操作的可能性,不過(guò)倒是有最小日志(minimal logging)這樣的操作。不過(guò)我發(fā)現(xiàn),最小日志中到底哪些信息被記入日志并沒(méi)有得到一個(gè)很明確的定義。SQL Server聯(lián)機(jī)叢書(shū)(BOL)描述了一組最小日志操作,表示“最小日志記錄的僅僅是在不支持及時(shí)點(diǎn)恢復(fù)的情況下,恢復(fù)事務(wù)所需要的信息?!边@個(gè)定義意味著最小日志必須記錄足夠多的信息,以便恢復(fù)或前滾事務(wù),即使每一單獨(dú)的數(shù)據(jù)行變更并沒(méi)有按時(shí)間順序記入日志。然而,其他定義表明最小日志只夠回滾事務(wù)。

簡(jiǎn)單恢復(fù)是三種恢復(fù)模式之一,而這三種模式之間的差異恰恰決定了如何管理日志。如果你在BOL中讀到關(guān)于恢復(fù)模式的部分,它不但列出了可以最小日志的一系列操作,還寫(xiě)到那些操作只是在大批量日志(BULK_LOGGED)和簡(jiǎn)單(SIMPLE)恢復(fù)模式下才是最小日志的;而在完全(FULL)恢復(fù)模式下,操作都是完全日志的。但我找不到哪里有完整的定義表明“完全日志”是什么意思。我過(guò)去以為完全日志意味著,每一個(gè)單獨(dú)的行都寫(xiě)入到日志中,就好像你執(zhí)行了一組單獨(dú)的插入(INSERT)、更新(UPDATE)或刪除(DELETE)操作。但對(duì)某些操作來(lái)說(shuō),事實(shí)并非如此。

當(dāng)一個(gè)可以最小日志的操作在完全恢復(fù)模式下在數(shù)據(jù)庫(kù)里面執(zhí)行時(shí),寫(xiě)入到事務(wù)日志的并不是每一個(gè)單獨(dú)的行,而是操作期間被修改的每一頁(yè)。所以,如果你在完全恢復(fù)模式下在數(shù)據(jù)庫(kù)里面執(zhí)行大批量插入(BULK INSERT)操作時(shí),由于每一頁(yè)塞滿了新的行,該頁(yè)寫(xiě)入到日志中,而這條日志記錄的大小將是8192個(gè)字節(jié)大?。ㄅcSQL Server的頁(yè)大小相同)。如果你在完全恢復(fù)模式下在數(shù)據(jù)庫(kù)里面構(gòu)建或重構(gòu)索引,SQL Server并不會(huì)把生成的每一個(gè)單獨(dú)的索引行記入到日志。而是一旦整個(gè)索引頁(yè)生成,就把它們記入到日志。 

從空間和時(shí)間方面來(lái)看,把整個(gè)頁(yè)記入日志其實(shí)要比把每一個(gè)單獨(dú)的行記入日志高效得多。但只針對(duì)被認(rèn)為是最小日志操作的那些操作才這么做。所以,我認(rèn)為那些操作進(jìn)行完全日志與單獨(dú)的數(shù)據(jù)修改操作進(jìn)行完全日志不是一個(gè)概念。

所以,有一組操作我們可以稱之為最小日志操作。點(diǎn)擊這里:http://msdn.microsoft.com/en-us/library/ms191244(v=SQL.100).aspx,可以參閱這些操作的完整列表。這些操作之所以很特別,就在于它們?cè)诿恳环N恢復(fù)模式下日志方式各不相同。在完全恢復(fù)模式下,每一個(gè)完整的被修改頁(yè)寫(xiě)入到日志;在大批量日志恢復(fù)模式和簡(jiǎn)單恢復(fù)模式下,SQL Server只是把關(guān)于被修改頁(yè)的信息記入日志,而不是將頁(yè)里面的內(nèi)容本身記入日志。其他操作是真正的完全日志——不管你在哪種恢復(fù)模式下,它們含有每一個(gè)變更行的全部詳細(xì)信息,包括含有操作的事務(wù)、操作執(zhí)行時(shí)間以及受到影響的頁(yè)。

恢復(fù)模式是為SQL Server 2000產(chǎn)品添加的一項(xiàng)很棒的特性,但任何一種恢復(fù)模式根本就不簡(jiǎn)單。你對(duì)于SQL Server如何管理事務(wù)日志了解得越深入,就能做出越明智的決定,確定哪一種恢復(fù)模式適合自己。 

原文鏈接:http://www.sqlmag.com/article/log-files3/How-Simple-Is-Logging-.aspx
 

【編輯推薦】

  1. 淺談SQL Server2005的幾種分頁(yè)方法
  2. 用SQL查詢?nèi)?月 周 季
  3. SQL Server 2008中的代碼安全
  4. SQL問(wèn)題與解答:維護(hù)日志和索引
  5. SQL Server刪除日志文件后無(wú)法附加數(shù)據(jù)庫(kù)的解決方法
責(zé)任編輯:艾婧 來(lái)源: 51CTO
相關(guān)推薦

2015-08-06 15:24:21

2010-08-20 09:37:04

虛擬化

2022-05-16 07:32:12

K8SIP 地址

2017-08-09 14:49:03

WebHTTPS瀏覽器

2010-01-18 10:27:20

2015-06-24 10:32:13

訊鳥(niǎo)云計(jì)算會(huì)展

2023-06-27 13:12:03

人工智能AI

2022-08-01 10:31:40

KubernetesIPLinux

2023-12-04 07:18:05

Goswitch

2015-03-03 13:54:53

2014-03-31 15:32:36

AndroidNDK開(kāi)發(fā)

2014-03-14 09:35:56

內(nèi)存優(yōu)化軟件內(nèi)存優(yōu)化

2013-02-22 09:49:43

大數(shù)據(jù)谷歌大數(shù)據(jù)全球技術(shù)峰會(huì)

2016-06-08 13:42:08

2023-01-12 15:36:26

2020-09-30 10:40:56

人工智能AI

2023-07-30 16:09:38

數(shù)字經(jīng)濟(jì)數(shù)字化轉(zhuǎn)型

2012-12-28 13:47:36

Raspberry PGeek

2015-04-30 10:12:13

開(kāi)源云平臺(tái)OpenStack

2021-10-14 09:52:53

Dockerfile鏡像容器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)