博客园Logo
首页
新闻
博问
专区
闪存
班级
代码改变世界
搜索
注册
登录
返回主页
zero.zhang
博客园 首页 新随笔 联系 管理 订阅订阅 随笔- 171 文章- 0 评论- 332
salesforce零基础学习(九十九)Salesforce Data Skew(数据倾斜)
本篇参考:
https://developer.salesforce.com/blogs/engineering/2013/04/managing-lookup-skew-to-avoid-record-lock-exceptions.html
https://developer.salesforce.com/blogs/engineering/2012/04/avoid-account-data-skew-for-peak-performance.html
https://developer.salesforce.com/blogs/engineering/2012/06/architect-salesforce-record-ownership-skew-for-peak-performance-in-large-data-volume-environments.html
性能以及稳定性对于一个系统来说是至关重要的。 今天说的是数据Lookup倾斜我们在一个系统中,表和表的关系不可能是完全独立的存在,有关系就要创建其关联, lookup也好, MD也好。有些表作为主数据,数据量可能很庞大,Lookup数据倾斜简单的定义可以理解为,当一条记录有10K条同个表记录进行关联情况下,便会很影响性能,变成一个沉默的杀手,看不出来程序配置哪里有问题,但是可能出现崩溃或者性能堪忧的风险。
举几个例子更好的去理解一下:
符合 Lookup Data Skew
- 一条顾客数据,绑定了超过10000的案件数据;
- 一个自定义表,绑定了超过10000条他的子表的数据;
不符合 Lookup Data Skew - 一个user,拥有10000条记录。(之所以不属于原因是 要求同一个表,如果一个 user拥有10000条顾客或者案件记录则符合)
lookup skew通常可以分成三个类型:
Account Data Skew:某些Salesforce对象,如Account和 Opportunity,在 sharing model 是private情况下,维护父子数据访问会有一个特殊的数据关系,如果同一个 account记录拥有太多的Opportunity记录,则容易产生 account data skew从而导致性能的风险;
Ownership Skew:当一个user针对同一个表拥有超过10K的数据,在管理 role hierarchy 和 sharing rule场景下就很容易造成 ownership的倾斜
Lookup Skew:当具有lookup关系的两个表,一个父表的数据如果关联了超过10K的这个子表的数据,则造成了 lookup skew。
上面的内容都是概念性描述,那么在我们实际场景中是否出现过因为lookup skew导致的问题呢,这样才能让我们能更好的知道为什么 lookup skew如此堪忧?
最常见的场景:unable_to_lock_row。根据salesforce 数据DML的原理,当一个子表进行DML(这里通常使用 insert / update)时,需要先锁定父表,然后进行子表的DML操作,当子表的记录操作完成,会解锁父表记录,然后下一条记录来了,锁定它这条记录的父表,然后进行相同的后续操作。
如果一个父表绑定了太多的同一个子表的数据,则容易造成 unable_to_lock_row的情况,这种事情偶发存在,可能重新执行就通过。客户出现这个问题,提case,作为开发人员修改也是很痛苦的事情。
针对这种情况如何去处理呢?大概有几种处理方式(不一定齐全,可以参看上方文档)
-
针对 Account Data Skew尽量做到多建几个子 account,通过 parent account形成关联关系以后,将数据进行分发,从而减少每条account绑定的数量;
-
针对 ownership skew,尽量做到user不存在 role或者在 role hierarchy最上层,这样在 role hierarchy变更情况下,不用有share的性能风险。
总结:Data Skew在设计上是一个很重要的一环,它会影响你的 sharing 性能以及系统稳定性。篇中只是简单介绍了概念以及常用情况的处理方式,具体的细节还请参看上方的文档。篇中有问题欢迎指出,有不懂欢迎留言。
作者:zero
博客地址:http://www.cnblogs.com/zero-zyq/
本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接
个人下载了一些相关学习的PDF文件,如果需要下载请访问百度云 点击此处访问 密码:jhuy
如果文章的内容对你有帮助,欢迎点赞~
为方便手机端查看博客,现正在将博客迁移至微信公众号:Salesforce零基础学习,欢迎各位关注。
分类: salesforce&apex
标签: salesforce学习
好文要顶 关注我 收藏该文
zero.zhang
关注 - 6
粉丝 - 372
+加关注
0 0
« 上一篇: Salesforce LWC学习(三十) lwc superbadge项目实现
posted @ 2020-12-31 12:20 zero.zhang 阅读(19) 评论(0) 编辑 收藏
刷新评论刷新页面返回顶部
登录后才能发表评论,立即 登录 或 注册, 访问 网站首页
写给园友们的一封求助信
【推荐】News: 大型组态、工控、仿真、CADGIS 50万行VC++源码免费下载
【推荐】博客园x丝芙兰-圣诞特别活动:圣诞选礼,美力送递
【推荐】新一代 NoSQL 数据库,Aerospike专区新鲜入驻
相关博文:
· Salesforce中ManagedPackage的使用
· SalesforceLWC学习(九)QuickActioninLWC
· SalesforceLWC学习(八)LookUp组件实现
· Salesforce学习之路(十三)Aura案例实战分析
· Salesforce-建立轮循机制的潜在客户分配规则
» 更多推荐…
最新 IT 新闻:
· 加速的B站,滞后的社区治理
· 天猫回应被市场监管总局处罚:全面整改所涉问题
· 携程CEO孙洁发表跨年署名文章:2020年每一位旅业人都是英雄
· MIT研发出可通过光让药物直接作用于靶子区域的方法:且无副作用
· 蛋壳公寓App下架全部房源 行业人士:腾讯或成为接盘方
» 更多新闻…
历史上的今天:
2019-12-31 salesforce零基础学习(九十五)lightning out
昵称: zero.zhang
园龄: 4年9个月
粉丝: 372
关注: 6
+加关注
< 2020年12月 >
日 一 二 三 四 五 六
29 30 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 1 2
3 4 5 6 7 8 9
搜索
找找看
谷歌搜索
常用链接
我的随笔
我的评论
我的参与
最新评论
我的标签
我的标签
salesforce学习(163)
lightning学习(38)
LWC(33)
admin学习(5)
apex数据结构(4)
Community Cloud(4)
Sales Cloud(4)
javascript(3)
Service Cloud(3)
Sharing & Visibility(1)
更多
随笔分类
salesforce&apex(166)
随笔档案
2020年12月(5)
2020年11月(2)
2020年10月(4)
2020年9月(6)
2020年8月(3)
2020年7月(2)
2020年6月(3)
2020年5月(2)
2020年4月(2)
2020年3月(3)
更多
salesforce&apex
https://developer.salesforce.com/
salesforce 401在线练习
salesforce帮助文档入口
最新评论
- Re:salesforce零基础学习(七十二)项目中的零碎知识点小总结(一)
如何在salesforce的画面中隐藏标签的下载摁钮 .THIS video-webkit-media-controls { overflow: hidden !important } …
–一剑无血 - Re:salesforce 零基础学习(四十二)简单文件上传下载
@alone守月 这个是这几个表的关系,如果只是挂到B,改parentId应该就行,但是A还想保留,可能要进行clone操作了…
–zero.zhang - Re:salesforce 零基础学习(四十二)简单文件上传下载
@zero.zhang 嗯,我想要查找对象的相关列表的那个文件附件数量,File,document,相关的一些文档的区别不懂,我用的是下面这个来查找的,可以查到了。 select Id,(select…
–alone守月 - Re:salesforce 零基础学习(四十二)简单文件上传下载
@alone守月 你是使用 ContentVersion还是?…
–zero.zhang - Re:salesforce 零基础学习(四十二)简单文件上传下载
请问大佬怎么代码或者公式查找相关文件的所属对象
–alone守月
阅读排行榜 - salesforce 零基础开发入门学习(一)Salesforce功能介绍,IDE配置以及资源下载(46713)
- salesforce 零基础开发入门学习(二)变量基础知识,集合,表达式,流程控制语句(16413)
- salesforce 零基础开发入门学习(三)sObject简单介绍以及简单DML操作(SOQL)(16369)
- salesforce 零基础学习(三十三)通过REST方式访问外部数据以及JAVA通过rest方式访问salesforce(14444)
- salesforce 零基础学习(十七)Trigger用法(13230)
评论排行榜 - salesforce 零基础开发入门学习(一)Salesforce功能介绍,IDE配置以及资源下载(32)
- salesforce 零基础学习(三十三)通过REST方式访问外部数据以及JAVA通过rest方式访问salesforce(13)
- salesforce 零基础学习(六十七)SingleEmailMessage 那点事(12)
- salesforce 零基础学习(五十一)使用 Salesforce.com SOAP API 实现用户登录以及简单的增删改查(JAVA访问salesforce)(12)
- salesforce 零基础学习(十八)WorkFlow介绍及用法(12)
推荐排行榜 - salesforce 零基础开发入门学习(三)sObject简单介绍以及简单DML操作(SOQL)(11)
- salesforce 零基础开发入门学习(一)Salesforce功能介绍,IDE配置以及资源下载(10)
- salesforce 零基础开发入门学习(二)变量基础知识,集合,表达式,流程控制语句(9)
- salesforce 零基础开发入门学习(五)异步进程介绍与数据批处理Batchable(7)
- salesforce 零基础开发入门学习(四)多表关联下的SOQL以及表字段Data type详解(7)
Copyright © 2020 zero.zhang
Powered by .NET 5.0 on Kubernetes