CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

请问,sqlserver把表全部装在到内存怎么装载。装载之后,跟把数据读到内存放到map里,然后map(key,vale)查找有什么区别

楼主wd_6532(用frontpage写asp,jsp,php,ace)2006-02-08 19:59:18 在 MS-SQL Server / 基础类 提问

请问,sqlserver把表全部装在到内存怎么装载。  
   
  装在之后的select语句,跟程序把数据读到内存放到map里,然后map(key,vale)查找,  
  哪个速度快,如果并发5000人访问,有区别吗。 问题点数:50、回复次数:21Top

1 楼zjcxc(邹建)回复于 2006-02-08 20:09:04 得分 1

--   定义一个表变量(变量是保存在内存中的,   除非你的内存不够)  
   
  DECLARE   @t   TABLE(.....   结构与你select的结果相同)  
   
  --   将select结果插入表变量(即是把select结果放入内在了)  
  INSERT   @t   SELECT   ....Top

2 楼libin_ftsafe(子陌红尘:TS for Banking Card)回复于 2006-02-08 20:11:12 得分 40

DBCC   PINTABLE?Top

3 楼wd_6532(用frontpage写asp,jsp,php,ace)回复于 2006-02-08 20:16:20 得分 0

以前就是用它   DBCC   PINTABLE  
   
  1     DBCC   PINTABLE之后,如果表被改变,那么select得到的是最新的数据吗?  
   
  2     DBCC   PINTABLE之后,   select   的速度快,还是从内存用map(key,value)的速度快。  
   
  3     表变量和DBCC   PINTABLE   有什么区别,哪种好。  
   
  Top

4 楼wd_6532(用frontpage写asp,jsp,php,ace)回复于 2006-02-08 20:19:33 得分 0

另外全局临时表是否也可以达到目的?Top

5 楼zjcxc(邹建)回复于 2006-02-08 21:44:21 得分 1

变量没有全局的,   只适用于当前过程.  
   
  如果楼主要多个过程共用,   则只能用   dbcc   pintable   的方法.Top

6 楼wd_6532(用frontpage写asp,jsp,php,ace)回复于 2006-02-08 21:58:05 得分 0

2   DBCC   PINTABLE之后,   select   的速度快,还是从内存用map(key,value)的速度快。  
   
  还是没有解决阿。Top

7 楼ReViSion(和尚)回复于 2006-02-08 22:21:58 得分 1

哈哈,帮UPTop

8 楼zhangyang555(张阳)回复于 2006-02-09 09:39:54 得分 1

gzTop

9 楼wd_6532(用frontpage写asp,jsp,php,ace)回复于 2006-02-09 10:24:42 得分 0

sqlserver   版的高手们呢?Top

10 楼javanow(骄子数据库技术网)回复于 2006-02-09 10:30:47 得分 1

sql   server会自己管理,如果你要找的数据在内存里,他就直接在内存里找。  
   
  如果表小,你select一次就全到内存里了。如果表大你的内存也足够大,dbcc   pintable  
   
  5000并发的访问?开什么玩笑,你的服务器能并发到5000?500都够怆。  
   
  你不用做什么MAP之类的特殊操作的,sql   server会自动帮管完成。  
   
  --------------------------  
  http://chinadba.cn  
  深圳骄子数据库服务网  
  最具实战经验的数据库优化、管理、设计、培训。Top

11 楼wd_6532(用frontpage写asp,jsp,php,ace)回复于 2006-02-09 16:03:24 得分 0

那就是说dbcc   pintable之后   select语句比   map速度快了.  
   
  那为什么我同事在做号段(8万条记录)匹配的时候,还要从内存里哈希,而不直接select?  
   
   
  100行数据选1行的selet,   2万的服务器每秒能执行多少次.  
   
  Top

12 楼wd_6532(用frontpage写asp,jsp,php,ace)回复于 2006-02-09 18:10:47 得分 0

upTop

13 楼javanow(骄子数据库技术网)回复于 2006-02-09 23:09:18 得分 1

100行的数据,select   1   次以后,以后就会在内存里,所以你select   时实际就是直接与内存打交道。  
   
  至于可以执行多少次,你做个在你服务器上做个循环测试下的。这样就可以比下谁快的。  
   
  我也希望有个最终的结果,希望楼主能公布一下。  
  --------------------------  
  http://chinadba.cn  
  深圳骄子数据库服务网  
  最具实战经验的数据库优化、管理、设计、培训。  
   
   
   
   
   
  Top

14 楼wd_6532(用frontpage写asp,jsp,php,ace)回复于 2006-02-09 23:25:05 得分 0

你是专门做数据库优化的,你有空就做一下吧,  
   
  我做的话容易不具有可比较性.Top

15 楼test2002(test2002)回复于 2006-02-10 10:53:09 得分 1

1     DBCC   PINTABLE之后,如果表被改变,那么select得到的是最新的数据吗?  
   
  2     DBCC   PINTABLE之后,   select   的速度快,还是从内存用map(key,value)的速度快。  
   
  3     表变量和DBCC   PINTABLE   有什么区别,哪种好。  
   
  ---------------------------------------------  
  看了sql   server帮助  
  1、好象不行哦,更新了表,内存没有同步更新哦,遗憾!  
  2、帮助上说,倒入内存的表不能太大,最好是比较小的表,这样导入速度才快。  
  3、表变量在7.0版没有,不过dbcc   pintable好象不够理想。  
  4、如果表查询不复杂,表很大,内存也很大,能装下表内容,个人感觉对于要频繁查询这个表的程序来说,特别是并发查询。不如放入内存,自己管理,采用平衡树的算法,肯定效率有大的提高。最好不要使用hash算法,对于大表来说,占内存大,而且效率也降低了。Top

16 楼test2002(test2002)回复于 2006-02-10 10:53:43 得分 1

1     DBCC   PINTABLE之后,如果表被改变,那么select得到的是最新的数据吗?  
   
  2     DBCC   PINTABLE之后,   select   的速度快,还是从内存用map(key,value)的速度快。  
   
  3     表变量和DBCC   PINTABLE   有什么区别,哪种好。  
   
  ---------------------------------------------  
  看了sql   server帮助  
  1、好象不行哦,更新了表,内存没有同步更新哦,遗憾!  
  2、帮助上说,倒入内存的表不能太大,最好是比较小的表,这样导入速度才快。  
  3、表变量在7.0版没有,不过dbcc   pintable好象不够理想。  
  4、如果表查询不复杂,表很大,内存也很大,能装下表内容,个人感觉对于要频繁查询这个表的程序来说,特别是并发查询。不如放入内存,自己管理,采用平衡树的算法,肯定效率有大的提高。最好不要使用hash算法,对于大表来说,占内存大,而且效率也降低了。Top

17 楼test2002(test2002)回复于 2006-02-10 10:58:47 得分 1

100行的数据,select   1   次以后,以后就会在内存里,所以你select   时实际就是直接与内存打交道。  
   
  至于可以执行多少次,你做个在你服务器上做个循环测试下的。这样就可以比下谁快的。  
   
  我也希望有个最终的结果,希望楼主能公布一下。  
   
  ------------------------------------------------------------------------  
  你说得不准确,我就做个测试,查了一个大表,用select查询用了5分钟,  
  然后使用同样的select查询,仍然用了5分钟(我的记录是千万行级别的)  
   
  所以和你说的出入很大,特别对于大表来说。Top

18 楼wd_6532(用frontpage写asp,jsp,php,ace)回复于 2006-02-11 00:02:10 得分 0

1、好象不行哦,更新了表,内存没有同步更新哦,遗憾!  
   
  ==============  
  我试了一下,dbcc   pintable没有报错,也就是成功了.  
   
  我改变表中的数据,然后select出来的是更新后的数据.Top

19 楼javanow(骄子数据库技术网)回复于 2006-02-11 10:21:12 得分 1

呵.如果你能把数据读出去放到别的机器上运算,当然推荐这样做.  
  因为至少分流了数据库压力.  
   
  数据库对运算不是很在行,它的长处在存取数据.  
   
  --------------------------  
  http://chinadba.cn  
  深圳骄子数据库服务网  
  最具实战经验的数据库优化、管理、设计、培训。Top

20 楼wd_6532(用frontpage写asp,jsp,php,ace)回复于 2006-02-14 11:53:45 得分 0

upTop

21 楼test2002(test2002)回复于 2006-02-16 08:54:26 得分 0

我试了一下,dbcc   pintable没有报错,也就是成功了.  
   
  我改变表中的数据,然后select出来的是更新后的数据.  
   
  --------------------------------  
  没从内存中读,从硬盘上读的,不奇怪!Top

相关问题

  • ORACLE与SQLSERVER触发器有何区别?
  • sql中sqlserver与oralce的区别,
  • java+sqlserver,用nvarchar和varchar有区别吗
  • oracle和sqlserver到底有什么区别?
  • oracle和sqlserver到底有什么区别?
  • SQLSERVER 和ACCESS的sql时间查询语句有区别吗?
  • 请高手解释一下oracle和SQLServer Sybase的区别,谢谢
  • 关于ACCESS和sQlserver,功能上的区别?
  • 关于vb中使用access和sqlserver的区别!?
  • 区别

关键词

  • 内存
  • 数据
  • 数据库
  • 查询
  • 算法
  • 优化
  • 服务器
  • 管理
  • 表
  • dbcc pintable

得分解答快速导航

  • 帖主:wd_6532
  • zjcxc
  • libin_ftsafe
  • zjcxc
  • ReViSion
  • zhangyang555
  • javanow
  • javanow
  • test2002
  • test2002
  • test2002
  • javanow

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo