注意这个功能在SQL2005后已经废弃,因为SQL2005会自动管理哪些表常驻内存。

将SQL Server数据表驻留内存是SQL Server提供的一项功能,在一般小型系统的开发过程中估计很少会涉及到。这里整理了相关文档资料,演示如何把SQL Server中一个表的所有数据都放入内存中,实现内存数据库,提高实时性。

1, DBCC PINTABLE

Marks a table to be pinned, which means Microsoft SQL Server does not flush the pages for the table from memory.

Syntax

DBCC PINTABLE ( database_id, table_id)

To determine the database ID, use the DB_ID function.

To determine the table ID, use the OBJECT_ID function.

注释

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 int

Use DATABASE_NAME

Set @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 int

Use DATABASE_NAME

Set @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_TableOption

Sets 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 marks the table as no longer RAM-resident. When enabled, marks 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, or1) 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

为什么我执行 Select ObjectProperty(Object_ID('Department'),'TableIsPinned') 总是返回0,从来没成功过?

经过查询,原来这个功能在2005版本中就废弃了

SQL Server 2005 中不支持 SQL Server 早期版本的这些数据库引擎功能。

类别废止的功能替代功能

备份和还原

命名管道备份设备。

磁盘或磁带设备。

出于安全原因,SQL Server 不支持对命名管道的备份。

命令提示实用工具

isql 实用工具

使用 sqlcmd 实用工具。

sqlcmd 和 osql 实用工具不支持将存储过程返回值传递给退出值。

注意:

有关详细信息,请参阅 sqlcmd 实用工具。

配置选项

sp_configure 的 'allow updates' 选项。

存在该选项但不支持对系统表直接更新

配置选项

sp_configure 的 'open objects' 选项。

存在该选项,但其功能已停用。在 SQL Server 2005 中,打开的数据库对象的数量是动态管理的,该数量只受可用内存的限制。sp_configure 中保留了 'open objects' 选项,以确保向后兼容现有脚本。

配置选项

sp_configure 的 'set working set size' 选项

存在该选项,但其功能已停用。

数据库创建

DISK INIT

DISK RESIZE

来自 SQL Server 6.x 的早期行为

数据库创建

CREATE DATABASE 的 FOR LOAD 选项

RESTORE 操作可创建数据库

DBCC

DBCC DBREPAIR

使用 DROP DATABASE 可以删除已损坏的数据库。

DBCC

DBCC NEWALLOC

DBCC CHECKALLOC

DBCC

DBCC PINTABLE,DBCC UNPINTABLE

无。

DBCC

DBCC ROWLOCK

行级锁定为自动。

DBCC

DBCC TEXTALL

DBCC TEXTALLOC

DBCC CHECKDB

DBCC CHECKTABLE

扩展存储过程编程

当存在来自原始登录的模拟上下文切换时,请使用 SRV_PFIELD 结构中的 SRV_PWD 字段。

无。

网络协议

以下协议:NWLink IPX/SPX、AppleTalk、Banyan Vines 和多协议。

将您的应用程序和数据库引擎的实例配置为使用以下受支持的协议之一:TCP/IP 套接字、named pipes、VIA 或 shared memory。

有关详细信息,请参阅选择网络协议。

重新生成 master

Rebuildm.exe

在 Setup.exe 中使用 REBUILDDATABASE 选项。

示例数据库

Northwind 和 pubs

使用 AdventureWorks;但是,可通过下载或从 SQL Server 的早期版本中复制而得到 Northwind 和pubs。

有关详细信息,请参阅示例和示例数据库。

Setup.exe

远程安装 - 不支持 TARGETCOMPUTER 参数。

使用远程连接以用户界面模式或从命令行提示符运行 SQL Server 安装程序。

API

SQL 命名空间 API (SQL-NS)

Transact-SQL

*= 和 =* 外部联接运算符

使用 FROM 子句的 JOIN 语法。

虚拟表

syslocks

sys.dm_tran_locks

mysql 让表驻留内存_[转]如何将SQL Server表驻留内存和检测相关推荐

  1. SQL Server资源管理之内存管理篇(上)

    对SQL Server来说,最重要的资源是内存.Disk和CPU,其中内存又是重中之重,因为SQL Server为了性能要求,会将它所要访问的数据全部(只要内存足够)放到缓存中.这篇就来介绍SQL S ...

  2. sql 缓冲池_监视SQL Server中的内存文员和缓冲池分配

    sql 缓冲池 The following article applies to SQL Server versions 2008 + 以下文章适用于SQL Server 2008 +版本 Adequ ...

  3. SQL Server中的内存优化表变量

    This article will cover the usage details and performance advantages of the memory-optimized table v ...

  4. sql server表分区_介绍分区表SQL Server增量统计信息

    sql server表分区 If you are maintaining a very large database, you might be well aware of the pain to p ...

  5. SQL Server表分区的NULL值问题

    原文:SQL Server表分区的NULL值问题 SQL Server表分区的NULL值问题 SQL Server表分区只支持range分区这一种类型,往往会被大家吐槽 人家MySQL支持四种类型:R ...

  6. sql server表分区_SQL Server中的FORCESCAN和分区表

    sql server表分区 I would like to share one curios case that I recently came across. 我想分享一下我最近遇到的一个古玩案例. ...

  7. 用sql改oracle表结构,SQL server 表结构转Oracle SQL脚本

    SQL server 表结构转Oracle SQL脚本 /****** Object: StoredProcedure [dbo].[getOracle] Script Date: 2019/7/25 ...

  8. SQL Server 表分区实战系列(文章索引)

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 前言(Introduction) 实战说明(In Action) 表分区逻辑结构图(Construction) 表分区学 ...

  9. 在一个SQL Server表中的多个列找出最大值

    在一个SQL Server表中一行的多个列找出最大值 有时候我们需要从多个相同的列里(这些列的数据类型相同)找出最大的那个值,并显示 这里给出一个例子 IF (OBJECT_ID('tempdb..# ...

  10. SQL SERVER占用服务器内存过高的解决方案

    SQL SERVER占用服务器内存过高的解决方案 参考文章: (1)SQL SERVER占用服务器内存过高的解决方案 (2)https://www.cnblogs.com/purple5252/p/1 ...

最新文章

  1. 进程间通信(三)—信号量
  2. Git学习系列之Windows上安装Git之后的一些配置(图文详解)
  3. [转]C#异步编程的实现方式(1)——异步委托
  4. JQuery知识点汇总
  5. JAVA——基于simple-robot 机器人的定时任务事件提醒解决方案
  6. Python技术分享:Python学习的一些小技巧
  7. 计算机组装与维护 授课计划,计算机课程教学计划
  8. 2019年3月前端面试题
  9. post multipart/form-data 类型表单如何获取File外其他参数
  10. POJ2559 Largest Rectangle in a Histogram(单调栈)
  11. Codeforces Round #764 (Div. 3)
  12. LeetCode 265. 粉刷房子 II(DP)
  13. Leetcode PHP题解--D29 973. K Closest Points to Origin
  14. 图像领域深度学习的七个境界
  15. Node.js压缩与解压数据
  16. Kubernetes 证书过期
  17. “球鞋一面墙,堪比一套房” 央视评炒鞋乱象:呼吁“鞋穿不炒”
  18. 交互式地图_张晟推出学校资源交互式地图工具
  19. Web项目之Flask框架
  20. Security+ 学习笔记54 安全政策

热门文章

  1. mac 下 vagrant 报 “failed to open /dev/vboxnetctl“ 错误解决
  2. 【极客营】Hibernate完成CRM的联系人的保存操作-需求分析
  3. BS1071-基于javaweb+springboot实现医疗健康档案大数据采集清洗数据分析可视化系统
  4. Python+matplotlib绘制柱状图并设置坐标轴有效刻度
  5. 一名程序员十年技术之路的思考与感悟
  6. 【跳槽宝典】第一期 | 辞职的正确姿势
  7. 全球第一台双折叠手机惊艳亮相:由小米打造,量产还需时日...
  8. java战士对打_两人对打用java switch-case while编写
  9. 1118选票以及点名问题。
  10. http://39.98.219.132 题库标准答案(题库序号:527)之选票统计