Salesforce 大數據量處理篇(一)Skinny Table
- 2021 年 1 月 6 日
- 筆記
- salesforce&apex, salesforce學習, 大數據處理優化
數據操作在salesforce中非常的重要。我們在salesforce中不管是進行sales cloud 還是 service cloud或者是自定義開發。隨著使用的年限增加,數據會慢慢增多,比如針對 sales cloud的 account / opportunity。 針對service cloud中的 account / case。當我們的數據達到百萬或者千萬級別。運行 report / listview 會非常的慢,運行report偶爾也會出現超時情況。又比如我們想在vf page中SOQL進行查詢,並且查詢的SOQL欄位沒有查詢關聯表,只是當前表的常用欄位。出現了性能問題,想要優化。
這種情況下,我們可以根據情況考慮啟用 skinny table.
一. skinny table簡介
Skinny Table是Force.com平台中的自定義表,它包含指定標準表或自定義表的欄位子集。如果需要,Force.com可以有多個Skinny Table.比如下圖中針對 Account創建的 Skinny Table.
Skinny Table 可以針對 custom object / Account / Contact / Opportunity / Lead / Case表進行創建 Skinny Table。 他們可以針對 Report / ListView / SOQL進行性能優化。如果是這些表以外的,比如 External Object以及其他的標準 Object,則無法創建 Skinny Table。
Salesforce可以創建skinny table來包含經常使用的欄位,並避免join操作。這可以提高某些只讀操作的性能。當源表被修改時,skinny table與它們的源表保持同步,所以我們也不需要考慮和源表的同步問題。因為 Skinny Table 的數據是只讀的,所以針對大數據量的Report性能會有顯著的提高。
需要注意的是,管理員並不能自己創建 Skinny Table,如果想要啟用,需要給salesforce 提case。啟用以後也不能創建/訪問或者編輯 Skinny Table,如果提case以後,Skinny Table欄位需要修改類型或者添加新欄位,也需要給Salesforce提case。
Skinny tables只支援以下的欄位類型:
- Checkbox
- Date
- Date and time
- Number
- Percent
- Phone
- Picklist (multi-select)
- Text
- Text area
- Text area (long)
- URL
二. Skinny Table使用注意事項
Skinny Table雖好,但是需要考慮以下的點:
1. Skinny Table不包含soft-deleted的數據,比如不包含在回收站的數據,即使SOQL設置 isDeleted=true在 Skinny Table無法查詢出來。
2. 一次性考慮好 Skinny Table需要用到的欄位,如果欄位需要新增,則只能重新給salesforce 提case讓他們重新創建;
3. Skinny Table只能最多包含100個欄位。
4. Skinny Table 不能跨表創建欄位。比如 針對 Opportunity創建了 Skinny Table,無法創建關聯到 Account的欄位,即只能當前表創建欄位.
總結:針對大數據滿足以下條件出現性能問題情況,可以考慮使用 Skinny Table. 使用前需要先確認是否滿足這些條件,滿足可以考慮使用,如果不滿足,則使用其他的方案進行性能優化。篇中有錯誤地方歡迎指出,有不懂歡迎留言。