1. 程式人生 > >落落的專欄 專注SQL調優 效能調優

落落的專欄 專注SQL調優 效能調優

大家好,我是落落 QQ692162374,其實我選擇Oracle是一件很神奇的事情,但是現在回想起來又覺得是命中註定。我2006年就讀於西南大學軟體工程專業,我之所以選擇軟體工程是因受了電影黑客帝國的影響,依稀還記得某個工程師對著一個黑螢幕,敲擊一串程式碼,然後控制了某個機器,當時覺得好酷。

大一,學校開設VB.NET,全英文授課,還好哥英文很好,當時高中全年級前5名,對於全英文上課自然是無壓力,大一上半期結束的時候,我還是會用VB.NET簡單的編寫一些小程式,比如說複雜功能的計算器之類的。大一下,學校開設了C專業課,因為有了VB.NET的底子,學習C也是相當輕鬆的,而且當時並沒有涉及到一些複雜演算法,這樣大一我就稀裡糊塗的過去了,大一下的暑假,我還勾引了一個安徽妹子,用現在網路流行語,可以說天然呆,自然萌,卡哇伊,她是外國語學院的,哥是計算機學院,簡稱妓院。至於怎麼勾引妹子就不說了,有興趣私聊我啊。

到了大二,學校開設了C++這門課,他奶奶的,C++是面向物件的,VB.NETC是面向過程的程式語言,因為一時思想沒轉換那麼快,加上女朋友的關係,沒怎麼把心思放在學習上,所以C++這門課學得非常差,學了2個月的C++,我就只會寫一個類,並且就只會 Hello World其他的什麼繼承,封裝,多型,亂七八糟的完全是搞不懂,然後我發現,其實我不喜歡寫程式碼。大二上期要結束的時候,系主任上了一門課,課程名字我忘了,系主任在講課中偶然的提到了 ORACLE這個關鍵字,我當時就在想,ORACLE不是先知的意思嗎 因為黑客帝國裡面有個ORACLE(先知),所以我對ORACLE這個單詞很有印象,然後系主任就說 ORACLE

是資料庫,當時我們還沒開設資料庫這門課程,所以對它還不是很瞭解,下課之後我就百度了一下ORACLE結果他媽的,冒出一個廣告,考OCM,考過之後年薪30W+,並且也知道了一個職位---DBA,網上都說DBA是越老越吃香,越老工資越高,程式設計師是吃青春飯,而且程式設計師最苦逼的是要寫程式碼。當年才07年,30W確實是非常吸引人,於是就全方面的搜尋ORACLE,關注ORACLE,加QQ群,上ORACLE論壇,大二上快要結束的時候,我去請教了系主任,問關於ORACLE的事情,系主任回答我,你去考ORACLE認證,考OCP。 請注意,現在別去考什麼OCM了,都爛大街了。你想浪費錢隨便你。考個OCP還可以的。

大二上期結束的時候,女朋友在學校留校兩週,學習選修課,我也自然是留了下來,這期間我每天到圖書館閱讀ORACLE書籍,很鬱悶,我看了1ORACLE書,媽的上面講什麼啊,感覺是天書,比C++感覺都難。後來選了一本ORACLE10g寶典,這本書在以windows為基礎講解ORACLE,於是跟著書做實驗,安裝ORACLE,用SQLPLUS查詢 SCOTT.EMP。 這期間因為沒有其他課程干擾,還有書中內容比較簡單,就很快上手了,回到家之後,依然閱讀這本書,整個寒假,我把這本書看完了,當然了,當時只理解了其中20--30%內容。

到了大二下,女朋友與我分手了,讓我很鬱悶的是她居然被人挖牆腳了,艹,現在想起來老子就鬱悶,哥還是處男呢,真是鬱悶當時為啥沒把她騙到學校的桂園賓館。失戀讓哥意志消沉了一個星期,大二下我們又開設了JAVAC#,資料結構與演算法,以及一大堆的專業課。JAVAC#這兩本課非常坑爹,我根本就不喜歡,學校開了就得上,資料結構與演算法更坑爹,太他媽難了。這個時候,我發現班上有個寢室,有個人自學JAVAEE,並且都自己寫了個小系統了,有個人一直研究C與演算法,自己編了個小病毒,另外一個在學C++,他媽的,這個寢室的人怎麼這麼厲害,都能寫小病毒了,還能寫小系統了,事實上也證明,他們確實厲害,大四他們有2個人去阿里巴巴了,有個人去金山了,可能是他們寢室氣氛好吧,一個人學往往能帶動一堆人學。我們寢室就不一樣了,一個人天天下毛片,另外一個人天天玩遊戲,還有個人更奇葩,喜歡看小說,神馬極品家丁啊,很純很曖昧啊,艹,而且每天晚上自己偷偷在那裡淫笑,我沒什麼不良嗜好,雖然我也喜歡看毛片,但是就是不知道哪裡下載,從來不玩遊戲,我覺得玩遊戲頭痛,我只喜歡看電影。大學的時候,我可以這樣說,所有的經典電影我全看過,無論鬼片,禁片,庸俗片,科幻片,動作片啥都看過,基本上唯一愛好就是看電影,學校的BT資源太豐富了,想看什麼電影求各種,立馬有人發。

因為失戀的關係,加上我跟不上JAVA/C#,加上我確實不喜歡程式設計,加上那個OCM廣告,以及我在大二的寒假我有了點ORACLE基礎,我毅然決定選擇ORACLE這條道路。這個期間,老師上課講JAVA,我就學ORACLE,老師講C#我也學ORACLE,當然了,資料結構與演算法還是必須聽的,其他無價值的課程我全都沒學,只學ORACLE了。這樣一直持續到大三下。在089月份,考了一個OCA,沒看題庫,直接過的OCA。本來想考OCP的,但是當時覺得自己是學生,就沒考了,當然了也覺得OCP題目太簡單了,有個證書頂毛用。大二到大三的一年內,我幾乎閱讀了市面上能買到的所有ORACLE書籍,圖書館能看到的所有ORACLE書籍,知識面廣度已經夠了,只是欠缺深度,但是對於一個大學生來說,我需要的是廣度,而不是深度。

大三下,上海HP重慶分公司來學校做校園招聘,當時班裡成績排名高的,全沒面上,恰好我寢室的面試上了2個,另外還有一部分女生。面試用了5分鐘做了個簡短的英文對話,然後談了一下ORACLE的體系結構,看了一下我的OCA證書,從他那微笑的眼神中,我就知道,我通過了面試。恰好班裡的有些同學,拿獎學金的,成績非常突出的反而沒面試上,後來才知道,企業要的是有獨立思維的人,有能力有魄力的人,成績好的人恰好他們不願意招,因為這種人沒創造性思維,屬於按部就班的,當然了,企業也需要進去之後能真正幹活的人,

因為我已經有相當好的ORACLE基礎,而企業也缺乏這方面的人才,所以正好就去了。

大四的時候,進入HP實習了1年,最開始在微軟產品與ORACLE產品部門,因為是實習生,無法進入真正的專案,我只能作為一個旁觀者,在這期間我閱讀了大量的ORACLE官方文件,之前學習看的是市面上的書籍,在這之後因為HP是外企的原因,他們提倡看英文文件,全英文環境辦公,所以我也開始看ORACLE官方文件,這個期間,我對ORACLE非常多的知識又得以進一步深入,我的技術成長期就是在這段時間內。要想成為ORACLE大牛,你必須閱讀ORACLE官方文件!!!而且要徹底的理解。

  大四即將畢業的時候,在HP內部我轉到了BI/DW部門,這個部門專門做資料探勘與資料倉庫,BI用了OracleOBIEE/SAPBO報表,還有一些其他報表技術,這些SQL都是自動生成的,而且很多都是幾百行,經常一個報表跑幾十分鐘甚至幾個小時不出結果。在資料倉庫方面,有大量的ETL跑得非常慢,經常幾個小時甚至1天都跑不完。中國HP內部當時沒人解決這些問題,很多人都是工作8年以上,有些還是OCM,都無法解決這些問題。這些問題最終交給了老外,老外也無法徹底解決,而且老外解決一個SQL起碼耗時1周。我曾經試圖請教當時HP內部的一個DBA,問他如何優化這個SQL,他直接給我說太難了,做不了,不久之後,他跳槽去IBM了。我當時真的很鄙視他。

年輕人總是有著一顆爭強好鬥的心,因為當時有大量SQL跑得慢,並且全都是資料倉庫的超大型SQL,都幾百行的,而且很多是工具自動生成的,所以我有了環境學習SQL優化,之前我也是什麼ORACLE技術都學,RMAN,BBED,DUMP,DSI....各種INTERNAL文件,但是學了之後發現沒多大作用,遇到真正的CASE還是無法處理,所以我毅然決定,我專門研究SQL優化,研究ORACLE效能優化,其他技術我暫時放棄。於是我每天從上班到晚上1點鐘,就只研究SQL優化,因為HP可以在家辦公,我晚上研究晚了,第二天可以在家上班,這樣我起床之後,沒洗漱又開始研究SQL優化。我的SQL優化技術,終於從最開始完全找不到如何下手,到我能3天優化一個SQL,到之後1天優化一個,然後幾個小時優化一個,到最終幾乎能達到看一眼就能知道SQL效能瓶頸出現在哪裡。我的SQL優化技術在HP慢慢就出名了,老外也慢慢知道中國有這麼一個DBA,比他們本國的DBA優化SQL速度快N倍,這樣我在HP畢業半年就破例漲了一次工資,翻了一番,年底又漲了2K,並且獲得了60股的股票(當時40美元一股)。畢業第二年(也就是在HP第三年),我又想漲工資,老闆給我說,我漲了2次了,而且對於剛畢業的小夥子來說,這個價格在重慶很不錯了,他說很多工作幾年的都沒我工資高,那意思就很明顯了,不給我漲唄。搞IT的人要明白一個事情,工資是跳槽跳出來滴。正好北京用友某個技術負責人尋找效能優化工程師,他和我接觸了半年,一直邀請我去北京發展,在這之後,我決定離開我的家鄉重慶,去北京用友,當時薪水也不高,年薪20W左右,對於一個才畢業1年多的人來說,20W已經相當高了,並且那邊有安排住宿,有餐補,有交通補貼,通宵補貼,基本上一個月不怎麼花錢。工作非常輕鬆,每天就優化SQL,然後研究一下中介軟體,以及JAVA虛擬機器記憶體洩露,以及研究一些業務。SQL優化不用說了,基本上瞄一眼搞定,中介軟體優化,JAVA虛擬機器因為之前沒怎麼接觸過,所以時間放在了這邊,同時也學習了業務。但是因為北京空氣原因,環境太惡劣了,加上自己一個人在北京,覺得很孤獨,就在重慶找了一個DBA工作,待遇比北京低點,但是也沒低太多,就回重慶發展了。重慶這邊的工作基本上也是做優化相關,在這家公司我進一步的接觸到了SYBASE IQ,GREENPLUM,進一步的學習了EXADATA(2010年就開始接觸了,HP最開始用第一代EXADATA),以及國產的GBASE,甚至HADOOP,還接觸了各種儲存,這個期間對我知識面又是更進一步的提升。在那個公司呆了大概1年之後我來到了現在的公司,主要負責資料庫設計,資料庫設計優化,SQL優化,系統架構優化,等等。我之所以離開之前的公司,是因為要寫一些很無聊的技術架構文件,媽的哥最討厭寫文件。

2010年以來,本人一直專注於SQL優化,SQL改寫,ORACLE系統優化,表設計優化,累計優化過超過10000個以上SQL,是的,你沒看錯,是一萬個以上SQL。幫人優化SQL收過3000元一個,也收過50元一個,當然了更多的是免費的。同時也優化過接近60套系統,當然了系統的優化是一個整體專案,並不是我一個人完成的,但是我扮演了絕對不可替代的作用。曾經改造過某個系統的表設計,使得磁碟IO經常100%降低為60-70%CPU60降低到30--40%,該系統資料量每天產生接近5TB

大家如果有什麼SQL需要優化的,有系統需要優化的,請直接發QQ郵件完全免費,如果超級複雜,比如幾百行的,我可以遠端幫助,同樣的免費。如果有SQL需要改寫的,我會親自指導你手把手改寫。

寫到這裡,我想告訴大家,學習技術一定要有恆心,要抱著必勝的心態去征服它,當然了,掌握好的學習方法同樣重要,我之前是閱讀了大量ORACLE書籍(絕大部分是英文),以及官方文件,有了知識廣度,再根據工作需要,特立獨行研究某一個領域,把某一項做精通之後,再研究其他技術,比如再去研究特殊恢復,或者研究NOSQL,或者研究架構等等。如果你一直什麼都學,什麼都看,最終的結果是,你什麼都懂,但是不精通,那麼你就是一個打雜的,你覺得自己和牛吧,與別人比差太遠了,你覺得自己菜吧,但是ORACLE的玩意兒啥都玩過,就是不精通。我相信很多人都有這樣的感覺,So,找個方向深入研究吧!!!

對於ORACLE初學者,建議先增加ORACLE知識廣度,再根據自己喜好,選個方向深入研究。祝各位生活愉快,工作愉快,事業有成。

   順便插播一個廣告,想跟我學優化的,請點選這裡

相關推薦

落落專欄 專注SQL調 效能調

大家好,我是落落 QQ692162374,其實我選擇Oracle是一件很神奇的事情,但是現在回想起來又覺得是命中註定。我2006年就讀於西南大學軟體工程專業,我之所以選擇軟體工程是因受了電影黑客帝

Spark調--效能調

前天跟大家聊spark優化,說了個大體上的方案,今天就效能調優跟大家聊聊,首先分如下4塊 一>  分配更多資源 分配哪些資源? Executor的數量,每個executor所能分配的cpu數量,記憶體量,driver分配的記憶體量 在哪裡分配呢? 在開發中,提交s

Mysql SQL查詢效能調(一)

MYSQL效能調優 varchar型別的欄位在編寫SQL時,一定要加單引號,否則如果該欄位是索引的話,則不起作用,在大數量查詢時,效能很差 PS:大坑 建立必要的索引提高SQL查詢效能 ​ 主鍵(聚集)索引、非聚集索引(普通索引,唯一索引,全

Spark SQL效能調(Spark2.3.2)

對於某些工作負載,可以通過在記憶體中快取資料或開啟一些實驗選項來提高效能。 1.在記憶體中快取資料 Spark SQL可以通過呼叫spark.catalog.cacheTable("tableName")或dataFrame.cache()使用記憶體中的列式格式來快取表。

Spark SQL 筆記(17)—— 專案效能調

1 叢集優化 儲存格式的選擇 ,https://www.infoq.cn/article/bigdata-store-choose 壓縮格式的選擇,https://www.ibm.com/develo

SQL Server效能調系列

這是關於SQL Server調優系列文章,以下內容基本涵蓋我們日常中所寫的查詢運算的分解以及調優內容項,皆為原創........ 第一個基礎模組注重基礎內容的掌握,共分7篇文章完成,內容涵蓋一系列基礎運算演算法,詳細分析瞭如何檢視執行計劃、掌握執行計劃優化點,並一一列舉了日常我們平常所寫的T-SQL語句所會

sql server 效能調SQL語句阻塞查詢

原文: sql server 效能調優之 SQL語句阻塞查詢  在生產環境下,有時公司客服反映網頁半天打不到,除了在瀏覽器按F12的Network響應來排查,確定web伺服器無故障後。就需要檢查資料庫是否有出現阻塞 當時資料庫的生產環境中主表資料量超過2000w,子表資料量超過1億,且更新和新增

sql server 效能調之 邏輯記憶體消耗最大資源分析1 (自sqlserver服務啟動以後)

原文: sql server 效能調優之 邏輯記憶體消耗最大資源分析1 (自sqlserver服務啟動以後) 一.概述   IO 記憶體是sql server最重要的資源,資料從磁碟載入到記憶體,再從記憶體中快取,輸出到應用端,在sql server 記憶體初探中有介紹。在明白了sqlserver記憶體原

sql server 效能調之 CPU消耗最大資源分析1 (自sqlserver服務啟動以後)

原文: sql server 效能調優之 CPU消耗最大資源分析1 (自sqlserver服務啟動以後) 一. 概述   上次在介紹效能調優中講到了I/O的開銷檢視及維護,這次介紹CPU的開銷及維護, 在調優方面是可以從多個維度去發現問題如I/O,CPU,  記憶體,鎖等,不管從哪個維度去解決,

sql server 效能調之 死鎖排查

原文: sql server 效能調優之 死鎖排查 一.概述          記得以前客戶在使用軟體時,有偶發出現死鎖問題,因為發生的時間不確定,不好做問題的重現,當時解決問題有點棘手了。現總結下檢視死鎖的常用二種方式。 1.1 第一種是圖形化監聽:

sql server 效能調之 資源等待PAGELATCH

原文: sql server 效能調優之 資源等待PAGELATCH 一.概述   在前幾章介紹過 sql server 效能調優資源等待之PAGEIOLATCH,PAGEIOLATCH是出現在sql server要和磁碟作互動的時候,所以加個IO兩個字。這次來介紹PAGELATCH。PAGELATCH型

sql server 效能調之 資源等待之網路I/O

原文: sql server 效能調優之 資源等待之網路I/O 一.概述    與網路I/O相關的等待的主要是ASYNC_NETWORK_IO,是指當sql server返回資料結果集給客戶端的時候,會先將結果集填充到輸出快取裡(ouput cache),同時網路層會開始將輸出快取裡的資料打包,

spark sql 效能調

1、在記憶體中快取資料 效能調優主要是將資料放入記憶體中操作。通過spark.cacheTable("tableName")或者dataFrame.cache()。使用spark.uncacheTable("tableName")來從記憶體中去除table。 Demo案例: (*)從Oracle資料庫中

SQL 效能調日常積累【轉】

我們要做到不但會寫SQL,還要做到寫出效能優良的SQL,以下為筆者學習、摘錄、並彙總部分資料與大家分享! 回到頂部 (1)選擇最有效率的表名順序(只在基於規則的優化器中有效) ORACLE 的解析器按照從右到左的順序處理FROM子句中的表名,FROM子句中寫在最後的表(基礎表 driving tab

SQL 效能調日常積累

我們要做到不但會寫SQL,還要做到寫出效能優良的SQL,以下為筆者學習、摘錄、並彙總部分資料與大家分享! (1)選擇最有效率的表名順序(只在基於規則的優化器中有效) ORACLE 的解析器按照從右到左的順序處理FROM子句中的表名,FROM子句中寫在最後的表(基礎表 driving table)將被最先處

oracle效能調之--Oracle sql語句跟蹤

SQL> showparameter sql NAME                                 TYPE        VALUE ----------------------------------------------- -------

大資料Spark “蘑菇雲”行動補充內容第70課: Spark SQL程式碼實戰和效能調 4個spark sql調技巧有用!!!!

大資料Spark “蘑菇雲”行動補充內容第70課: Spark SQL程式碼實戰和效能調優 dataframe: Row是沒有型別的,因為Row中的所有成員都被看著Object型別!!!untype

mysql sql語句效能調

在做伺服器開發時,有時候對併發量有一定的要求,有時候影響速度的是某個sql語句,比如某個儲存過程。現在假設伺服器程式碼執行過程中,某個sql執行比較緩慢,那如何進行優化呢? 假如現在伺服器程式碼執行如下sql儲存過程特別緩慢: call sp_wplogin_registe

效能調分析之:Oracle SQL執行計劃報告生成器

Oracle SQL執行計劃分析器功能的建立3步曲: 1 首先,編譯XYG_ALD_SESS_PKG的Package頭。 (XYG_ALD_SESS_PKG.sql) 2 接著要建立好下面的4個檢視物件。因為XYG_ALD_SESS_PKG包體會用到。(V

SQL Server 效能調2 之索引(Index)的建立

前言 索引是關係資料庫中最重要的物件之一,他能顯著減少磁碟I/O及邏輯讀取的消耗,並以此來提升 SELECT 語句的查詢效能。但它是一把雙刃劍,使用不當反而會影響效能:他需要額外的空間來存放這些索引資訊,並且當資料更新時需要一些額外開銷來保持索引的同步。 形象的來說索引就像