數據刪除&記錄刪除

背景:

 正常邏輯是刪除數據,接口抽取其他業務系統全量數據。事故發生是數據刪除(被物理刪除),接口抽取異常,數據未抽取成功。數據被物理刪除,也無法即刻恢復,導致業務無法進行。

1、物理刪除和邏輯刪除的區別:

  邏輯刪除是在設計刪除接口時一部分多爲邏輯刪除,所謂的邏輯刪除其實不是真正的刪除,而是通過在表中將對應的是否刪除標識(is_delete)或者說是狀態字段(status)做修改操作。比如0是未刪除,1是刪除。在邏輯上數據是被刪除的,但數據本身依然存在庫中。一些大型的、數據關聯性高、數據重要性高的應用往往會採用這種刪除方式,它可以實現回收站、刪除恢復、查看歷史版本等實用功能,根據業務的需要有不同的應用場景。

  物理刪除就是真正的從數據庫中做刪除操作,將數據庫中該信息徹底刪除無法恢復。可以使用DELETE FROM  SQL語句實現,這種方式產生的後果就是記錄永久性刪除,無法找回,一般適用於小型或數據重要性不高的項目,可以提高數據庫資源利用率。

  最後在實際刪除接口設計中,需要根據實際的業務場景來判別需要用哪種刪除方式。不同的業務需要根據其應用場景來選擇合適的數據刪除方式,一般的應用可以採用物理刪除的方式,簡單粗暴地將數據擦除,這樣可以有效提高數據庫地利用率。但是有些項目如金融、交通、能源等領域的歷史數據,往往具有很高的利用價值,通過對這些數據進行分析總結,可以更好的瞭解該領域的發展情況和健康程度,以及對未來的發展規劃起到一定指導作用,這時就要採用邏輯刪除的方式,雖然數據管理平臺爲了便於管理,刪除了過期的數據,但數據分析系統仍能從數據庫中獲取到歷史數據,通過抽取轉換加載的過程,將歷史數據轉化爲高價值的內容,這是目前信息技術發展的主要趨勢。

2、測試角度:

這個數據能不能刪除,與其他數據是否有關聯,刪除之後會造成什麼後果,不能刪除又該怎麼做,刪除之後能否恢復

3、數據庫的三種刪除方法

(1)delete

  • 可以按照條件清除數據
  • 只限於清除數據,表的定義、設置都不會清除

(2)truncate

  • 清空表內的所有數據,沒有條件
  • 相當於將當前表初始化,恢復到剛創建的狀態

(3)drop

  • 清除關於當前表的所有信息,表不再存在

刪除數據的速度,一般來說: drop> truncate > delete。與 DELETE 語句相比,TRUNCATE TABLE語句具有以下優點:所用的事務日誌空間較少。DELETE 語句每次刪除一行,並在事務日誌中爲所刪除的每行記錄一項。TRUNCATE TABLE 通過釋放用於存儲表數據的數據頁來刪除數據,並且在事務日誌中只記錄頁釋放。使用的鎖通常較少。當使用行鎖執行 DELETE 語句時,將鎖定表中各行以便刪除。TRUNCATE TABLE 始終鎖定表和頁,而不是鎖定各行。如無例外,在表中不會留有任何頁。執行 DELETE 語句後,表仍會包含空頁。例如,必須至少使用一個排他 (LCK_M_X) 表鎖,才能釋放堆中的空表。如果執行刪除操作時沒有使用表鎖,表(堆)中將包含許多空頁。對於索引,刪除操作會留下一些空頁,儘管這些頁會通過後臺清除進程迅速釋放。與 DELETE 語句相同,使用 TRUNCATE TABLE語句清空的表的定義與其索引和其他關聯對象一起保留在數據庫中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章