我們試圖從Oracle數據庫中提取數據,但似乎性能非常低。我們有一個大約10M行的表格,我們有一個索引,我們通過它來拉動1.3k行{select * from tab where indexed_field ='value'}(以簡化的形式)。Oracle數據庫性能問題
SQuirreL報告以「執行:0.182s,建築物輸出:28.921s」的查詢。返回的數據佔用大約340kB(例如,複製/粘貼到文本文件時)。
有時建築輸出階段花費更長的時間(> 5分鐘),特別是在第一次運行查詢時。重複它似乎運行得更快 - 例如上面的29s值。這可能只是數據庫瞬時超載的結果,可能是由於緩衝重複數據?
第50行(13kB)是一個合理的數字還是這個意外的大? (這不可能是網絡問題。)
dbms是否有可能無法利用數據可以物理分組的事實(通過使物理順序與索引順序相同)並且正在執行一個單獨的磁盤讀取每行,如果是的話如何可以說服更有效率?
數據沒有太多奇怪 - 每行22列,大多數定義爲varchar2(250),儘管通常包含幾十個字符。我不確定運行Oracle的鐵器有多大,但它生活在一個數據中心,因此可能不會太小。
任何想法感激地收到。
你試過設置你的抓取大小,比如500?我認爲對於SQuirreL來說,它就像是文件 - >新建會話屬性 - >常規。 而在另一個疑難解答說明中,如果不選擇任何列,查詢速度會是什麼樣子?例如'select 1 from tab where indexed_field ='value'' – kfinity
性能調優是關於細節 - 數據量和偏差,分佈,索引,統計數據等。這個問題太難以回答。 – APC