來源 | 非同步 | 文末贈書
執行在Linux上的新版SQL Server,將其新特性及強大功能與Linux原生系統的優點進行結合,不僅在運維及效能上帶來巨大的便利和提升,同時對大資料和資料挖掘領域的逐步相容[如內建機器學習、圖形處理、相容HDFS(hadoop分散式檔案系統)、Containers(容器)等特性,使得企業不需要從頭開始搭建或者把現有環境遷移到“適合”大資料環境的其他關係型資料庫中。
今天小編有幸請到了《SQL Server On Linux運維實戰》作者黃釗吉,來看看他的所思所想。
作者簡介
黃釗吉
10年SQL Server開發和運維經驗,從事過電子商務網站後臺開發、銀行績效系統資料庫開發,以及服飾類ERP系統、信用卡系統(基於AWS)和大型電商倉儲系統資料庫的運維工作。6屆微軟資料平臺MVP(2013-2018),前CSDN論壇SQL Server大版版主,CSDN部落格專家,部落格訪問量超過228萬。個人創作圖書《SQL Server效能最佳化與管理的藝術》,與人聯合翻譯《Windows PowerShell實戰指南(第2版)》。擁有MCTIP Database Administrator 2008、MCSE Data Management and Analytics等多個技術認證證書。
Q 非同步社群:可以介紹一下自己嗎?正在做什麼專案?
黃釗吉:大家好,我是《SQL Server On Linux運維實戰》作者之一,黃釗吉,畢業於廣東工業大學計算機軟體工程,從大學開資料庫課程(當時用的是SQL Server 2000)算起來的話都已經超過12年的SQL Server使用經歷,畢業後做過幾年.Net和SQL Server的開發,後面8年一直以SQL Server DBA的工作為主。當前運維的是某大型電商的倉儲系統。兼顧公司內部的SQL Server系統及基於阿裡雲的大資料平臺運維工作。
但是這是工作所需的任務,自己的規劃是對運維工作又更深層次的想法,我與另外一位作者(我們是同一個DBA組)正在計劃使用開源軟體搭建符合我們想法的資料庫為主的運維平臺,當然,說到開源,Linux是不可避免的,加之微軟也宣傳“Linux上的SQL Server 是微軟有史以來最好的資料庫產品”,把這些資訊整合起來,意味著我們不得不學習和運用Linux上的工具,使我們的工作更加高效。
Q 非同步社群:10年SQL Server開發和運維經驗,6屆微軟資料平臺MVP,您是如何一步步走上這軟體開發和運維之路的?
黃釗吉:大概在9年前,我是以專案經理的身份參加當時所在公司的一個專案,是對東莞某銀行的分行實施績效管理系統(簡單來說就是給行員算工資的一個依據來源系統),在專案初期相對還是比較閑,一天大概有6個小時的自由時間,加上出差在外沒什麼消遣,就開始思考未來,在經過了幾個星期的資料蒐集之後,覺得DBA這個職位比較適合自己,而且有可持續性,就決定轉型DBA,奈何當時公司不需要這個崗位,只好離職尋找其他機會。
在後來的公司裡面,經過大量的學習和時間,工作也相對穩定並且清閑下來,由於以前丟過電腦,資料全沒了,所以就想把資料放到網上,做個“備份”,想起大學的時候常登陸的是CSDN,因此就把資料以文章的形式放到CSDN部落格。有一天在寫完文章之後點一下一些推薦文章,發現作者的頭像下方有個MVP的勛章,覺得很炫很想要,就開始了尋找如何成為MVP的路。
經過兩年有目的的準備,終於在2013年成為了MVP,並且在接下來5年裡面一直連任至今。無可否認我申請MVP帶有功利性,但是這個過程中我逼自己不停學習和成長,回過頭來也沒什麼遺憾的,同時MVP擴大了我的圈子和影響力,更加加快了我的成長,這個過程使得我的工作越來越輕鬆和高效。
Q 非同步社群:是什麼初衷開始創作《SQL Server On Linux運維實戰》一書?過程中遇到過棘手的問題嗎?如何解決的?寫書帶給您最大的變化是什麼?
黃釗吉:在2017年年底,我剛忙完手頭上的事情,在重新審核了當前大環境的趨勢之後,選擇了Linux上的SQL Server作為我接下來幾年的主攻方向。也許冥冥中註定,這時候人郵社的王峰松老師經過圈內朋友的推薦找到我,希望我寫一本Linux上的SQL Server 書籍,在大概一個月的思考和可行性分析之後,覺得可以寫,並且透過寫書來強迫自己重新整理知識,因此決定寫第二本原創書籍。
在編寫的過程中,遇到的最大問題當然就是對Linux的不熟悉,要應付式地“熟悉”Linux,不難,但是要說服自己,很難。因為作為SQL Server DBA,如果不能對作業系統有一定的把控,那麼執行在這個地基上的應用(主要是DB)也不可能穩定。不過由於自己長期作為Windows上的SQL Server使用者,遷移到Linux上的經驗略顯不足,剛好自己的同事熊章立作為多年Linux加MySQL的運維高手,我認為此時1+1必然大於2。因此決定不獨著,而是合著。
寫書的過程不僅逼自己快速學習、鍛煉知識整理能力,更重要的是心態的鍛煉,寫書過程少說也反覆安裝了過百次Ubuntu,很多時候各種配置會整的自己焦頭爛額,但是不過這個坎,那麼永遠都只能在自己的小圈子等著被時代所淘汰。
Q 非同步社群:《SQL Server On Linux運維實戰》您最想將這本書推薦給誰看?
黃釗吉:我最希望給同是SQL Server DBA的同行看,更重要的是讓很多企業的技術決策者“知道”,SQL Server的進步一點都不亞於各種開源產品。
Q 非同步社群:作為CSDN的部落格專家,寫書與寫部落格最大的區別是什麼?
黃釗吉:前面提到,寫部落格的初衷是為了備份資料。慢慢地得到了讀者和社群的認同,所以一直堅持下來。寫書的時候也常在提醒自己,寫書的責任很大,它是很正式的事情,部落格嘛,也許寫錯了或者寫得不深入也沒關係,部落格更多的是分享自己的所得,所以我也不能保證多麼完美。但是寫書,術語、排版、提綱等等都非常嚴謹,比如部落格我可以想到什麼專題就寫幾篇,或者工作上遇到一個有趣的問題,解決了就分享一下。
但是寫書是要體系的,不能打遊擊戰那樣內容跳躍過大,自己讀過50多本SQL Server的書,深有體會,如果知識點非常不連貫,讀起來很痛苦。所以我覺得寫書和部落格的最大區別在於態度,前者要求你必須要負責任地完成。部落格則比較隨意,當然我不是說部落格就是亂寫,只是思想壓力沒那麼大。
Q 非同步社群:如何評價微軟釋出了SQL Server on Linux?為什麼?
黃釗吉:我個人認為,釋出SQL Server on Linux,是一種重生。其實拋開與開源產品的費用問題,SQL Server 從2008版本開始,就已經相當的不錯,特別是2014、2016及以上版本,都非常強大。也就是說,本身就是一個不錯的產品,但是時代在變,擁抱變化才能具有更強的生命力。(說明一下,我並不是給微軟打廣告,只是挺認同微軟新任CEO的做法),資料的產生和利用催生了A(AI)B(Blockchain,區塊鏈)C(Cloud,雲)D(BigData,大資料)和其他如物聯網等等的技術,但是他們幾乎或多或少地基於Linux,如果SQL Server再不相容Linux,那麼只能守著自己的一畝三分田,在不久的將來被淘汰。
在我看來,SQL Server哪怕類似Oracle、MySQL那樣單純簡單地平臺相容(用過的人都知道在Windows上MySQL和Oracle實在有點不堪入目),已經很了不起了,但是Linux上的SQL Server不僅相容,而且是有相當深度的相容,並且在相容的前提下具有不錯的前瞻性,在寫書之時還是SQL Server 2017,但是在成書之時已經釋出了SQL Server 2019,2019對大資料平臺有很多非常好的功能,不過由於時間和篇幅問題,書上沒有兼顧。
總的來說,Linux上的SQL Server的釋出,給了SQL Server一次重生的機會。業內從業人員可以不接受SQL Server,但是請不要再用過去的觀點去評價現在的SQL Server。
Q 非同步社群:初學資料庫,用什麼好?Oracle、SQL Server、MySQL?可以介紹一下嗎?
黃釗吉:我個人大學課程使用的是SQL Server 2000,後來曾經想跟風學Oracle,奈何當時學校的電腦太差裝不了,裝上了也卡得動不了,就放棄了。
後來工作上也稍微非常淺顯地用了一些Oracle和MySQL,個人感覺使用者體驗上都不如SQL Server好,這裡不得不感嘆微軟在一些方面的思維植入,比如大家都清楚那個3存檔的圖示就是儲存功能,可能正因為長期使用Windows作為日常使用,所以用SQL Server(準確來說是他們管理工具SQL Server Management Studio,簡稱SSMS)會更加習慣。但是在這幾年就業來看,MySQL不得不說是領頭羊,就我個人過去找工作搜尋關鍵字,大概90%是MySQL的崗位,5~7%是Oracle,剩下的就是SQL Server或者DB2(當年還有這個崗位,現在很少見了)。
從就業的方向來看,我推薦MySQL,但是我有一句更重要的話要說:“重點學習理論而不是具體實現,同時要放眼其他產品,特別是NewSQL類”。
Q 非同步社群:您曾說,DBA很像一個“中醫”,不過最好還是“中西醫結合”。為什麼這樣說?
黃釗吉:這個話題說起來又可以寫半本書了,我就簡單說一下一點比較關鍵的點吧。最開始這句話不是我說的,但是看到了之後覺得確實是那麼回事。
在處理實際問題時,望聞問切的思路真的起到了很大的作用,過去自己及同事遇到效能問題,只有兩個方案:加資源,加索引。這種做法缺乏了可靠的依據,純屬是碰運氣,小型系統可能沒所謂,但是對於核心系統、大型系統而言,運氣就並不是那麼容易碰到,所以我們可以參考醫生治病的檢查思路。
之所以先說中醫,是因為它的辯證思維。不能頭痛醫頭腳痛醫腳,DBA也一樣,10年工作經歷讓我越來越清楚表象往往具有誤導性,比如效能問題往往的表現就是“卡”,但是它的根源實在是太多了,可能網路不穩定、應用伺服器資源不足、突發性大資料量操作等等。沒有真正的適用於處理所有效能問題的方法,需要辯證地收集資訊,分析問題,最終給出方案。其實其他行業的處事方式也差不多,但是提到醫生,另外一個原因是責任,正所謂人命關天,所有操作都應該慎之又慎,DBA也一樣,對於一個正在執行的系統,很多操作是不可真正0丟失恢復的,這就要求DBA也需要時刻提醒自己責任重大,程式丟了再打包上傳,資料丟了就不是那麼簡單的事情。何況今時今日資料的重要性不言而喻。
說到中西醫結合,在我看來,中醫的上千年來都主要以經驗來治病,以陰陽平衡為治療標的,這些在非專業人士看來實在比較虛,而西醫藉助各種指標,能夠快速定位,但是西醫通常以消滅癥狀為目的,不一定總是能治根。所以我希望像西醫那樣藉助工具和指標體系發現並定位問題,然後藉助中醫的調和理論讓資料庫“平衡”起來。
最後提醒一下,我不是醫學專業,所以不敢說太多免得誤導讀者。我只是希望藉助醫學的思路和手段去管理和最佳化資料庫,難道沒人認同資料庫就是DBA的病人嗎?
Q 非同步社群:微軟擁抱開源,收購github,並且推出免費的私有倉庫,您怎麼看待這件事?為什麼?
黃釗吉:這如釋出Linux上的SQL Server類似,直面變化,接受變化並勇敢地參與變化,才能走得更遠。另外我覺得微軟的做法是在嘗試改變過去的一些不可否認的不好的做法,所以大家不妨嘗試放下過去的看法,拭目以待或者積極參與其中。
Q 非同步社群:您如何看待“微軟SQL Server 2017將支援機器學習服務(Machine Learning Services)的核心產品思路,是在資料庫內直接執行機器學習負載,它允許大家熟悉的 Python/R 指令碼與眾多機器學習類庫在資料庫伺服器上執行,並無縫地與 SQL 銜接。”這是對人工智慧從業者利好嗎?
黃釗吉:這個我覺得是有一定的商業行為,這個功能結合SQL Server on Linux,可能使得一些已經在用SQL Server作為生產系統但是又準備開展大資料專案的公司,不需要像過去那樣必須換其他相容Linux的DBMS作為生產系統來配合大資料,或者透過額外的工具把資料從Windows上的SQL Server轉移到大資料平臺上。
結合現在SQL Server 2019在大資料上的新功能,我認為微軟是在打造一個以SQL Server為唯一視窗/介面,打通RDBMS、BI、Big Data和AI直接的聯絡。
Q 非同步社群:給從業者推薦對您影響最大的3本書?您推薦哪本?為什麼?
黃釗吉:第一本是SQL Server 技術內幕這個系列。這是無論官方還是非官方都首要推薦的系列書籍。建議看最新版本,能夠把這套書籍讀懂並實踐,那麼對於SQL Server從業人員來時候,基本上沒有什麼難度了。
第二本《SQL Server Execution Plans, 3rd Edition》,有一些經驗的SQL Server從業人員應該知道——為什麼陳述句慢?答案就在執行計劃裡面。如何讀懂執行計劃,這是一本不可多得的書。這是第三版,相容了SQL Server 2016的一些新特性,建議反覆研讀。
PS:這本書可以在https://www.red-gate.com/products/dba/sql-monitor/entrypage/execution-plans免費下載。
第三本《Pro SQL Server Internals, 2nd edition》,這本書跟技術內幕系列比較接近,但是從另外一個角度去講解SQL Server的內幕。
Q 非同步社群:最後,對於剛剛入門的新人,有一些什麼樣的建議和經驗分享?
黃釗吉:作為一個再普通不過的SQL Server從業人員,不敢說有什麼建議,但是多年以來確實有不少想法,這裡分享幾個我認為有必要說的:
1. 博學多才謙虛謹慎,不學無術目中無人:虛心像所有人學習,別人總有比你強的地方。
2. 永遠記住具體問題具體分析:太多人問我各種最佳化建議,比如一個表多少個索引,一個查詢建議關聯多少個表。美其名曰是建議,實際上當你給出一個數字的時候,他們就把這個數字作為唯一的標準。哪有什麼最佳實踐?只不過是在常規情況下不引起明顯異常的做法而已。如果不去理解原理,一旦場景不適用,一下子就會蒙掉。不知所措。
3. 任何時候一定要冷靜:我把冷靜當作DBA的第一守則,DBA工作性質太危險了,不冷靜的話往往會造成毀滅性的破壞。另外一個類似的就是要清醒,除非必要,我不建議DBA或者自己在非常困、生病沒精神的情況下對資料庫操作,忘了加WHERE條件的UPDATE和DELETE的後果大家應該懂。
4. 一定要理解原理:這些年處理問題的過程中,出現很多常規方法不奏效的情況,怎麼辦?先想想原理!為什麼一個陳述句很卡?如果執行計劃不明顯,那不妨換個思路,想想SQL執行原理。還有在高可用情況下(比如SQL Server 的AlwaysOn),為什麼同步延時?想想原理,AlwaysOn的實現原理就是主庫的日誌寫到本地伺服器然後傳輸到讀庫的伺服器並還原,簡單來說就是三步,那麼就可以再細分是哪一步出現問題,然後再深入研究。不要一碰到問題就去網上搜,搜不到就慌。
5. 逼自己提升英語吧,最起碼是讀,為了跟上發展,幾年前就逼自己開著翻譯軟體看原版書,不可否認過程很痛苦,但是結果還算滿意。總有一天能體會到的。
《SQL Server On Linux運維實戰》
作者:黃釗吉, 熊章立
掃描二維碼,一鍵購買
SQL Server鳳凰涅槃,浴火重生;
跨平臺,Linux和Windows平臺均適用;
從入門到精通,突出運維監控、效能調優;
融入作者10年工作經歷,系統、實用、經常翻閱的工具書。
透過閱讀本書,你將會瞭解到如何使用基於Linux的SQL Server,如何更好地管理在Linux上的SQL Server及如何進行常規的SQL Server效能最佳化。
執行在Linux上的新版SQL Server,將其新特性及強大功能與Linux原生系統的優點進行結合,不僅在運維及效能上帶來巨大的便利和提升,同時對大資料和資料挖掘領域的逐步相容[如內建機器學習、圖形處理、相容HDFS(hadoop分散式檔案系統)、Containers(容器)等特性],使得企業不需要從頭開始搭建或者把現有環境遷移到“適合”大資料環境的其他關係型資料庫中。