(五)列表查询中的阈值限制

在之前版本的SharePoint 中,如果在查询的时候没有指定返回数目,那么SharePoint将会查找该列表中所有的条目,这可能会造成在SQL表中需要返回大量的条目,极大影响了数据库的I/O性能和网络负载,如果返回的条目数量超过一定范围之后,SQL Server会把整张数据表锁定。我们知道在SharePoint中,所有的列表条目信息都是存储在同一张SQL Server数据表中的,这也就意味着,一个设计的不好的列表查询,可能会导致整个SharePoint的其他应用都停止响应。

为了避免这些有缺陷的程序可能对网站其余功能的使用造成的影响,在SharePoint 2010中,引入了列表查询的阈值限制。在管理中心的“Web应用程序管理”—“常规设置”—“资源限制”设置中,我们可以看到如下的设置:

从设置中我们看到SharePoint对列表数据的查询返回可以进行如下一些设置:

1、数量限制

在默认情况下,SharePoint在返回列表条目的时候,会进行数量的限制。对于普通用户,一次返回列表条目不能超过5000个,对于有一定条件的管理员则不能超过20000个。这两个阈值可以在上述界面中进行设置,设置的范围是从2000到Int32.MaxValue。如果在查询中返回超过了这个阈值的条目,则程序会终止查询,并抛出一个类型为“SPQueryThrottledException”的异常,异常的信息为“不允许执行所尝试的操作,因为它已超过管理员规定的列表视图阈值。”,从而阻止用户可能对服务器性能造成严重影响的操作。

2、查阅项限制

SharePoint的查阅项虽然在页面中以及在程序中看起来都能够查看到所查阅条目相应字段的信息,但是查阅项在数据库中存储的时候,是只保存所查阅条目的ID值的。这也就意味着,在列表显示或者自定义的程序中,每获取一次查阅项,就要多付出一些额外的数据库操作时间。如果列表中包含很多查阅项,对服务器的性能同样可能造成影响。

因此,SharePoint 2010在列表条目返回的时候,对所返回的查阅项的数量也进行了限制,默认是6个查阅项。如果我们在SPView、SPQuery或SPSiteDataQuery的ViewFields属性中显式指定了超过该阈值的查阅项字段的时候,在查询返回后同样会抛出一个“SPQueryThrottledException”异常,异常信息为“查询无法完成,因为其包含的查找列数已超过管理员强制实施的查找列阈值。”;而如果没有指定ViewFields属性,当当返回的一个列表条目中超过指定个数的查阅项的时候,阈值个数之后查阅项字段会被抛弃掉,视为该字段不存在。

但需要特别注意,列表中的查阅项、人员和组以及工作流状态字段都会计入这个查阅项限制中,因为这些字段类型的本质都是从另外的列表中进行信息的引用。

3、大型查询时间

在某些时候,我们的确需要在服务器比较空闲的时候执行一些统计性的非常耗时的工作,其中可能会返回大量的数据结果,SharePoint 2010也为我们开放了这样一个选择:开启大型查询的每日时间段,指定在每天的固定几个小时中,可以在查询过程中不受上述阈值限制的影响。

4、使用对象模型替代

在一些特殊的应用中,我们可能确实需要在查询的时候,返回超过阈值限制的列表条目、或者超过查阅项限制的字段数目。SharePoint在查询相关的对象模型中,提供了一个属性,可以控制以何种方式来替代Web应用程序中的查询资源限制。

如果在资源限制设置中,开启了“允许对象模型替代”选项,那么我们可以通过SPQuery以及SPSiteDataQuery的QueryThrottleMode属性,来控制查询的时候使用什么样的规则进行阈值控制,该属性是一个枚举类型(SPQueryThrottleOption),包含的属性及其含义如下:

属性

规则

Default

如果当前用户是本地管理员,则在查询返回结果的时候不受任何阈值限制。否则,数量限制和查阅项限制都回对查询造成影响。这个选择也是默认值。

Override

如果当前用户是本地管理员,则在查询返回结果的时候不受任何阈值限制。如果当前用户在Web应用程序的策略中被指定为“完全读取”或“完全控制”(通常是作为审计用户及管理员),那么在查询返回结果的时候,会受到数量阈值的限制,但是不会受到查阅项阈值的限制。对于其他用户,两种限制都是生效的。

Strict

不论当前用户是何种权限和角色,在查询返回结果的时候都要受到数量限制和查阅项限制。

通过这一设置,我们就可以在编写自定义程序的时候,根据不同角色的不同需要,灵活控制代码在执行查询时候的阈值限制,从而在满足需求的情况下尽可能少的对服务器上的其他应用造成性能上的影响。

转载于:https://www.cnblogs.com/erucy/p/4471187.html

SharePoint服务器端对象模型 之 使用CAML进行数据查询(Part 4)相关推荐

  1. 【转】4.SharePoint服务器端对象模型 之 使用CAML进行数据查询

    (一)概述 在SharePoint的开发应用中,查询是非常常用的一种手段,根据某些筛选.排序条件,获得某个列表或者某一些列表中相应的列表条目的集合. 除去列表上的查询之外,在SharePoint中还大 ...

  2. SharePoint服务器端对象模型 之 使用CAML进行数据查询

    (一)概述 在SharePoint的开发应用中,查询是非常常用的一种手段,根据某些筛选.排序条件,获得某个列表或者某一些列表中相应的列表条目的集合. 除去列表上的查询之外,在SharePoint中还大 ...

  3. 【转】4.3SharePoint服务器端对象模型 之 使用CAML进行数据查询(Part 3)

    (四)使用SPSiteDataQuery进行多列表查询 1.概述 前面介绍的列表查询有很多优势,但是它的一个缺点就是一次只能在一个列表中进行查询,在SharePoint中,提供了一个跨网站.跨列表查询 ...

  4. 【转】4.2SharePoint服务器端对象模型 之 使用CAML进行数据查询(Part 2)

    (三)使用SPQuery进行列表查询 1.概述 列表查询主要是指在一个指定的列表(或文档库)中按照某些筛选.排序条件进行查询.列表查询主要使用SPQuery对象,以及SPList的GetItems方法 ...

  5. 【转】0.SharePoint服务器端对象模型 之 序言

    对于刚刚开始接触SharePoint的开发人员,即使之前有较为丰富的ASP.NET开发经验,在面对SharePoint时候可能也很难找到入手的方向.对于任何一种开发平台而言,学习开发的过程大致会包括: ...

  6. 【转】2.1 SharePoint服务器端对象模型 之 访问网站和列表数据(Part 1)

    本节将会介绍SharePoint中最为常用的一些对象模型,以及如何使用这些对象模型来访问和操作网站中的数据.几乎所有的SharePoint服务器端开发都会涉及到这些内容,因此应着重掌握本节中所介绍的基 ...

  7. 【转】1.SharePoint服务器端对象模型 之 对象模型概述(Part 1)

    在一个传统的ASP.NET开发过程中,我们往往会把开发分为界面展现层.逻辑业务层和数据访问层这三个层面.作为一个应用开发平台,SharePoint是微软在直观的开发能力和自由的扩展能力之间,取到的一个 ...

  8. 【转】2.2 SharePoint服务器端对象模型 之 访问网站和列表数据(Part 2)

    (二)列表(SPList) 列表是SharePoint中最为重要的数据容器,我们一般保存在SharePoint中的所有数据,都是保存在列表中(文档库也是一种列表),因此列表对象在SharePoint的 ...

  9. SharePoint服务器端对象模型 之 访问文件和文件夹(Part 4)

    (四)列表附件 列表的附件也是文件系统的一部分,它依附于普通列表的列表条目之上(文档库没有附件),它的操作在一些地方和文档库中文档的操作非常类似. 1.附件的读取 一个列表条目的附件可以使用SPLis ...

  10. SharePoint 服务器端对象模型操作文档库(上传/授权/查看权限)

    来源于:http://www.cnblogs.com/jianyus/p/3258863.html 简介:上传文档到文档库,并对项目级授权,查看项目级权限方法         //在列表根目录下创建文 ...

最新文章

  1. Python 标准库之 os (获取当前目录、读取/设置环境变量、重命名文件、运行shell命令、创建/删除/查看目录文件、判断目录/文件/存在、获取绝对路径、获取文件名、获取换行符、获取路径分隔符)
  2. 十一、python生成器和迭代器
  3. 十大必须掌握的机器学习算法,你都知道了吗?
  4. AssetPostprocessor.OnPreprocessModel
  5. 解决相片上传主键唯一性问题,java 上传相片到服务器的时候,相片保存主键用guid。...
  6. ubuntu 实现文本方式和图形方式的转换_word格式怎么转成pdf-pdf转换软件_pdf格式转word工具在线免费转换...
  7. 高等代数期末考试题库及答案_数学类高等代数期末考试试题A卷(含答案)
  8. python websocket服务器端_python实现websocket服务器
  9. 2022年了,微信透明头像怎么设置?不多说,安排
  10. hdu4889Scary Path Finding Algorithm【构造】搞坏spfa-slf 2014多校联合
  11. 190种超全的解密工具任你选!!
  12. 十年工作经验的中层员工如何在大厂生存?
  13. FPGA芯片选型(FPGA初学者的选择)
  14. JAVA面试题《下》
  15. MATLAB/Simulink模型开发乐高EV3 双足平衡机器人
  16. 定义char dog[]=wang\0miao;那么sizeof(dog)与strlen(dog)分别是多少:
  17. SL8521E开发笔记---UART配置
  18. 183 25用计算机算列竖式,新北师大四年级上册数学计算题
  19. 全息体光栅的配置与分析
  20. SAP 获取内表字段名

热门文章

  1. android文件关联之mime type
  2. C#动态创建和动态使用程序集、类、方法、字段等(二)
  3. 经常用到的一个分页存储过程
  4. linux jdk1.8 32位下载永久地址,ubuntu,centos,java
  5. Linux 之CentOS7-VSFTP搭建
  6. 一个在线排版小工具:中文、英文、数字、符号中间加个空格
  7. 11.22 访问日志不记录静态文件 11.23 访问日志切割 11.24 静态元素过期时间
  8. 第二章 springboot+mybatis
  9. arcserver开发小结(三)
  10. C#调用大漠插件,发送QQ和微信消息