引起數據庫性能問題的因素

引起數據庫性能問題的因素

1.軟件設計對數據庫的影響

1.1軟件架構對數據庫性能的影響

     如果一套系統的併發數非常大,常會考慮搭建一箇中間層,其目的就是用來構建一個緩衝池,在數據庫之前對大量的併發進行處理,以便於每次只有少量的用戶連接到數據庫中,其他的用戶在緩衝池的隊列中等待。

1.2軟件代碼的編寫對數據庫性能的影響

1.2.1人爲的在SQL代碼中加入Hint來約束SQL的執行計劃

 案例1:開發人員爲了要求每次對一個表做操作時,都使用索引,於是在代碼中強行加入了Hint約束SQL的執行計劃

             select /*+ index(t1 ind_t1 )*/ col1,col2 from t1 where col1>.....and col1<.....,系統上線後,開始沒有問題,後來用戶反映查詢非常慢。最後對比最近的數據發現,近期的數據在創建索引的列上的值重複率要遠遠高於以前,因此Oracle在選擇索引之後,比以前讀取了更多的索引塊和數據塊,造成了大量的I/O操作。

            數據庫裏的數據不是一成不變的,最好讓數據庫自己決定SQL執行計劃。

1.2.2不必要的外連接

1.2.3CBO下優化器模式的選擇

          對於OLAP系統,絕大多數時候系統運行的是報表作業,執行的基本上是聚合類函數,這時候,把優化器模式設置成all_rows是恰當的。

          對於一些分頁操作比較多的網站類數據庫,設置成first_rows會比較好。

1.2.4沒有綁定變量的SQL

        綁定變量的真正用途是在OLTP系統中,這個系統通常有這樣的特點:用戶併發數非常大,用戶的請求十分密集,並且這些請求的SQL大多數是可以重用的。如果一條SQL語句執行一遍後,就被緩存到數據庫的內存當中(共享池),以後的用戶請求都使用這個SQL解析後的結果,那效率必定大大提高。

 

2.數據庫的設計

2.1OLTP系統

        OLTP系統(在線事務處理系統)的用戶併發數非常多,但他們只是對數據庫做很小的操作,數據庫側重於對用戶操作的快速響應,這是對該類型數據庫最重要的性能要求。OLTP系統是一個數據庫變化非常頻繁、SQL語句提交非常頻繁的系統。對於數據庫來說,應儘可能的讓數據塊保存在內存中,對於SQL語句來說,儘可能的使用綁定變量達到SQL語句的重用,減少物理I/O和重複的SQL解析,這樣可以極大的提高數據庫的性能。

2.2OLAP系統

    內存的優化,對於OLAP來講影響很小,這種系統的瓶頸往往在於磁盤I/O上面。SQL的優化對於OLAP數據庫來說很重要。分區技術在OLAP數據庫中的重要性主要體現在數據庫管理上,比如數據加載,可以通過分區交換的方式來實現,備份可以通過備份分區表空間實現,刪除數據可以通過刪除分區來實現,值得一提的是,分區索引並不一定比全局索引在任何時候都快,有時候塔反而會更慢。

 

3.數據庫的硬件設計,主要體現在CPU,I/O和負載3個方面

3.1存儲容量

     大致估算出數據庫所存存放的數據量的大小,可以作爲存儲設備採購的一個依據,不要忘記系統備份數據所佔用的空間的考慮。

3.2數據的安全性

   要求高的用RAC+DataGuard的備份方式,常規的用RMAN+歸檔的備份方式。

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章