本章提要
--------------------------------------
資料庫引擎如何訪問資料
定位表中資料:
1) 掃瞄全表
2) 基於榮譽訪問結構(比如 索引)進行查詢, 或基於表本身的結構(比如, 雜湊聚簇)進行查詢
--------------------------------------
9.1 照出不理想的訪問路徑
一般的, 乙個訪問路徑所使用的資源和返回的行的總數成比例的話是可以接受的, 也就是說, 返回的行少, 消耗的資源就少, 返回的行多,
消耗的資源就多, 並不是越快越好, 主要還是要看乙個價效比, 消耗資源和速度的價效比.
消耗資源包括, cpu, 記憶體, 磁碟, 網路.
邏輯讀非常接近總的資源開銷, 一般可以考慮如下"經驗法則":
~ 每個返回行少於5個邏輯讀的訪問路徑可能是不錯的.
~ 每個返回行10~15個邏輯讀的訪問路徑是可以接受的.
~ 每個返回行多於15~20個邏輯讀可能是低效的. 換句話說, 可能存在調優的餘地.
低效的原因:
~ 沒有提供合適的訪問結構(比如, 索引)
~ 提供了合適的訪問結構, 不過sql語句的語法並不允許查詢優化器使用它.
~ 表或者索引是分割槽的, 不過不可能進行修剪(pruning), 因此, 要訪問所有的分割槽.
~ 表或索引, 或者兩者, 都沒有分割槽.
~ 查詢優化器因缺少統計資訊而造成錯誤評估
9.2 具有弱選擇性的sql語句
全表掃瞄
在全表掃瞄過程中, 資料庫引擎順次讀取表在高水位下的所有資料塊, 所以, 邏輯讀的數量依賴於塊的數量而不是行數. 全表掃瞄可能
是不夠理想的, 尤其在表包含大量空的或者接近空的塊時, 很明顯, 乙個塊必須先讀才能知道它是否包含資料. 當表刪除操作比插入
操作多的時候, 最容易導致表包含許多稀疏的資料塊.
要降低高水位, 有必須對錶進行重組, 注意行遷移必須啟用, 因為重組過程中有的rowid產生
alter table t enable row movement;
alter table t shrink space;
9.3 具有槍選擇性的sql語句
要高效處理強選擇性的sql語句, 資料應該通過rowid, 索引或單錶雜湊聚簇來訪問.
使用 rowid 不用說, 單行查詢, 但是首先你要先知道rowid的值, 再用類似 select * from t where rowid = 'abaafaabaaa';
使用索引:
create9-1table
t ( id
number
, pad
varchar2(4000
),
constraint t_pk primary
key(id)
);insert
into
tselect rownum as id, dbms_random.string('
p', 500) as
padfrom
dual
connect
bylevel
<=
1000
;select
blocks, num_rows
from
user_tables
where table_name ='t
';/*result
blocks num_rows
---------- ----------
73 1000 */
select
blevel, leaf_blocks, clustering_factor
from
user_indexes
where index_name =
't_pk';
/*result
blevel leaf_blocks clustering_factor
---------- ----------- -----------------
1 2 72
*/
因為索引中並不儲存null的值,所以如果條件包含 is null, 那麼查詢優化器可能不利用索引
09 矩陣資料訪問 詳細注釋
矩陣資料訪問 第一次,但電腦顯示不出來,好像是電腦有問題 include stdafx.h include cv.h include cxcore.h include highgui.h int main int argc,char argv 這種方法訪問矩陣不是很好 cvmat mat cvini...
Django ORM效能優化,資料訪問優化
web系統可以採用自底向上的順序,從資料儲存一直到資料展現,按照這個順序一點一點查詢效能問題。工具解決問題的第一步是找到問題 執行django看到原始sql查詢確保django debug設定為true。然後,就這樣做 python 純文字檢視 複製 12 3 4 5 6 7 fromdjango....
JavaScript效能優化 資料訪問
乙個function的作用域模型,一般分為活動物件 區域性變數什麼的 全域性物件 window物件,document 訪問順序是先變數活動物件,後查詢全域性物件。function initui document可以用區域性變數儲存 var doc document var bd doc.body v...