큰 목록에서 목록 보기 임계값을 임시로 사용하지 않도록 설정
큰 목록에서 목록 보기 임계값을 임시로 사용하지 않도록 설정
본문:
SharePoint 2010에는 일부 사용자가 잘못 수행한 많은 비용이 드는 작업으로부터 서버 및 다른 사용자를 보호하기 위해 몇 가지 새로운 제한이 추가되었습니다. SharePoint 2010 경계 및 제한의 전체 목록을 보려면 여기(https://technet.microsoft.com/ko-kr/sharepoint/ff601870.aspx)를 클릭하십시오. 다양한 제한의 의미에 대한 자세한 내용을 확인하려면 여기를 클릭하여 도움말 항목 https://office2010.microsoft.com/ko-kr/sharepoint-server-help/HA010378155.aspx을 읽어 보십시오. 큰 목록을 관리하는 데 도움이 되는 기능 및 관련된 최상의 방법에 대한 자세한 내용은 백서 큰 목록 디자인 및 목록 성능 극대화(영문일 수 있음)(https://technet.microsoft.com/ko-kr/library/ff608068.aspx)를 참조하십시오.
목록 보기 임계값은 각 웹 응용 프로그램의 "리소스 제한" 설정에 속하는 임계값의 하나로, 중앙 관리에서 관리할 수 있습니다. 기본적으로 5,000으로 설정되어 한 번에 5,000개가 넘는 항목을 처리하려고 하는 보기 또는 쿼리는 SharePoint 서버에서 차단됩니다. 예를 들어 목록에서 5,001개의 항목이 포함된 인덱싱되지 않은 열을 필터링하는 보기를 실행하면 목록 보기 임계값에 의해 쿼리가 차단되었음을 알리는 메시지가 표시되며 일별 기간이 설정되어 있는 경우에는 메시지에 이 작업을 수행할 수 있는 시간도 명시됩니다.
업그레이드 직후 일부 사용자는 기존의 보기를 통해 데이터에 액세스할 수 없는 경우가 발생할 수 있는데, 원하는 방식(예: "색상"이라는 열을 기준으로 정렬)으로 데이터에 액세스하려면 큰 목록에 인덱스를 추가해야 합니다. 하지만 계속해서 목록 보기 임계값 제한에 대해 실행하므로 다음과 같이 하지 않으면 이 작업을 수행할 수 없습니다.
- 관리자가 설정한 일별 기간까지 기다립니다(모두 설정 및 사용하도록 지정된 상태인 경우). 일별 기간은 조직의 "사용량이 많지 않은 시간대"로 가장 적합한 기간을 파악하기 위해 관리자가 의도적으로 결정해야 하기 때문에 기본적으로 설정되지 않습니다. 이는 권장되는 작업 과정이지만 사용자가 해당 데이터에 즉시 액세스할 수 있어야 하는 상황에서는 이렇게 하는 것만으로는 부족한 경우도 있습니다.
- 큰 목록이 있는 모든 사용자가 모든 보기에 액세스할 수 있도록 팜 관리자가 목록 보기 임계값을 매우 높은 수치로 올립니다. 이렇게 하면 서버의 상태 및 안정성에 높은 위험이 발생하므로 권장되지 않습니다. 또한 적은 수의 사용자가 큰 목록을 가지고 있는 경우에는 문제를 해결하는 것이 아니라 다른 모든 사용자에 대해 문제를 발생시키고 보기 및 쿼리의 구조를 열악하게 만들 수도 있습니다.
- 관리자가 사용자의 특정 목록에 목록 보기 임계값에 대한 임시 예외를 부여합니다. 이 예외는 프로그래밍 방식으로만 실행할 수 있습니다. 이 게시물에서는 이를 수행하는 방법과 사용자에 대해 지정한 기간이 끝나면 예외를 제거하는 방법을 소개하겠습니다. 이 예외는 매우 보수적으로 부여하는 것이 좋으며 필요 이상으로 유지해서는 안 됩니다. 대부분의 경우 사용자에게 일주일의 기간 동안 보기 또는 사용자 지정 코드를 수정하도록 하면 충분하고도 남습니다.
특정 목록에 대해 목록 보기 임계값을 사용하지 않도록 설정하려면 개체 모델을 사용하여 목록의 "EnableThrottling" 속성을 false(기본값은 true)로 편집하면 됩니다. 아래 코드에서는 이를 특정 목록 하나에 대해 또는 특정 사이트에 속한 모든 목록에 대해 수행하는 방법을 보여 줍니다. 이러한 권한은 전체 사이트가 아닌 특정 목록에만 부여하는 것이 가장 좋습니다. 이를 세부적으로 제공하면 서버의 성능을 떨어뜨리는 원인을 손쉽게 추적할 수 있을 뿐 아니라 최종 사용자에게 목록을 최대한 신속하게 수정해야 하는 일의 중요성을 각인시킬 수 있기 때문입니다.
다음은 이러한 변경 작업을 수행하기 위해 SharePoint 팀의 테스터인 Chris Clark가 작성한 스크립트입니다. 변경 내용을 되돌리려면(예: 웹 내의 목록 또는 모든 목록에 대한 예외 제거) 다음 줄만 변경하면 됩니다.
$list.EnableThrottling = $false
다음으로 변경:
$list.EnableThrottling = $true
###########################################################################
# MakeExceptionLIst Script
# OnFailure: NONE
# OnSuccess: Changes SPList settings to make one or more lists under an SPWeb Exception Lists
#
# Input Parameters:
# - WebUrl ~ The URL of the SPWeb which contains the lists to be made exception lists
# - ListName (Optional) ~ The name of the list to make an exception list
#
# Ex:
# makeexceptionlist.ps1 -WebUrl https://localhost -ListName "Shared Documents"
# makeexceptionlist.ps1 -WebUrl https://localhost/sites/site1 -ListName "*"
#
# Exit code rule:
# On success, exit 0
# On failure, if no other scripts depend on this, exit a none-zero value
#
# Do not use "return" to give the caller exit code, as this cannot be
# captured by the caller process.
###########################################################################
Param([string]$WebUrl = "", [string]$ListName = "")
# Add Sharepoint pssnapin
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
###########################################################################
#
# Turn off/on list throttling on selected list
#
###########################################################################
Function UpdateList($list)
{
$listname = $list.Title
Write-Host "Making list $listname an exception list"
$list.EnableThrottling = $false
$list.Update()
}
###########################################################################
#
# Retrieve relevant objects (SPWeb, SPList) for operation and call Update
#
###########################################################################
$web = Get-SPWeb $WebUrl
if( $web -eq $NULL )
{
Write-Host "Web not found. Exiting"
exit 1;
}
if ( $ListName -eq "*" )
{
Write-Host "Locating all Lists under web..."
$lists = $web.Lists
foreach( $list in $lists )
{
UpdateList( $list )
}
}
elseif ( $ListName -ne "" )
{
Write-Host "Locating List < $ListName >..."
$list = $web.Lists[$ListName]
if ( $list -ne $NULL )
{
Write-Host "List found!"
UpdateList( $list )
}
else
{
Write-Host "List not found. Exiting"
exit 1;
}
}
else
{
Write-Host "Invalid List Name"
exit 1;
}
Write-Host "Done!"
exit 0;
###########################################################################
#
# End
#
###########################################################################
- Dina Ayoub
SharePoint 프로그램 관리자, Microsoft
게시일: 2010년 8월 15일 오후 11:40
이 문서는 번역된 블로그 게시물입니다. 원본 문서는 큰 목록에서 목록 보기 임계값을 임시로 사용하지 않도록 설정을 참조하십시오.