設置低於默認值100%的填充因子允許在桌上進行HOT(堆僅堆)更新。但是,如果更新的列是索引的一部分,則可能無法進行HOT更新。如果表上的更新總是影響索引列,那麼HOT更新永遠不會發生,並且通過查看pg_stat_all_tables中的表的n_tup_hot_upd列來確認,那麼在此場景中設置小於100%的fillfactor是否有任何好處?除了HOT更新以外,還有一個低表fillfactor的好處?
1
A
回答
0
manual根本沒有提到HOT更新作爲填充因子的原因。
fillfactor
(整數)爲表的填充係數是10和100。100(完整填料)之間的百分比是默認的。當指定較小的填充因子爲 時,INSERT操作僅將表格頁面打包到指示的 百分比;每個頁面上的剩餘空間保留用於更新該頁面上的 行。這使UPDATE有機會將更新後的 副本放置在與原始頁面相同的頁面上,這比將其放置在不同的頁面上更有效率,因爲 效率更高。對於其中 條目從未更新的表格,完整打包是最佳選擇,但在 中,重新更新的表格中較小的填充因子是適當的。這個 參數不能爲TOAST表設置。
無論使用哪種方法(熱或其他方式)更新的行Postgres的需要:
- 寫入新行
- 保留舊行,這樣其他事務仍然可以讀取它,但確保舊行標記爲舊。
所以不管是否使用HOT,由於UPDATE
的結果,postgres必須總是寫/更改兩行。如果在一頁而不是兩頁上完成,這將會更加高效。
相關問題
- 1. 除了MSXML以外,還有其他更好的IDOMImplementation嗎?
- 2. 除了單一文件的好處以外,對於@ import'ing CSS還有什麼好處嗎?
- 3. 除了「pass:pass」,還有一個更好的選擇嗎?
- 4. 除了可靠性之外,ATCA還有什麼好處?
- 5. 在Laravel中,除了免費使用redis和socket.io以外,還有什麼好處?
- 6. SQLite數據庫表更新除了一個字段以外的所有信息
- 7. 除了TDD之外,鬆散耦合代碼還有其他好處嗎?
- 8. 除了librpm之外,還有一個RPM實現嗎?
- 9. 除了嘗試以外的MySQL獲取除一個以外的所有用戶
- 10. 除了listview之外還有什麼用?
- 11. 除了第一個表格以外,每個表格上的第一行除外,每行都有jQuery選擇器
- 12. 處理iOS Exceptions除了Crittercism之外還有其他方法
- 13. 更新重複行然後刪除除了一個之外的所有
- 14. 除了MediaPlayer以外,還有其他的Android mp3播放器嗎?
- 15. 除了另一個任務外,還明確運行了Gradle DefaultTasks
- 16. 處理除一個例外以外的所有情況
- 17. C#刪除除顏色以外的兩個最低有效位
- 18. 休眠多對多關聯,除了外鍵以外還有額外的列
- 19. 哪一個性能更好?交叉連接還是新表?
- 20. 在MySql中刪除除了一個之外的所有表格
- 21. AMPHP除了nginx之外還有什麼樣的表現impovements
- 22. 除了重新路由器之外,Redux-Router還有什麼用?
- 23. str_replace除了第一個以外
- 24. 除了低存儲量外,還有什麼可能導致故障[INSTALL_FAILED_INSUFFICIENT_STORAGE]?
- 25. 除了CURL以外,還有其他休息客戶選擇嗎?
- 26. 除了圖像以外,還沒有放置文字
- 27. 除了`--`和`++`以外,Elixir還有其他的列表運算符嗎?
- 28. TYPO3中除了一個屬性以外的更新域模型6.2
- 29. Mysql:在子表中插入一個新行,除了從父表獲得的外鍵列以外的新值
- 30. 除了容器外還有四個div的CSS樣式DIV
是的,我在手冊中看過。我不確定是否將更新的行放在同一頁面上是指HOT更新。看起來Postgres會將新行放在同一頁面上,即使它沒有進行HOT更新。我在8.2手冊中看到了關於填充因子的相同文檔,而在8.3中引入了HOT,這樣纔有意義。 –