之前大學畢業前,在金融相關公司實習,公司交給我乙個簡單的任務,是將乙個銀行記賬登記表備份。我一想不就是大學裡學的簡單增刪改查操作麼,就滿口答應了。結果後來根本不是那麼回事,和師傅學到了很多。
pt_msg 平台登記簿,之前有備份資訊;
由於老資料中 ref_no 中存在 p 開頭記錄,導致一直備份失敗。登記簿資料累加已經達到了數百萬條資料,資料庫負荷很高。
pt_msg 表目前存在備份表 pt_msg_hist,源表中只保留一年以內的資料,其餘保留在備份表中。
思路很簡單,把之前的備份表資料清空,將源表中1年外的資料插入備份表中,將源表1年外的資料刪除。
1.delete操作並不會**表空間,而且對於大量資料使用delete,會很慢。所以對於備份表資料清空,使用drop原備份表,再重建的方式。
2.使用insert向備份表表中插入多條資料時效率很低。所以建立表和新增一年外資料使用create table as的方式。
3.刪除源表資料粗略估算有500萬條,一次性刪除會出現很多問題。delete操作會產生日誌,需要大量空間,同時也會導致資料空間短暫高負荷,甚至超負荷導致癱瘓。刪除中斷的話所有之前刪除的資料將會回滾。同時刪除多行,會進行鎖表,影響別的操作。所以採用迴圈刪除的方式,一次刪除20萬條,使用關鍵字rowcount。
4.對於delete完的資料,表空間不會**,大量的delete會導致高水位,所以對源表需要進行水位**,alter table pt_msg_list_g_5 move
5.刪除完資料會導致源表索引失效,所以需要重建索引。
6.重新進行表分析。
記錄在此方便自己今後檢視,也希望能幫到需要幫助的人。如此多的細節在學校裡根本學不到,需要自己的日積月累,每天進步一點點。
用Perl從oracle匯出百萬級資料到excel
perl從oracle匯出百萬級資料到excel excel 2007 可以存放1048576行 16384列的資料 excel 2003大概是65535行 我從oracle中匯出30萬行60列的資料到excel中花了約8分鐘。如果你還沒有安裝perl,按下面步驟 步驟 2 輸入ppm命令開啟per...
百萬級資料內取得最大的N到N 10條資料
近日碰到乙個問題,在一百萬的資料內查詢最大的資料的第n到第n 10,立即想到的就是氣泡排序氣泡排序 快速排序等諸多的排序演算法,但是直覺告訴我似乎這個題目並非只是演算法能夠解決的問題,一百萬的資料用演算法排序一般是及其浪費資源的,尤其是諸如冒泡類的演算法,雖然演算法簡單,但是及其浪費資源 常見演算法...
hql分頁(獲取從第m到第n條資料)
hibernate封裝了sql語句成了hql,雖然對於多表級聯查詢顯得很麻煩甚至不如sql,但是其實用慣了的話,對於一些常規資料的查詢還是很方便的,比較自動給封裝到物件裡了,不像sql那般麻煩。那麼下面就解決一下hql分頁顯示問題,也就是只取結果集中某一段的結果,怎麼寫呢?其實很簡單,hql的que...