作者jami520 (我的生命因你而發光)
看板Database
標題[SQL ] 資料庫有查詢過後速度特別快?
時間Sat Aug 16 05:17:48 2014
資料庫名稱:SQL
內容/問題描述:
目前我有一個資料表有一億筆的數據
裡面還有建立索引,因此每次要插入數據都要特別久
不過只要執行完插入數據之後,當日要查詢都變得很快
但隔天就又會是很久的狀態,不曉得是否能夠持續維持插入後的狀態嗎?
以及這是什麼原因造成的呢? 謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 182.235.178.103
※ 文章網址: http://webptt.com/m.aspx?n=bbs/Database/M.1408137471.A.5FC.html
1F:→ bohei: 表的筆數有頻繁且大量的改變嗎? 08/16 07:22
2F:推 GoalBased: 你說得很久 應該是第一次查很久? 後面就不會了 08/16 13:29
3F:→ jami520: 數據插入資料庫時,每次都會重新建立索引嗎? 因為都要很 08/17 05:26
4F:→ jami520: 久的時間,不過數據插入完畢,在當天查詢裡面資料都飛快, 08/17 05:27
5F:→ jami520: 只是到了隔天查相同的SQL語法時,速度就不比昨天插入資 08/17 05:28
6F:→ jami520: 料的快,是否因為插入數據時候有跑過所有資料過呢? 這是 08/17 05:29
7F:→ jami520: 我比較納悶的地方,而且如何維持這樣狀態也是在尋找方法 08/17 05:29
8F:推 rockchangnew: 先看一下執行計劃吧,確認索引有被使用。 08/17 18:52
9F:推 rockchangnew: 索引有被使用也要是seek才會快,scan也是悲劇 08/17 18:53
10F:→ jeamie: 會不會是因為有存在buffer中,隔天buffer清掉所以較慢了? 08/20 12:36
11F:推 GoalBased: 我一開始也是像樓上想的依樣 08/21 16:16
12F:→ wilsmart: 我知道 Oracle有 buffer cache 但不確定SQL是不是也有 08/26 14:21
13F:推 Minervus: 有,你觀察一下Buffer cache ratio跟page 存活時間。 08/28 14:49
14F:→ Minervus: 搜索速度是Memory>CPU>>Disk,你東西不在Memory了只好從 08/28 14:50
15F:→ Minervus: Disk再撈一次放到Memory,以上兩個Counter你可以盼斷記 08/28 14:51
16F:推 Minervus: 憶體夠不夠用,現在記憶體不貴,多插幾條吧 08/28 14:54