執行環境 centos7 1g記憶體 40g硬碟(某某雲伺服器,學生價9.5乙個月)
資料表結構
硬碟中檔案存放方式是:
以月為單位建立目錄,同乙個月的檔案放在同乙個目錄中。
檔名格式為:時間戳+源檔名
如:e:\development\upload\20196\1561637254739img.jpeg
資料庫的file表存有檔案的真實路徑,user_file表則是使用者表user與file表多對多的乙個關聯表,user_file表中的 link_id 欄位是乙個與 file 表關聯的外來鍵,當使用者刪除自己儲存的檔案時只是刪除user_file表的記錄,並不會直接刪除file表中的記錄,因為file可能還有其他使用者關聯。
當全部使用者都沒有關聯該file記錄時,該file記錄就應該被刪除,對應的檔案也就應該被刪除。
由於檔案檔案量比較大,資料庫記錄資訊也比較多,所以需要在乙個特定的時間去**,使用spring的task元件,設定乙個定時執行任務,設定在每天的凌晨3點進行檔案**
方式1,單次查詢所有:
**步驟:
這樣子雖然能成功的**檔案,但是在小資料量時沒有問題,在資料量大時就會出現記憶體消耗過大的問題。在一百萬條資料時,wpfilelist集合需要 163 m 記憶體,linkidlist需要 27m記憶體,當三百萬條資料伺服器就吃不消了,方法不可行。
方式2,分批次查詢+臨時檔案儲存:
既然一次過把所有檔案都存入list中會造成記憶體消耗過大問題,那麼能不能分批次進行查詢,每一次只查詢一部分(我暫時一次查100000條),這樣wpfilelist集合只需要 16 m左右的記憶體,linkidlist則只需要 2.7m左右記憶體,這樣即使是資料庫中有一千萬或上億條資料,也沒關係,只要查詢次數增加即可,不會出現瞬間記憶體**的風險。
步驟:
清理c盤下的檔案
電腦c盤滿了怎麼清理 1.開啟 我的電腦 工具 資料夾選項 檢視 在 顯示所有檔案和資料夾 選項前打勾 再按 確定 2.刪除以下資料夾中的內容 c documents and settings 使用者名稱 cookies 下的所有檔案 保留index檔案 c documents and settin...
清理C盤臨時檔案指令碼
echo off echo 正在清除系統垃圾檔案,請稍等.del f s q systemdrive tmp del f s q systemdrive mp del f s q systemdrive log del f s q systemdrive gid del f s q systemdr...
c u盤使用記錄 C 如何讀取U盤中的檔案啊
找到了 當把u盤放插入,然後程式自動將u盤的內容複製到本地硬碟 using system using system.collections.generic using using system.data using system.drawing using system.text using sys...