DBCC PINTABLE ( database_id , table_id ) 

解决方案 »

  1.   

    当表中的页由普通的 Transact-SQL 语句读入到高速缓存中时,这些页将标记为内存驻留页。当 SQL Server 需要空间以读入新页时,不会清空内存驻留页。SQL Server 仍然记录对页的更新,并且如有必要,将更新的页写回到磁盘。然而,在使用 DBCC UNPINTABLE 语句使该表不驻留之前,SQL Server 在高速缓存中一直保存可用页的复本。
    DBCC PINTABLE 最适用于将小的、经常引用的表保存在内存中。将小表的页一次性读入到内存中,将来对其数据的所有引用都不需要从磁盘读入。
    注意  DBCC PINTABLE 可以提供性能改进,但是使用时务必小心。如果驻留大表,则该表在开始时会使用一大部分高速缓存,而不为系统中的其它表保留足够的高速缓存。如果所驻留的表比高速缓存大,则该表会填满整个高速缓存。sysadmin 固定服务器角色的某个成员必须关闭而后重新启动 SQL Server,然后使表不驻留。驻留太多的表和驻留比高速缓存大的表会产生同样的问题。 
      

  2.   

    DBCC UNpintatble (@db_id, @tbl_id)可将表Department取消设置为驻留内存。
    可以使用如下的SQL指令来检测执行情况:Select ObjectProperty(Object_ID('Department'),'TableIsPinned')如果返回结果为1:则表示该表已经设置为驻留内存;0:则表示没有设置为驻留内存。
      

  3.   

    第二办法 : SP_TableOption
    你查相应 的帮助 ,
    检查 也可以 用ObjectProperty(Object_ID('Department'),'TableIsPinned') 
      

  4.   

    DBCC PINTABLE 不会导致将表读入到内存中。当表中的页由普通的 Transact-SQL 语句读入到高速缓存中时,这些页将标记为内存驻留页。当 SQL Server 需要空间以读入新页时,不会清空内存驻留页。SQL Server 仍然记录对页的更新,并且如有必要,将更新的页写回到磁盘。然而,在使用 DBCC UNPINTABLE 语句使该表不驻留之前,SQL Server 在高速缓存中一直保存可用页的复本。 DBCC PINTABLE 最适用于将小的、经常引用的表保存在内存中。将小表的页一次性读入到内存中,将来对其数据的所有引用都不需要从磁盘读入。 注意  DBCC PINTABLE 可以提供性能改进,但是使用时务必小心。如果驻留大表,则该表在开始时会使用一大部分高速缓存,而不为系统中的其它表保留足够的高速缓存。如果所驻留的表比高速缓存大,则该表会填满整个高速缓存。sysadmin 固定服务器角色的某个成员必须关闭而后重新启动 SQL Server,然后使表不驻留。驻留太多的表和驻留比高速缓存大的表会产生同样的问题。 
     示例:Declare @db_id int, @tbl_id intUse DATABASE_NAMESet @db_id = DB_ID('DATABASE_NAME')Set @tbl_id = Object_ID('Department')DBCC pintable (@db_id, @tbl_id)可将表Department设置为驻留内存。 Declare @db_id int, @tbl_id intUse DATABASE_NAMESet @db_id = DB_ID('DATABASE_NAME')Set @tbl_id = Object_ID('Department')DBCC UNpintable (@db_id, @tbl_id)可将表Department取消设置为驻留内存。 可以使用如下的SQL指令来检测执行情况:Select ObjectProperty(Object_ID('Department'),'TableIsPinned')如果返回结果为1:则表示该表已经设置为驻留内存;0:则表示没有设置为驻留内存。 2, SP_TableOptionSets option values for user-defined tables. sp_tableoption may be used to turn on the text in row feature on tables with text, ntext, or image columns.Syntax
    sp_tableoption [ @TableNamePattern = ] 'table' 
        , [ @OptionName = ] 'option_name' 
        , [ @OptionValue = ] 'value' 其中,'option_name' 有如下用法:pintable  -- When disabled (the default), it s the table as no longer RAM-resident. When enabled, s the table as RAM-resident. (可将指定的表驻留内存)另外,table lock on bulk load, insert row lock, text in row等等可选值,因不涉及将表驻留内存,具体用法可以查询SQL Server Books Online.Value有如下用法:the option_name is enabled (true, on, or 1) or disabled (false, off, or 0) 示例:EXEC sp_tableoption 'Department','pintable', 'true' 将数据表Department驻留内存EXEC sp_tableoption 'Department','pintable', 'false'取消数据表Department驻留内存 可以使用如下的SQL指令来检测执行情况:Select ObjectProperty(Object_ID('Department'),'TableIsPinned')如果返回结果为1:则表示该表已经设置为驻留内存;0:则表示没有设置为驻留内存。 3. Conclusions将数据表设置为驻留内存时,并没有实际将表读入内存中,直到该表从被检索。因此,可以使用如下SQL指令进一步将数据表Department驻留内存:Select * From Department 另外,可以使用如下SQL指令方便显示/检测数据库Database中所有设置为驻留内存的表:SELECT * FROM INFORMATION_SCHEMA.Tables WHERE TABLE_TYPE = 'BASE TABLE'           AND OBJECTPROPERTY(object_id(TABLE_NAME), 'TableIsPinned') > 0
      

  5.   

    dbcc的方法有一定危险性,慎用