今天聽fenng介紹來這裡啟用這個許久不曾使用的帳號。
無他,幾年來學習oracle有許多感悟亦或者許多所得
也準備整理記錄下來,希望於他人有所協助
大約幾個星期前有個網友在灌水的地方問:
求:oracle與sql的區別
一校友回答:
oracle只是一個關聯式資料庫產品,一個dbms而已。
sql是所有關聯式資料庫的操作語言。
學資料庫,sql最重要。
每個dbms都會自己多多少少的擴充標準sql,提供更多功能和服務,但是擴充sql可移植性極差,不過這個罈子裡都是做oracle的,所以當然不會太理會這些。
為此我自然是有不同的意見,總結了下自己對此的理解
1:我猜測對於他來說是問的 oracle 與 mssql 的區別
2:sql,對於初步使用資料庫的開發人員來說是最重要,若要進一步tuning sql 則是理解sql的執行計畫、大致演算法和資料庫最佳化器的原理最重要,當然這裡除了 最佳化器外 還沒有脫離sql的範疇
3:要做到進階sql tuning,比如對於oracle資料庫來說,必須深刻理解資料庫的體繫結構 和 很多概念原理以及一些管理方面的知識,明白資料庫層的一些東西嚴重影響了sql的執行計畫
4:若要說學好資料庫,真正地重要的是,真正地理解體繫結構和資料庫概念,明白資料庫為什麼要這麼設計,然後理解備份恢複、tuning方面的原理,再結合大量實踐,驗證原理,提升理論,從理論方面反過來指導實踐,相輔相成,缺一不可!
5:再進一層,進入到資料庫體繫結構和基本概念的實現層,進入到internal階段,明白了資料庫的重要功能實現演算法 和 處理機制,這個時候管理資料庫和最佳化資料庫對你來說基本只是如吃飯穿衣一樣自然
基本,這是從我對oracle的理解的角度來闡述的,如果是mssql,可能通常你將止步於tuning sql 部分。你必須明白各種資料庫的特性以最好地利用他們,除非,若你真正地要做一個通用的適合在任何資料庫上跑的產品,也依然要明白各種資料庫的特性才好,你將能更好地設計通用代碼 和 明白通用的代碼將損失太多的資料庫功能
聯想到更早一些的時候,大約是2年多前,偶曾就學習oracle作過一些層次上的認識,在此也搜刮出來,以我今日之感悟來參考一下
-1:不知道從何入手去尋找解決問題的方法
0:尋找不出問題的解決方案
1:針對問題尋找出一種不會出錯的方法
2:哪些步驟或操作不能做或者慎做
3:為什麼要這麼做
4:為什麼不能那樣做,那樣做造成哪些影響
5:什麼情況下應該怎麼做
6:oracle為什麼要這樣設計?
7:oracle這麼設計有什麼缺陷?應該怎樣設計?
大部分人大部分時間尋求的就是在層次1上
新手為什麼老出現很多莫名其妙的問題?
就是因為不知道1
為什麼老手有時無法解答新手的問題
因為在1這個過程中,出現的可能太多了!!!
經驗的積累就在於1和2上
3和4達到了,就算很熟悉了
5達到了,精通oracle
6達到了,恭喜你!
呵呵
問題是,偶覺得對於偶來說
對於所有的問題
它們分佈於-1-----------6的8個層次之間
只是看比例多大了