Truncate 事務陷阱 被刪除的資料無法回滾

2021-09-29 23:58:44 字數 663 閱讀 6895

@transactional(propagation = propagation.required)

public void reloadfoodata()

加了事務註解,reloadfoodata()方法中的語句要麼都執行成功,要麼都執行失敗(回滾)。

但我的情況是:clear操作成功,rebuild失敗。且沒有回滾導致我的資料丟了!!!

我在clearallrecord()方法中執行的sql是truncate table tb_name,是為了快速清空表資料

改為delete from tb_name即可。

原因:truncate掉的資料無法通過事務恢復

`truncate table tb_name`

`delete from tb_name`

同:結果都是刪除了表中的所有記錄。

異:不帶where條件的delete語句會記錄刪除每一行記錄的日誌。而truncate不記錄每一行的,只記錄頁面的釋放。

所以其各自的優點:

delete的記錄可回滾;

truncate語句執行更快(執行過程中占用的系統和日誌資源更少)。

變數被刪除

當乙個動態分配的變數被刪除,記憶是 返回 到堆,然後可以作為未來分配請求的接收。堆的優點和缺點 1 分配的記憶體分配到具體在釋放 注意記憶體洩漏 2 動態分配的記憶體必須通過指標訪問。3 由於堆是乙個大的記憶體池,大的陣列,結構,或類應該分配在這裡。堆疊 呼叫堆疊 通常稱為 疊 有乙個更有趣的角色。...

usr bin被刪除的操作

誤刪 usr bin後快速恢復操作 1.在區域網中找一台好的伺服器,使用如下命令,將scp cp命令傳過去 1 2 gzip c usr bin scp ssh 10.0.0.8 gunzip c usr bin scp 2.在被誤刪的服務上進行操作。如果有chmod命令就執行以下命令 1 cd u...

被刪除檔案恢復原理

打個通俗易懂的比方,檔案在磁碟上的儲存就像是乙個鍊錶,表頭是檔案的起始位址,整個檔案並不一定是 連續的,而是乙個節點乙個節點的連線起來的。要訪問某個檔案時,只要找到表頭就行了。刪除檔案時,其實只是把表頭刪除了,後面的資料並沒有刪除,直到下一 次進行寫磁碟操作需要占用節點所在位置時,才會把相應的資料覆...