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
文章列表