SQLUSA.com
SQL SERVER 2008 GRAND SLAM
FREE TRIAL  CLICK HERE TO ORDER  SEARCH
SQL JOBS SQL Server Training Scripts JOB BANK
  SQL Server 2008 Training Scripts  
  SQL Server 2005 Training Scripts  
News SQL Server Articles SQL Format

Microsoft SQL Server 2000 Articles

 


How to Pin a Table into Memory?
By Kalman Toth, M.Phil., M.Phil., MCDBA

February 28, 2005

While SQL Server 2000 has a sophisticated memory buffer management, it may lead to performance gain if we help out SQL server with something we know: keep TableX in memory all the time. The result will be that TableX pages will not be flushed out, whatever comes in, will stay in memory. If the table is used frequently, the result is improved performance.

This is the code sample:

use pubs
DECLARE @db_id int, @tbl_id int
SET @db_id = DB_ID('pubs')
SET @tbl_id = OBJECT_ID('pubs..authors')
DBCC PINTABLE (@db_id, @tbl_id)

This is the message:
Warning: Pinning tables should be carefully considered. If a pinned table is larger, or grows larger, than the available data cache, the server may need to be restarted and the table unpinned.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

We can check if a table is pinned or not by:

SELECT OBJECTPROPERTY(OBJECT_ID('pubs..authors'),'TableIsPinned')

Which returns 1 if pinned and 0 if not.


To see how many buffers are pinned execute:

DBCC memorystatus

The "inram" entry indicates the pinned tables buffer usage.


What happens if the table in memory grows too large? That is a real danger with pinning. Eventually over-pinning stops the server altogether. The overload sequence start with various strange server messages in the server log, all related to memory utilization.

This is the code sample to unpin a table:

use pubs
DECLARE @db_id int, @tbl_id int
SET @db_id = DB_ID('pubs')
SET @tbl_id = OBJECT_ID('pubs..authors')
DBCC UNPINTABLE (@db_id, @tbl_id)

For practical purposes, no more than half of the SQL server available memory should be used for pinning. Very frequently used tables should be pinned. Perfomance gain should be monitored. If no gain, pinning should be discontinued.

 

Order SQL 2008 GRAND SLAM Today!
SQLUSA.com Home Page
SQL Server Training at www.sqlusa.com.
SQL Server 2008 Video Training at www.sqlusa.com.
SQL Server 2005 Training Videos at www.sqlusa.com.
Microsoft SQL Server 2000 Training Videos at www.sqlusa.com.

FREE SQL & Business Intelligence / OLAP Short Videos on YOUTUBE.com

Microsoft Community Contributor 2011
Invest in Your SUCCESS!

Search SQLUSA FREE SQL Server Articles & FREE T-SQL Scripts


Copyright 2005-2011, SMI Corp. All Rights Reserved.

SQL Server 2012 is a program product of Microsoft Corporation.
SQL Server 2008 is a program product of Microsoft Corporation.
SQL Server 2005 is a program product of Microsoft Corporation.
SQL Server 2000 is a program product of Microsoft Corporation.