監控專案,16個傳感器,采樣頻率50hz, 建了一個表存盤資料,結構簡單:時間+ 數值
Create Table real_data(
record_time timestamp(3),
ac_1 Float,
ac_2 Float,
ac_3 Float,
ac_4 Float,
ac_5 Float,
ac_6 Float,
ac_7 Float,
ac_8 Float,
ac_9 Float,
ac_10 Float,
ac_11 Float,
ac_12 Float,
ac_13 Float,
ac_14 Float,
ac_15 Float,
ac_16 Float
)
Tablespace data_test;
現在定期 10分鐘,將資料表移出到另一個表,用job做的。
有個問題,10天后的該表的高水位會達到6000多,查詢效率降低很多。其實高水位4w多,檢索效率沒有明顯下降。
SQL> ANALYZE TABLE AC_REAL_DATA ESTIMATE STATISTICS;
Table analyzed
SQL> SELECT table_name,num_rows,blocks,empty_blocks FROM user_tables WHERE table_name='AC_REAL_DATA';
TABLE_NAME NUM_ROWS BLOCKS EMPTY_BLOCKS
------------------------------ ---------- ---------- ------------
AC_REAL_DATA 0 61109 331
疑惑的是:
1. 這個表最大的容量是 10分鐘資料,即3w 條資料,怎么高水位可以達到6W 呢?
2. 哪些因素會導致高水位? 除了頻繁的洗掉,和建表的初始化引數有關系否?
謝謝各位!
uj5u.com熱心網友回復:
先把表收縮一下,看看以后還會不會再上去;uj5u.com熱心網友回復:
move , shrink 都試過了,
剛開始挺好,但是過了7天后,高水位又上去了。
uj5u.com熱心網友回復:
如果做過了 shrink ,那就跟 初始引數沒什么關系了;排查以下兩個情況:
1、某個時刻,大概量的資料寫入,比如 超過 10W
2、有批量寫入時,是否加了 /*+ append*/ 選項;
uj5u.com熱心網友回復:
謝謝。
1. 沒有大資料量的寫入,每個10分鐘,我就會轉移一次。
2. 寫入資料庫是 采用 原始的insert 方式,沒有任何并行操作。
uj5u.com熱心網友回復:
如果你頻繁的刪了插入或者修改,時間久了高水位肯定會上升的呀,因為你的資料庫中肯定不只有這張表把,本來10條資料占了1個塊,你洗掉了資料騰出空間,但是其他表資料插入進來,然后你又插入進去,發現不夠了又增加了1個塊uj5u.com熱心網友回復:
nd目前就兩個表,做測驗的iyou。
一個 實時表 ,一個歷史表,實時表10分鐘導到歷史表中去。
難道單個表的高水位 和其他表 還有關聯嗎?
如果這樣,所有oracle 資料表時間長了,都存在高水位, 因為都會存在插入和洗掉操作的?
uj5u.com熱心網友回復:
你的10分鐘的插入水位線到底是多少,10天后有增加了多少。如果你的資料插入頻率和數量都是穩定的,理論上水位線應該不會出現暴增的情況
有可能是從實時表轉移到歷史表是需要時間的,而這個程序中你的應用還在實時插入,所以實時表的水位線會有一點點增加。
另外如果表格沒有修改動作,把Pctfree降低,讓每個塊盡可能多的存放資料
uj5u.com熱心網友回復:
如果每次轉移表后沒有使用turncate而只靠delete后空間的重用,還是會慢慢擴展高水位線的。http://blog.sina.com.cn/s/blog_6ff05a2c0100mjrw.html
uj5u.com熱心網友回復:
樓主,你不是定期10分鐘遷移表資料嗎?建議遷移完畢后,馬上truncate原表,這樣的話,高水位就會下去!
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/97843.html
標籤:高級技術
下一篇:oracle大資料匯總統計問題
