none
MOSS单个列表中(不划分子目录)的文章数增长到1万以上的如何开发webpart展示列表提高性能? RRS feed

  • 问题

  • 在MOSS的单个列表中(不划分子目录)的文章数不断增长, 可以到1万以上或几万的情况下, 需要列表来分页显示, 按最新的文章来翻页显示,如何提高性能?

    有文章说达到2000以上就有明显的性能问题, 该如何来设计这个列表分页的webpart呢? 有什么好的建议.

    将MOSS应用到的其他一些业务场景也有类似的问题,如某些档案属于同类不准备把他在细归类的情况下,可能有几十万或百万的数据量的情况下,MOSS的列表在分页展现时, 是否就无能为力了? 有没有对此问题的相关文章可以参考.

    For typical customer scenarios in which the standard Office SharePoint Server 2007 browser-based user interface is used, the recommendation is that a single list should not have more than 2,000 items per list container. A container in this case means the root of the list, as well as any folders in the list — a folder is a container because other list items are stored within it. A folder can contain items from the list as well as other folders, and each subfolder can contain more of each, and so on. For example, that means that you could have a list with 1,990 items in the root of the site, 10 folders that each contain 2,000 items, and so on. The maximum number of items supported in a list with recursive folders is 5 million items.

     

    从上面这段的话,我们可以知道对于基于使用浏览器的用户来说,每个列表容器不应该超过2000item

     

    如果您想在一个容器中包含超过2000item的话,您需要开发自己的interface来管理和检索这些数据。

     

    在默认情况下,SharePoint会自动分页的 (点击modify this view,在Item Limit下设置)。此外您可以多建一些View, 利用Filter分类别,比如创建日期、终止日期、ID等等。还可以设置索引来提高性能 (点击List Settings,点击Indexed Columns来设置)

     

    有关Working with Large Lists in Office SharePoint Server 2007的详细信息,请参考下面的链接:

     

    Working with Large Lists in Office SharePoint Server 2007

    http://go.microsoft.com/fwlink/?LinkId=95450&clcid=0x409


    数据量大的情况下,在单个视图下需要按页访问到内容,如何做分页,又要高性能,有什么好的办法呢?

    如果所有列表内容都在一个目录那么如何写自定义webpart能满足上面的要求,若列表内容下面放子文件夹和内容,展现列表的webpart需要展现所有子文件下的内容(文件夹不显示),如何分页处理同时又不损失性能?
    2009年3月28日 3:42

答案

全部回复

  • 据我的理解, 2000-item性能问题出现在SharePoint的自带的列表,而不出现在你自己开发的列表中.(我没有自己做过这个实验)

    >数据量大的情况下,在单个视图下需要按页访问到内容,如何做分页,又要高性能,有什么好的办法呢?

    你这个问题我不明白, 分页的原因就是为了避免出现性能问题

    我建议你根据自己的实际情况做一下实验, 如果数据全部显示在一页需要多长时间, 按照一定数目N显示分页需要多少时间
    通过修改N达到一个你可以接受的性能范围, 这就可以了.
    如果分页还达不到你的性能要求, 尝试添加索引.

    你引用的white paper可以作为一个参考, 具体我觉得是需要你根据具体情况调整的, 比如按照什么列使用索引.

    -lambert

    上善若水
    2009年3月28日 15:23
  • 就是说,企业版MOSS环境下,假设当一个列表下有几十上百万的记录时,如何做个显示当前页(当前页记录数可配置)和总页数的列表webpart,而且性能能控制在几秒以内的,这样的webpart如何写,有没有谁做过类似案例,供参考一下,或无解,希望能给个答案?

    2009年3月28日 15:36
  • 案例我是没有了.

    不过可以给你个思路, 你这个web part就是简单的对SPList这个类的调用, 得到里面的items并显示.
    ItemCount 可以得到总记录数, 除以每一页显示数量就是页数.

    我不认为这个会有什么性能问题, 几秒之内肯定是没有问题的.

    -lambert


    上善若水
    2009年3月31日 13:21