文章出處

SQLSERVER MVP 我的心路歷程和想說的話

這里一如既往的先感謝幫助過我的人(排名不分先后):

感謝微軟公司、我的家人、博客園、宋沄劍、高文佳、聽風吹雨、黃總、論壇里的怡紅公子 、rmiao、KevinLiu328

我的同事、園子里的哥本哈士奇、stswordman、邀月等等等 ,還有很多很多人我需要感謝的

我在他們的幫助下不斷成長~

 


關于SQLSERVER的開發

我一直很好奇,SQLSERVER這個軟件到底有多少人在開發

后來我看了一篇文章:SQL Server Build系統


SQLSERVER要學習的內容

其實學習數據庫有很多東西需要你掌握,不是說你學習了一兩年的SQLSERVER,就能夠說對于SQLSRVER非常精通

其實要學的東西還多著呢,沒有多年的開發經驗是很難精通SQLSERVER的,加上SQLSERVER的技術一直在更新

我覺得自己所掌握的SQLSERVER的東西還只是冰山一角

例如下面幾項技術:

1、SQL Azure

2、SQLSERVER復制

3、SQLSERVER集群

4、SQLSERVER負載均衡

5、SQLSERVER插件開發

6、SQLSERVER BI開發

7、存儲系統

現在技術日新月異,今天你學會了這個,微軟明天在SQLSERVER出個新功能,你也要學習

在DBA的日常工作中,某些工作或者很多工作一般都會超出SQLSERVER聯機叢書BOL(Books Online)的范疇

有些SQLSERVER的功能甚至在BOL里都沒有提到,只能自己測試

所以學習是永無止境的,不單只對SQLSERVER的學習


為什么我選擇寫SQLSERVER方面的文章

博客園中的技術類文章非常多,編程,軟件工程,運維,面試,算法等等

其中寫數據庫方面的文章也是獲得最多人關注的一種技術文章之一

因為現在的程序大部分都離不開數據庫,大部分都要用到數據庫

寫數據庫方面的文章不僅C#技術人員可以看,PHP技術人員可以看,JAVA技術人員也可以看

而如果你寫的是C#方面的文章,那么PHP技術人員并不想看,那么你的文章的關注率就會降低

而目前市面上主流數據庫就那么幾個,找工作的時候也比較好,如果公司用的C#技術,只會PHP的程序員不會去面試

編程語言這麼多,就算是主流的編程語言也有很多,有時候選擇工作的范圍也是比較窄的

大家可以看一下博客園里推薦博客排行榜里,排前10的就有兩個是數據庫專家


計算機之路

從2007年開始說起吧

2007年:高考時候數學不合格,最喜歡的科目是英語,糊里糊涂就考入了廣州某個大專院校,糊里糊涂就選擇了“軟件開發”專業

2008年:學習數據結構的時候特別對算法不感冒,無論怎麼聽都不明白,想不到以后會做跟計算機相關的工作,雖然現在不是程序員

2009年:考試各科都合格,順利拿到畢業證,但是對于前面的路很迷茫

2010年:在家鄉的某個論壇認識了前一個公司的老板,老板在帖子里說親自教授嵌入式編程,當時自己對計算機方面工作還是比較感興趣

跟老板一起出差,到客戶那里進行系統培訓,出差回來就進入了公司,公司做的是油站管理系統,用的數據庫是SQLSERVER,

慢慢開始研究SQLSERVER,但是真的算深入研究是從買了徐老師的《SQLSERVER企業級平臺管理實踐》這本書開始的~

 

跟大家一樣,平時自己學習會買很多技術圖書,其中有很多都當廢紙賣給收廢品的

如果你想要的話我可以免費給你,前提是郵費您們來付(到付),反正擺在家里也是當擺設

先到者先得,我會在文章結尾公布誰獲得了我的書本

 

可以提供的書籍有:

FLASH CS4標準教程
Linux系統管理員職業技能鑒定教程
面向對象程序設計與VC++6.0教程
Windows server2003從入門到精通
AUTO CAD實用教程
VS2008高級編程
等級考試-二級JAVA語言
JAVA程序員上班那點事兒
從零開始學EXCEL VBA
C#應用程序設計教程
網店贏家淘寶新手開店7步通
ASP.NET案例教程
批處理命令在Windows操作中的典型應用
匯編語言程序設計教程第二版
Illustrator CS3 中文版
TCP/IP詳解 卷1:協議
Microsoft .NET 企業級應用架構設計
程序員考試輔導
C++程序設計教程--基于VS2008
矛與盾 黑客就這幾招
矛與盾 黑客攻防與腳本編程
WCF技術剖析
深入淺出WPF

留下您的聯系方式:姓名,收貨地址,手機,默認圓通快遞

每人只能夠取一本


某數據庫大牛的話

數據庫的變化,某一天我看到某位數據庫大牛朱XX在新浪微博發了一條:

關鍵之關鍵在于數據庫的內核:存儲機理,索引機制,SQL編譯器,優化機制,等等,

一般來說,數據庫的小版本會改進優化機制,提供新函數,大版本可能就會提供新索引,改寫SQL編譯器等等,

但是如果真正改變存儲機理,那一定是革命性變化。

我覺得這個也適用于SQLSERVER,SQLSERVER在SQLSERVER2005的時候,存儲機理發生了比較大的變化,

然后到SQL2008、 SQL2008 R2、  SQL2012都沒有多大變化存儲機理,你掌握的個中原理也不會過時

 

 


在出差的時候看到吉日大師的書

在2013年11月份去了南寧出差,由于酒店離南寧書城(朝陽廣場附近)很近

夜晚剛食完飯,就到處瞎逛,剛好路過南寧書城,進去肯定光顧一下計算機板塊

剛好看到吉日大師的書,我翻了幾頁沒有買,里面寫了吉日大師如何從低級程序員干到高級程序員,書里面他說了如何學習NEC公司的系統架構

他的經歷真的值得我們學習,我也希望有一天能把自己的經歷整理成書

 

 


井底之蛙

其實有時候我也覺得自己是井底之蛙,為什麼這樣說?

大家可以看一下這篇文章:Buffer Latch Timeout的解析

下面是文章中的內容:

下面是一個案例分析。我們在數據庫的錯誤日志里,發現有下面的錯誤,并且產生了一個內存轉儲。

A time-out occurred while waiting for buffer latch -- type 2, bp 0000000088FBFA40, page 1:153568, stat 0xc0010b, database id: 10, allocation unit Id: 72057594047758336, task 0x000000000C8E2988 : 0, waittime 300, flags 0x1a, owning task 0x0000000005A2F048. Not continuing to wait.

下面是對內存轉儲的的分析,為了簡單起見,不相關的調用堆棧被省略。

我們可以看到,下面的這個進程在獲取Buffer Latch的時候,由于無法及時得到Latch鎖,產生了上述錯誤信息,并生成一個內存轉儲。

0a 00000026`ebe09350 00000000`0215d1b8 sqlservr!CDmpDump::Dump+0x7c

0b 00000026`ebe093a0 00000000`0215dd0c sqlservr!SQLDumperLibraryInvoke+0x1a0

0c 00000026`ebe093d0 00000000`021503f7 sqlservr!CImageHelper::DoMiniDump+0x3d4

0d 00000026`ebe095d0 00000000`0206af82 sqlservr!stackTrace+0x82b

0e 00000026`ebe0ab20 00000000`02069f69 sqlservr!LatchBase::DumpOnTimeoutIfNeeded+0x19a

0f 00000026`ebe0abf0 00000000`008e7bcc sqlservr!LatchBase::PrintWarning+0x205

10 00000026`ebe0ace0 00000000`000e7a29 sqlservr!LatchBase::Suspend+0xd12

11 00000026`ebe0b950 00000000`000a0689 sqlservr!LatchBase::AcquireInternal+0x1ff

12 00000026`ebe0b9f0 00000000`000a1792 sqlservr!BUF::AcquireLatch+0x8d

13 00000026`ebe0bd10 00000000`000a166c sqlservr!BPool::Get+0xc7

14 00000026`ebe0bd70 00000000`000a35a0 sqlservr!PageRef::Fix+0xbc

15 00000026`ebe0bdd0 00000000`000a320a sqlservr!BTreeMgr::Seek+0x44d

16 00000026`ebe0bff0 00000000`000a2e5d sqlservr!BTreeMgr::GetHPageIdWithKey+0x20a

17 00000026`ebe0c070 00000000`000a38e8 sqlservr!IndexPageManager::GetPageWithKey+0xbd

這時,錯誤信息中的owning task地址0x0000000005A2F048對于問題的分析就很重要了。

我們通過owning task的地址,結合內存轉儲分析,可以找到對應于該owning task的進程編號。

其調用堆棧如下:

0:175> kM

# Child-SP          RetAddr           Call Site

00 00000026`f027fa68 000007fe`fcd910dc ntdll!ZwWaitForSingleObject+0xa

01 00000026`f027fa70 00000000`00083b1a KERNELBASE!WaitForSingleObjectEx+0x79

02 00000026`f027fb10 00000000`00082d76 sqlservr!SOS_Scheduler::SwitchContext+0x26d

03 00000026`f027ffa0 00000000`00082700 sqlservr!SOS_Scheduler::SuspendNonPreemptive+0xca

04 00000026`f027ffe0 00000000`000829ac sqlservr!SOS_Scheduler::Suspend+0x2d

05 00000026`f0280010 00000000`000e7e46 sqlservr!EventInternal<Spinlock<153,1,0> >::Wait+0x1a8

06 00000026`f0280060 00000000`000e7a29 sqlservr!LatchBase::Suspend+0x599

07 00000026`f0280cd0 00000000`00645aac sqlservr!LatchBase::AcquireInternal+0x1ff

08 00000026`f0280d70 00000000`00646a49 sqlservr!SQLServerLogMgr::GrowAFile+0x7c

09 00000026`f0281150 00000000`000cb38b sqlservr!SQLServerLogMgr::ReserveAndAppend+0x1fb

0a 00000026`f0281290 00000000`000cbe89 sqlservr!XdesRMReadWrite::GenerateLogRec+0x567

0b 00000026`f02813d0 00000000`000cbc23 sqlservr!XdesRMReadWrite::LogBeginXact+0x243

0c 00000026`f0281530 00000000`000cbc3f sqlservr!XdesRMReadWrite::MakeActive+0x64

0d 00000026`f0281560 00000000`001746c1 sqlservr!XdesRMReadWrite::GenerateLogRec+0x87

0e 00000026`f02816a0 00000000`00174860 sqlservr!PageRef::ModifyRow+0xce0

0f 00000026`f02818f0 00000000`00176749 sqlservr!PageRef::ModifyColumnsInternal+0x1b3

10 00000026`f0281b50 00000000`00175f71 sqlservr!IndexPageRef::Modify+0x2fd3

上面的調用堆棧顯示,這是在增長數據庫日志文件

由于數據庫日志無法及時增長完成,因此導致了這個線程長時間擁有Latch鎖而不釋放,而其他進程無法及時獲取相應的Latch鎖。

到現在我還沒有看明白在哪里可以看出數據庫日志文件在增長?

要看懂調用堆棧需要熟悉Windows的底層和SQLSERVER的內部原理,才知道SQLSERVER在做什么操作

 


如何寫一篇好文章

寫出一個好軟件需要重構您的代碼,寫文章也是一樣,要重構您的文章,重構您的語言文字


文章出品時間

其實這篇文章我在2013年9月已經寫好了,一直保存為草稿,一直在修改,一直在補充,希望在拿到MVP那天將自己的所有想法爆發出來

文章標題我改了,感覺只有心路歷程沒有想說的話比較單薄,而且心路歷程剛畢業3年多沒有太多要說的

如果拿不到MVP,可能這些想法就會一直埋藏了

  

這就是我的心路歷程

 

有人說:當云計算普及之后,DBA這個職位就會消失了,無論DBA這個職位消失與否,我希望喜歡數據庫的人還能做著數據庫的相關工作

無論是業余的還是平常工作中,就算是業余的,我相信您在未來的某一天可以找到一份自己喜歡的DBA的工作的

 

以上為個人觀點,如有不對的地方,歡迎大家拍磚o(∩_∩)o

 

書本已經全部寄出,因為屋企附近沒有圓通快遞,所以最后選擇了韻達快遞

陳培偉《批處理命令在Windows操作中的典型應用》

韻達單號:8000025193647

陳宏軍《VS2008高級編程》

韻達單號:8000025193648

張健《WCF技術剖析

韻達單號:8000025193649

楊志朋《Windows server2003從入門到精通》

韻達單號:8000025193650

湯雪勇《大話設計模式》

韻達單號:8000025193651

趙洪舵《等級考試-二級JAVA語言》《JAVA程序員上班那點事兒》

韻達單號:8000025193659

高山《TCP/IP詳解 卷1:協議》

韻達單號:8000025193661

江輝《深入淺出WPF》

韻達單號:8000025193658

劉重陽《程序員考試輔導》

韻達單號:8000025193660

李鵬迪《Microsoft .Net企業級應用架構設計》

韻達單號:8000025193653

黃曉峰《網店贏家淘寶新手開店7步通》

韻達單號:8000025193654

余益棟《矛與盾黑客攻防與腳本編程》

韻達單號:8000025193652


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()