ORACLE神話的破滅
2024-08-29 13:46:15
供稿:網友
“神話”這個詞指的是Oracle的那些從未是真的或者曾經是真的,但是現在不是真的的行為的基本情況。大多數的Oracle神話的起源都是技更換術產生的結果。 大多數的人都認為今天的許多Oracle神話在他們那個年代都是真實的(例如,“磁盤負載平衡對于性能非常重要”),但是當硬件和Oracle軟件都改進了之后卻發現它們都變成了神話。我們不要忘記Oracle的技術已經超過了15年了,1989年的技術也與今天的技術大相徑庭。幸運的是,大多數Oracle的專業人員都充分理解了Oracle神話的不斷改變,曾經正確的建議今天是如何變得不再正確,并且成為了具有神話色彩的謊言。古老的Oracle神話有許多古老的Oracle技術在過去都是非常有用的,但是當技術改變的時候,成為了神話。問題的混亂是上千家運行在古老的硬件并且不支持發布的Oracle 軟件的Oracle店鋪帶來的。讓我們看一些比較古老的神話。神話:對象在單區域內執行得更好Oracle大學在20世紀90年代的早期教授了comPRess=y 輸出選項會到達改善結果表的性能。今天,本地治理的表空間(LMT)讓這個建議不再有效。神話:數據緩沖命中率應該保持在超過90%的概率這個神話也是Oracle在90年代早期宣傳的,當時幾乎全部的Oracle數據庫的I/O成為了瓶頸,并且SGA的尺寸也被32位的服務器技術所限制了?;贠racle的產品,例如SAP,也都在他們的手冊中指出了數據緩沖命中率應該超過90%。Oracle的作者Robert Freeman 提示到:很多的情況都證實了要證實任何事情都是很簡單的。假設有一個基本的證據,我可以證實緩沖區命中率毫無意義,或者我可以證實它是世界上最重要的事情了。我知道有一些腳本可以運行在你的數據庫上,從而產生任何你想要的數據緩沖命中率。這看上去是不是像一個神話?Oracle看起來并不這么認為,基于比率的建議形成了Oracle 10g自動內存治理工具的基礎,還有v$db_cache_advice 的建議。現在也還是存在一些Oracle神話——讓我們看一下。現在的Oracle神話現代的Oracle神話在很大程度上都是由于Oracle技術的更換,還有一些Oracle專業人員無法調整以適應改變導致的。神話:索引和表不需要分開這個神話的產生根據Oracle在90年代早期提出的建議,當時有關磁盤的爭論是一個主要的話題。直到不久之前,數據庫中索引和表的分離才被認為是好的辦法,并且作為改善性能的方法被接受。當然,還有一部分原因是因為他們在同一個磁盤上,假如他們不分離的話,會互相沖突。將索引移動到一塊獨立磁盤上的表空間上,與表相分離,而不僅僅是分隔到獨立的表空間上,這通常都會帶來性能上的提高。主要的論據,由對單用戶系統的10046個追蹤所支持,就是在一個查詢中訪問表和索引的操作在本質上不是異步的,而是線性的過程。然而,然而,即使是在單用戶的系統中,也沒有考慮到被請求的頭移動和與讀取索引以及表有關的磁盤延遲。在多用戶的環境中,也沒有考慮到以上所有的因素,以及多用戶訪問協同定位的表和索引產生的影響?,F在,當合理地放置了RAID之后,許多有關協同定位的問題的爭論都沒有了或者轉移了。然而,將表和索引分割到幾個表空間中仍然使得維護更加簡單了。分隔到離散的表空間中使得追蹤I/O速率和特定對象或者對象類型成為可能,并且答應用戶使用多塊尺寸。神話:頻繁更新的表和索引幾乎不需要重新組織這個神話是由于Oracle的專家發表的聲明引起的,他宣稱Oracle的索引總是保持平衡的,重新構建并不會給索引帶來多大的好處。下面我們看一下這個聲明,在某種程度上可以幫助我們理解碎片是如何生成的:除非你想陷入無休止的組織、再組織、組織、再組織……的循環中去,你最好找一下原因。在完美的世界中,你只要使用絕對正確的參數構建一次即可,永遠都不用再重新構建,我恐怕這種情況永遠都不會在現實世界中出現。就像期望只清掃你的房間一次,而這個房間里面裝滿了吵吵鬧鬧的10幾歲的孩子——這是毫無意義的。今天,能夠理解表和索引具有很高頻率的并發插入、更新和刪除動作是一件好事情,它可以很快地獲得次佳的結構并需要重新組織以便位多塊掃描操作減少I/O操作(使用Oracle的dbms_redefinition包,更改索引移動/重新構建,更改索引接合,或者甚至是根據可用性需求更改表移動)。索引平衡的概念是分兩個叉的,B樹總是高度平衡的,它也可以變得稀疏或者向右旋轉的,所以就變得更寬或者負載不平衡。神話:多個塊尺寸不會改善性能這個神話是不朽的,因為多個塊尺寸最初是為了支持可傳輸的表空間而設計的,同時一些人還不能看到多個塊尺寸帶來的另一方面很重要的好處。不同的塊尺寸帶來的最大的好處就是更加有效地利用了受到限制的內存區域(db_cache_size, db_32k_cache_size等)以及能夠減少多塊掃描讀取的邏輯I/O次數的對象智能隔離。今天,Metalink 提示說多個塊尺寸參數是Oracle性能調整中最重要的部分了,并且還說Robin Schumacher 等專家們都證實了Oracle的索引可以在較大的塊尺寸中構建更加優化的B樹結構。還有,重新組織高DML 索引,或者對隨機單行讀取(唯一索引訪問)小行數據的時候使用小的塊尺寸,可以減少db_cache_size 的尺寸,并且會因為更多的塊適合了緩沖區的大小而減少PIO。例如,一些實驗試圖用小的、人造的單用戶實驗來證實這個斷言,并且提出多個塊尺寸并不能給現實世界的數據庫帶來任何好處。然而,現實生活中的店鋪卻報告了一個有關多個塊尺寸和索引用的32k塊尺寸的截然不同的結果:“我最近比較喜歡關注的問題就是有關32KB索引的問題:我們的客戶端(200GB+)從這個簡單的變化中看到I/O縮減了20%……”,EMEA的技術服務經理Steve Taylor 說。所以,在這里我們看到了技術的改變是如何將一項15年前本來有效的方式轉換為一個“神話”的,并最終得到了一個有關單用戶測試腳本的錯誤結論,同樣,由于技術的改變它們還會繼續創建新的現代神話。Oracle神話正在形成當Oracle的專業人員觀察了不同的數據庫行為之后得到了不一致的結論之后,神話還在繼續。我們還可以看到Oracle公司大力推薦了一些提出觀點的先進人物,但是他們卻針對Oracle的性能公開了誤導他人的言論,從而制造了新的神話:“一致是不可能的,也不會被任何的優化人員的設置所影響?!彼麄冇绊懥藘灮藛T處理事物的方式;但是他們卻沒有影響事物真正進行的方式。當然,改變optimizer_mode, optimizer_index_cost_adj和 optimizer_index_caching 的值可以改變優化人員對于是否應該做一個完全的掃描或者索引訪問執行計劃的判定,這也會對所有查詢的一致性數量產生直接的影響。目前Oracle的專業人員分成兩個截然不同的群體,每個群體都會Oracle的性能調整有著完全不同的看法,每個群體都認為對方是造成持續不斷的Oracle神話的罪魁禍首。“經驗法則”神話——許多Oracle專業人員都相信“經驗法則”(ROT)是非常危險的,并且都了解假如經驗法則可以被證實是錯誤的,即使是在單個的人為的測試中,經驗法則在科學上來說都不再是正確的,因此也就是毫無用處了?!澳_本小子”神話——這個神話說的是運行單用戶的SQL*Plus 腳本來“證實”的Oracle的運行方式,在多用戶的數據庫中幾乎總是錯誤的。結論這是我的由兩部分組成的文章中的第一部分,陳述了理解Oracle神話的基礎,并展示了我們如何知曉Oracle神話隨著時間改變。在我的下一個部分,我們將會具體討論Oracle技術的相差巨大的多種方式,并看看它們是如何制造混亂的?!?STRONG>背景資料:Oracle公司的發展史1977 年 拉里·艾利森 (Larry Ellison)、Bob Miner 和 Ed Oates 共同創建了軟件開發實驗室 (Software Development Laboratories)。1970 年 IBM 的一名研究人員寫了一篇名為《大型共享數據庫的關系數據模型》的研究論文,他們三人受到這篇文章的啟發,決定構建一種新型數據庫,稱為關系數據庫系統 (relational database system) 。他們所接手的第一個項目是為美國政府做的,他們將之命名為 Oracle。他們認為 Oracle 意思是“聰明之源”,用來作為這個項目的名稱十分恰當,也會得到 CIA 的認可。1978 年 軟件開發實驗室 從原來的圣克拉克遷至位于硅谷心臟的 Menlo Park 的 Sand Hill 大街上。為了讓人們了解公司的主要業務范圍,他們將軟件開發實驗室更名為關系軟件公司 (Relationa Software Inc. (RSI))。1979 年 RSI 開發出第一款商用 SQL 數據庫 — V2(V1 根本就未推出過)。1982 年 RSI 更名為 Oracle 系統公司 (Oracle System Corporation),Oracle 公司。用產品名稱為公司命名,幫助公司贏得了業界的認同。1983 年 Oracle 決定開發便攜式 RDBMS。Oracle 開發出 V3,這是第一款在 PC 機、小型機及大型機上運行的便攜式數據庫。1984 年 年收入達到 1,270 萬美元Oracle 遷至貝爾蒙特市戴維斯 20 號一棟 84,000 平方英尺的辦公樓內。推出 Portable Toolset。這一年設立了:Oracle 加拿大公司Oracle 荷蘭公司Oracle 英國有限公司1985 年 年收入達到 2,300 萬美元這一年設立了:Oracle 奧地利公司Oracle 德國公司Oracle 日本公司Oracle 瑞典公司Oracle 瑞士公司1986 年 年收入達到 5,500 萬美元1986 年 3 月 12 日推出 ipO(首次公開募股)。當日公司股票以 15 美元開盤,20.75 美元收盤。推出第一個客戶端/服務器數據庫。這一年設立了:Oracle 澳大利亞公司Oracle 芬蘭公司Oracle 法國公司Oracle 系統香港有限公司Oracle 挪威公司Oracle 西班牙公司1987 年 年收入達到 1.31 億美元Oracle 正式成為世界上最大的 DBMS 軟件公司。Oracle 組建了由七個員工和兩種產品組成的應用產品部,這標志著它開始進入企業應用產品市場。Oracle 開始開展咨詢與支持業務,旨在幫助客戶更好地使用他們的軟件?,F在,Oracle 咨詢部已成為世界上第四大咨詢部門。推出集成的 Case 和 4GL Toolset。這一年設立了:Oracle 墨西哥公司1988 年 年收入達到 2.82 億美元Oracle 成為世界上第四大軟件公司。Oracle 推出 V6 數據庫。Oracle 推出 Unix 關系財務應用產品 (Unix Relational Financial applications)。這一年設立了:Oracle 巴西公司Oracle 中國公司Oracle 塞浦路斯公司Oracle 馬來西亞公司Oracle 新西蘭公司1989 年 年收入達到 5.71 億美元Oracle 將其總部遷至紅木城海灣。現在那兒已建起了六座摩天大樓,四周有無數的建筑,營造出一種園區氣氛。Oracle 在 IBM 大型機、DEC 和 UNIX 小型機以及 OS/2 PC 機上,創下了事務處理業績的最佳記錄。推出 OLTP 支持服務。這一年設立了:Oracle 智利公司Oracle 希臘公司Oracle 韓國公司Oracle 葡萄牙公司Oracle 土耳其公司Oracle 委內瑞拉公司Oracle 臺灣公司Oracle進入中國市場Oracle 現在的產品銷售范圍覆蓋全世界 86 個國家和地區。1990 年 年收入達到 9.16 億美元這一年設立了:Oracle 比利時公司Oracle 阿根廷公司Oracle 哥倫比亞公司Oracle 哥斯達黎加公司Oracle 菲律賓公司1991 年 年收入達到 10.28 億美元任命 Jeff Henley 為首席財務官 (CFO)Oracle中國公司正式在中國注冊為“北京甲骨文軟件系統有限公司1992 年 年收入達到 11.79 億美元任命 Raymond Lane 為首席運營官 (COO)。Oracle7 數據庫發布。1993 年 年收入達到 15.03 億美元推出 Cross GUI Toolset。1994 年 年收入達到 20.01 億美元Multi-media Server Database 發布。1995 年 年收入達到 29.67 億美元拉里·艾利森發布網絡計算機的概念:網絡計算機是一種帶有本地內存的互聯網應用設備,一種不含硬盤驅動器的快速微處理器。Oracle 公司對外公布了其查詢和分析工具套件 — Discoverer/2000,它可幫助最終用戶訪問和分析自己公司的數據(如公司數據倉庫中的數據)。Discoverer/2000 將數據以一種易于理解、非常直觀的形式展現出來,全公司的任一最終用戶都可利用這些數據,而不受個人技術專長級別的限制。1996 年 年收入達到 42.23 億美元Oracle 組建了一個新的子公司 — 網絡計算機公司(Network Computer Inc.)推銷網絡計算機。發布 Oracle7.3 — Universal Server1997 年 年收入達到 56.84 億美元Oracle 公布了 Oracle Designer/2000 2.1 版本和 Oracle Developer/2000 2.1 版本,它極大地提高了數據庫應用程序開發人員的生產力。Oracle 推出其下一代網絡計算的數據庫 — Oracle8,這就大大降低了企業的計算成本,推動了一個信息獲取低成本、個性化的新時代的到來。Oracle Applications R10.7 將 Oracle 的應用產品同 Web 緊密聯系起來:有了用于 Web 的 Oracle Applications,企業內外的用戶使用熟悉的、簡單易用的 Web 瀏覽器界面不但可以進行要害性的事務處理,還可以獲取公司信息,并按照所了解的公司信息安排自己的活動。1998 年 年收入達到 71.44 億美元Oracle 推出 Oracle Applications Release 11??蛻魴C/服務器版本被徹底舍棄了。Release 11 是唯一的互聯網產品,并且對生產制造與供給鏈、財務、人力資源和客戶關系治理等系列產品作了若干新的改進。Oracle 還推出了與 Oracle Applications Release 11 配套的商務智能系統 (Business Intelligence System)。商務智能系統是一種易于使用的企業內部網應用產品,可從 Oracle Applications 中找到信息并將信息發送給業務經理和主管人員,幫助他們解決所面臨的棘手問題。1999 年 年收入達到 88.27 億美元Oracle 的 Oracle8i 交付使用:這是世界上第一個互聯網數據庫,同時也是 Oracle 的互聯網平臺商務革新的核心部分。這個新的數據庫為 Oracle 的低成本基礎架構上的互聯網應用產品帶來了巨大的規模效益。2000 年 年收入達到 101.30 億美元Oracle 電子商務套件 (E-Business Suite),這是業界第一款完整的且全面集成的電子商務應用產品套件。Oracle 使用自己的電子商務套件,僅一年時間就節省了 10 億美元,換言之,營業毛利提高了十個百分點。