【ITPUB名人堂採訪】數學系的“牛蛙兄”如何戀上了Oracle SQL 優化?

leonarding發表於2014-05-07
訪問連結:http://www.itpub.net/thread-1864109-1-1.html

《ITPUB名人堂採訪 - 數學系的“牛蛙兄”如何戀上了Oracle SQL 優化》

談到數學與IT,似乎有點八竿子打不著.但對於從事IT行業的前輩來講,大家可能都會有一個共識, 數學與IT是一對雙胞胎.從計算機誕生的那一刻開始,就與0和1結下了不解之緣.數學是自然語言的客觀反映,同理也是計算機語言的靈魂所在。兩者都需要是嚴密的邏輯,都需要技巧。搞數學出身的IT人在語言程式設計藝術與優化方面是不是會激發出與眾不同的靈感?本期名人堂我們榮幸邀請到了兩位ITPub的常客,Hadoop與分散式資料處理版塊的版主leonarding坐鎮主持,採訪SQL優化專家udfrog,為我們分享SQL方法論的質變之道。如果您想成為中國最頂級的程式設計大師,本期精彩內容不容錯過。


leonarding Q1:udfrog,你好!在ITPUB的圈內,你有一個外號叫美食大師“牛蛙兄”,是因為你喜歡吃牛蛙麼?能否先簡單介紹一下自己。

udfrog A1:在ITPUB的開發版,大家習慣叫我牛蛙。我的真名叫張博,畢業以來幾乎一直從事資料倉儲相關的工作,2009年年初我開始接觸了Oracle,這些年來我擅長Oracle開發以及SQL調優。深受咋們Pub的同仁的薰陶,比如newkid的影響,務求把SQLl寫到極致,希望有朝一日能成為中國最頂級的程式設計大師。至於牛蛙這個名字的由來嘛,似乎也是因為newkid最先叫我牛蛙(因為id裡有frog?我自己也不知道),而且我本來就和牛字有緣,所以挺喜歡這個稱呼的。


leonarding Q2:聽說你是搞數學出身,方法論就是搞數學的人提出了,你能給大家講講SQL方法論質變之道嗎?

udfrog A2:盛哥不要黑我。我談不上對Oracle有多麼精通,但為什麼會喜歡上Oracle,也許冥冥之中是一種巧合。數學讓我領悟到了集合的精髓,我觸類旁通,在資料庫領域SQL的語句也濃縮了集合的思想—我開始嘗試去編寫各種各樣的程式碼,在業內人士的指點下,我進步成長很快,這也是開發版帶給我最寶貴的財富。

我的賬號是2009年註冊的,但由於時間的關係到了2012年才正式提上日程,開始在論壇裡活躍起來了。之前只為了下載資料,2012年去了新公司,半年多的時間沒有專案,整天都很閒,機緣巧合,來到了開發版,很快就被各類問題和各位高手的程式碼深深吸引了。

說來慚愧,剛到開發版的時候,我其實看不懂執行計劃,我甚至不知道rbo和cbo的區別,也並不知道幾種關聯的區別,並且完全不瞭解索引的原理……但是我依然堅持參與了很多帖子,而不只是看看,後來我看到biti大師說他當初不放過任何一個帖子,我覺得我做的應該還是對的。不要怕錯,別怕露短。

有的時候,你整本書從頭到尾開始學習優化技能,但是讀起來不是很有共鳴,一旦再沒有應用的機會,過陣子也就忘記了。而如果你關注每一個具體的問題,通過問題來學習特定具體的知識點,不僅不會枯燥,而且效率會高得多,理解也會深得多。重要的是,通過這一個具體的問題,再橫向瞭解涉及的必要的知識點,這樣你的收穫就多得多了。而經過一段的實際經驗積累,回過頭再系統性的看書,你就能把瑣碎的知識點串聯起來,形成完整的知識體系。

在我看來,需要學習的從來就不是語法,而演算法又不太是能夠直接學到手的。這樣說似乎就沒什麼可以做的了,呵呵。應該說,我們能夠直接看到並記住的,其實是方法,而演算法是需要我們經過提煉和總結的。方法是大致可以拿來套用的東西,而不同問題的演算法,可能需要一些創造想象力和邏輯推斷能力。而好的演算法的本質,是一種思想。

我本身是數學系出身,因為自己特別喜歡數學才選擇的這個專業。在數學系基礎課《數學分析》裡,有一套所有數學人必知的習題集《吉米多維奇》,在譯者前言部分,有一句話,意思是說,雖然翻譯出版了這套題集,但是其實特別鼓勵獨立思維的過程,永遠不要輕易去看解答,這樣你才能夠在思維上不斷突破。然後我們系主任在給我們介紹龐加萊的時候,說他有一個特質,會把複雜的問題記住,然後只要在有時間的時候就拿出來思考思考,即便是在休閒娛樂的小空檔。我自己從中受益匪淺。

論壇是一個很好的地方,值得多拿點時間來逛,有些欄目不錯,比如puzzle up謎題、程式設計大賽、有時候OO不知道從哪裡搞來的破題,相信經過一些時間,從來沒人能給你講明白的演算法這個詞,你自己就知道是怎麼一回事了。我主張在學習方面多一點投資,不要介意是否多花了幾塊錢。比如很多人會覺得參加技術大會要花路費住宿費,卻仍然會買幾千元的手機;平時個人花銷並不少,卻連一本紙質書都不想買,不惜時間苦苦下載pdf。如果這麼簡單的問題都搞不明白,那還挺可惜的。你要知道,如果你的人生是在高速上升期,那麼你的時間非常珍貴,每個人的黃金時期可能不會太長,且學且珍惜。


leonarding Q3:現在在論壇裡提起“udfrog”無人不知無人不曉,能在這麼短的時間內得到大家的認可很難得,能否分享下你的捷徑。

udfrog A3:我覺得自己其實是很活躍的,雖然一天也未必回一個帖子,但是基本每天都會來看幾次,也算是幾乎全勤了。如果有感興趣的帖子,是一定會發言的。我覺得論壇是個很好的學習工具,在這裡,你可以暢所欲言。所謂學而不思則罔,思而不學則殆,論壇是一個偏實踐的地方,是讓你“學”的地方;而讀書,是一個“思”的過程。只要將“學”和“思”結合起來,才能做到極致,技術水平才會有所飛躍。當然能夠得到大家的認可,我覺得很欣慰,你的回覆首先得讓自己滿意,如果自己都覺得回覆的演算法還不夠好,理由解釋的不充分,那就還要再斟酌斟酌。同理,那自然而然別人也會認可你的回覆。


leonarding Q4:作為過來人,經過這麼多年的實戰洗禮,你覺得在技術的道路上有哪些困惑?能否分享下你身邊發生的故事。

udfrog A4:浮躁,懶惰。很多人都希望自己技術好。有一些同事問過我,怎麼學技術,需要看哪些書籍,但通常都是止於“問過”,好像知道了怎樣學就等於學會了,然後就不再關注了,甚至連你專門發給他們一些有用的資料,文章,程式碼,技巧,他們都不會再看一眼。雖然你告訴他們,要多寫程式碼練手,但是他們依舊連最基本的語法都記不住。君不見bell6248都是用手機回帖的麼!:)

另外,我發現很多人不求甚解,解決問題完全靠猜,有時候一頓蠻幹,問題不知道為什麼確實解決了,就覺得自己真的解決問題了。其實這樣你得到的收穫將大打折扣,甚至完全沒有,你純粹淪為了解決問題的工具,而沒有享受其中。我推崇由理論出發,一步步自然而然而又必然的解決問題的方法,有時候也有一些猜測,但猜測得有理有據,而不是胡思亂想,連自己都說服不了的想法。


leonarding Q5:你平時在學習過程中有沒有發現不錯的書?能否推薦給我們puber?

udfrog A5:官方文件,必須的。Tom的程式設計藝術,Guy Harrison的效能優化求生指南。如果說tom的那本是在主動的介紹一些知識,那麼Harrison的書就是在檢閱你的知識—如果哪裡你不懂了,那就要翻資料好好看看了。


leonarding Q6:爸爸都去哪了,時間都去哪裡,作為一名資料庫從業者應該如何分配好時間?

udfrog A6:有的時候直接荒廢掉了。狀態好的時候,每天晚飯之後睡覺之前還能看1到2個小時的書,或者在論壇裡遇到一些有挑戰的問題,會保持思考。除此之外,如何利用好零散時間其實很重要。季羨林老先生在《這一輩子》裡提到他的八字箴言—念念不忘,勤學不輟。有時候,10分鐘的時間,可能已經足夠搞懂一個知識點,或者思考出一個更深層次的演算法,而這種“憑空”思維能力,本身也是極其值得具備的一種能力。

非常感謝劉盛(leonarding)與張博(udfrog)帶給我們的精彩分享,希望他們的閱歷與經驗對大家有所幫助。歡迎各位puber積極回帖交流自己的心得與體會。



Leonarding劉盛

2014.05.07

上海&spring

分享技術~成就夢想

Blogwww.leonarding.com


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26686207/viewspace-1155912/,如需轉載,請註明出處,否則將追究法律責任。

相關文章