行碎片始終是您在爲表列選擇char/varchar2數據類型時需要考慮的事情,因爲Oracle會嘗試將新數據放入打開的空閒空間中,因此可能會開始碎片化,從而在表上發出批量刪除/插入/更新在某個時間放慢表現。現在,隨着閃存存儲磁盤的發展,所有內容都發生了變化,因爲由於閃存技術本身的原因,數據的寫入儘可能分散。如果我們不需要關心碎片,那麼它會破壞關於表格數據存儲問題和數據碎片的整體理解。有沒有人有將數據庫文件存儲在閃存存儲磁盤上的經驗?碎片問題是否隨ssd磁盤一起消失?使用閃存存儲時,我們是否仍然需要擔心行碎片?
2
A
回答
4
沒有像描述它的「行碎片」這樣的事情,而且實際上,它決不應該驅動您選擇的數據類型char
或varchar2
。您選擇的數據類型應該取決於數據的性質以及它是否真的是固定寬度或可變寬度。 99.9%的時間,你應該更喜歡varchar2
。
Oracle可以讀取或寫入的最小單元是塊。一個塊通常是8k(儘管它可以小到2k或32k大)。一個塊通常會存儲多行數據。由於Oracle每次都必須編寫整個塊,因此它是否必須在塊內移動數據並不重要。
在一個塊中,Oracle爲未來的增長保留了一定的空間。這由表格的PCTFREE
設置控制。如果您預計行數會隨着時間的推移而大幅增加,那麼您可以使用大型的PCTFREE
。如果您希望隨着時間的推移您的行的大小將保持不變,那麼您可以使用小型的PCTFREE
。您不希望調整數據類型以防止行的大小發生變化,您希望調整表的PCTFREE
以適合您所期望的任何更改。
如果Oracle的特定行的塊的空間不足(例如,如果行需要增長並且設置的太小),Oracle需要將該行遷移到新塊。這意味着它會在指向新塊的原始塊中留下指針,並將實際數據移動到新塊中。這可能會導致性能問題,因爲如果您正在從索引讀取數據,您必須訪問舊數據塊和新數據塊才能讀取該行,具體取決於表中行的哪一部分被遷移。如果行數大於塊數或行數超過255列的行,強制Oracle執行額外的I/O,但這些數據似乎並不是您關心的內容,那麼您也可以獲得鏈式行的問題。
不管存儲系統如何,您都希望適當地設置表格的PCTFREE
,這樣可以最大限度地減少發生的行遷移量(還有其他方法可以最大限度地減少某些轉角情況下的行遷移,但是99%的時候你真的只是想正確設置PCTFREE
)。針對您要存儲的數據使用適當的數據類型,不要擔心行遷移會影響您選擇的數據類型。
相關問題
- 1. 我們是否仍需要擔心用戶關閉Cookie?
- 2. 我需要擔心閃存中的線程安全嗎?
- 3. 是時候來不要擔心內存
- 4. 使用jQuery的$ Post時,您需要擔心緩存嗎?
- 5. 如何發送文件而不用擔心內存碎片?
- 6. 我是否需要擔心Mac應用程序開發中的內存泄漏?
- 7. ,Cookie是否仍然需要?
- 8. 我需要擔心IE7嗎?
- 9. FlashDevelop?我是否仍然需要Flash CS
- 10. Zend \ db \ sql - prepareStatementForSqlObject - 仍然需要綁定或擔心sql注入?
- 11. 我何時需要擔心ActiveRecord鎖定?
- 12. rails碎片緩存存儲
- 13. 您是否需要擔心在重新啓動時清理內存
- 14. 我們是否仍然需要節點附件文件夾?
- 15. 我們是否仍然需要HTML5中的結尾斜槓?
- 16. 隨着Sping的緩存支持(用於ehcache),我們是否仍然需要Hibernate二級緩存?
- 17. 如果您的網站不使用cookies,您是否仍然需要擔心CSRF保護?
- 18. 即使我只關心它的流,我是否還需要存儲TcpClient?
- 19. 我是否需要擔心在foreach循環中的進程
- 20. 我是否需要擔心阻塞任務?
- 21. 我是否需要擔心字符串常量池?
- 22. 我是否仍然需要爲algorithm :: join使用boost?
- 23. 爲什麼我們需要在ipv6中使用碎片?
- 24. 當我們使用xchg時,我們是否需要防護
- 25. 爲什麼碎片需要大量存儲?
- 26. 使用Logstash存儲在Elasticsearch中時,是否需要@timestamp字段?
- 27. 如果我使用「Local \」,是否需要擔心CreateMutex的拒絕服務?
- 28. 如果我使用Google Closure,是否需要擔心絕對平等?
- 29. 我需要擔心我的應用程序中的時區嗎?
- 30. 定位項目時存儲庫碎片
我猜自動段存儲管理(ASSM)自動管理PCTFREE,所以在使用舊型MSSM存儲類型時需要設置PCTFREE嗎? – Centurion
@Centurion - No. ASSM自動處理手動段空間管理中由'PCTUSED'參數處理的內容。這兩種類型的表空間都依賴於表的「PCTFREE」設置。自動管理'PCTFREE'是非常困難的,因爲系統無法知道行的大小如何隨時間變化 - 這只是數據建模者最初知道的。 –