我有30甚至更多的表,並且所有表的主鍵都設置爲自動增加,所以無論何時執行刪除操作,如從10個表中刪除30條記錄,然後刪除300個存儲單元將始終因爲主鍵被設置爲自動增量。所以想想非常大型數據庫的這種情況,那麼如何解決這個問題並再次使用這些存儲器單元。刪除後數據庫內存浪費
回答
那麼它的自動增加,所以你不能幫助它,沒有內存浪費。
主鍵沒有提及任何種類的「存儲單元」,它只是一個給每一行賦予一個唯一編號的計數器。
理論上可以使用所有可能的鍵,但是我不確定MySQL是否會嘗試使用已刪除的舊值(它不應該)。但考慮到一個未簽名的BIGINT字段可能會達到18,446,744,073,709,551,615(18十億分之一),所以不太可能會遇到問題。
okk接受,如果我們採取bigint我永遠不會用完空間,但如果我想再次使用相同的pk,我該怎麼辦? – rupinder18
@ rupinder18理想情況下,你不應該再次使用相同的主鍵。主鍵通常在其他表中引用。如果你再次使用它,你會冒險把它與它不應該的數據聯繫起來。自動遞增主鍵不應該是您關心的值。如果你想改變它/手動分配它,我不會推薦自動增量。 – Dracs
自動增量只是一個計數器。它與記憶無關。 PK欄不是完整的數學系列這一事實根本不影響性能。刪除的唯一影響是回滾日誌。如果您要刪除表中的所有數據,最好將其截斷。
mysql內存模型很複雜。有關概述,您可以從mysql開發文檔中查看this article。
- 1. 浪費內存加速jvm
- 2. IDataErrorInfo是否浪費內存?
- 3. 有用或浪費內存?
- 4. 表單引用浪費內存?
- 5. 乘客正在浪費內存
- 6. 長變量名是否浪費內存?
- 7. 動態分配或浪費內存?
- 8. 尋找浪費內存的課程
- 9. pop()隊列中的內存浪費
- 10. 流浪者銷燬後保持流浪數據庫數據
- 11. 如何阻止流浪家園刪除我的mysql數據庫?
- 12. 數據庫表刪除後非常慢
- 13. 閱讀後刪除數據庫條目?
- 14. 刪除一行後重構數據庫
- 15. 從SQLite數據庫中刪除內容
- 16. 即使在刪除數據庫文件後,數據庫也已存在
- 17. 刪除數據庫
- 18. 刪除數據庫
- 19. 刪除數據庫後未調用onCreate內容提供程序
- 20. 數據庫過期後從數據庫中刪除會話?
- 21. 從內存中刪除數據後會去哪裏?
- 22. 手動刪除數據庫後表格會持續存在嗎?
- 23. 刪除數據庫文件夾內部存儲
- 24. 如何用PHP PDO刪除內存中的SQLite數據庫?
- 25. 刪除內容時Godaddy數據庫存儲不降低
- 26. 使用AWS Elastic Beanstalk解決SQLAlchemy數據庫 - 浪費時間?
- 27. 這種訪問數據庫的方法太浪費了嗎?
- 28. 從表中刪除後從數據庫中刪除ADF
- 29. 在Oracle數據庫上刪除查詢花費時間
- 30. 刪除後刪除數據表
AFAIK自動增量只是一個計數器。它與記憶無關。 PK欄不是完整的數學系列這一事實根本不影響性能。刪除的唯一影響是回滾日誌。如果您要刪除表中的所有數據,最好將其截斷。 –
我不是刪除所有的數據,如果pk只是一個計數器而不是內存管理如何發生? – rupinder18
mysql內存模型是一件複雜的事情。關於PK的行集合是sparce,即缺少的值不會佔用任何內存。在這裏閱讀關於mysql內存管理的更多信息:http://dev.mysql.com/doc/refman/5.0/en/memory-use.html –