关于sql server 2005的索引和缓存

xiaomifeng007 2008-12-20 11:13:44
关于sql server 2005的索引和缓存的关系疑问
测试:win2003 ,sql server2005,200w数据查询其中一条
sql语句:
SELECT *
FROM T
where
pkid='1c0fe631-dccb-4a90-b2f6-d09e8663477c' and
fkid='503411c4-958b-480f-9929-8fa98a7c4a05'
1. 表无主键,无索引, pkid不为空:700ms
2. 表无主键,fkid非聚集索引,pkid不为空:第一次查询,15000ms,以后15ms左右
3. 表无主键,fkid非聚集索引,pkid不为空:
dbcc freeproccache
dbcc dropcleanbuffers
每次都是25000ms左右。

疑问:
1. 建立完毕的索引(建索引大约用来两三分钟)和缓存还有关系吗?
2. 针对测试2的第一次查询(15000ms)为什么会比测试1(700ms)大那么多?
3. 测试3,清空缓存以后,执行语句索引为什么不起作用?
...全文
98 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ny-6000 2008-12-20
  • 打赏
  • 举报
回复
可能会定期重建,或被清空的。
xiaomifeng007 2008-12-20
  • 打赏
  • 举报
回复
谢谢“龟”大侠,我还是再去仔细研究一下索引和缓存的机制吧
dawugui 2008-12-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xiaomifeng007 的回复:]
不明白,还请不吝赐教,索引不是建在物理磁盘上的吗,怎么还和缓存有关呢
[/Quote]
你对人的记忆不是已经在脑海中了吗?(可你的脑海中不止对他一个人的记忆)

所以你看到他时得把有关他的信息从脑海中提取出来.其他的人的信息得暂时屏蔽.
zhuxianzhu 2008-12-20
  • 打赏
  • 举报
回复
缓存跟磁盘也有关
xiaomifeng007 2008-12-20
  • 打赏
  • 举报
回复
不明白,还请不吝赐教,索引不是建在物理磁盘上的吗,怎么还和缓存有关呢
dawugui 2008-12-20
  • 打赏
  • 举报
回复
你认识一个人十年了,现在每次见到他,你就知道他的相关信息,不用去了解,不用问别人.
但是你某天失去记忆了,再看到他,得又花十年才能知道他的相关信息.

不知道这么说,你能否明白.
mengxj85 2008-12-20
  • 打赏
  • 举报
回复
Mark
w2jc 2008-12-20
  • 打赏
  • 举报
回复
如果LZ对这种细节很关心的话,应该仔细去研究一下SQL Server的I/O方面的资料

你能观察到这么大的区别主要是因为你的表记录有200万,小表上看不到这些区别。
这的确是因为MSSQL缓冲了不少东西。

1. 建立完毕的索引(建索引大约用来两三分钟)和缓存还有关系吗?
---------------------------------------------------------
索引和缓存没有直接关系。索引在磁盘上,缓存在内存中。
但是..... MSSQL在读索引的过程中会把最近读的东西放在缓存里面,
这也包括索引数据,这个时候两者又是有关系的。

2. 针对测试2的第一次查询(15000ms)为什么会比测试1(700ms)大那么多?
---------------------------------------------------------
MSSQL对于有索引的表,会试图优化查询(很慢的一个步骤),
然后在读索引的过程中会把最近读的东西放在缓存里面,
所以第一次有点慢,因为优化索引和读I/O都是最慢的。
第二次就非常快,因为都在内存里面了,不用执行I/O。

3. 测试3,清空缓存以后,执行语句索引为什么不起作用?
---------------------------------------------------------
清空缓存之后,MSSQL又要执行I/O去读索引文件,所以又很慢。
你的例子中,dbcc dropcleanbuffers 和你的测试没有什么关系。


1. 表无主键,无索引, pkid不为空:700ms
2. 表无主键,fkid非聚集索引,pkid不为空:第一次查询,15000ms,以后15ms左右
---------------------------------------------------
你这两个测试结果里面,第一个因为没有索引,所以MSSQL应该直接用“全表扫描”去找记录,
但是我也不太清楚为什么会只需要700ms(如果有200万记录的话)
第二种情况呢,MSSQL会先试图优化SQL(这也很花时间),然后去读索引文件,所以第一次很慢。
看你fkid,pkid数据,就像UUID一样的值,这样的数据建出来的索引文件比较大,这可能是比较慢的原因。

SQL Server 2005微软官方权威参考书.   公球公认SQL Server 2005 经典著作..   数据库“铁人”、微软MVP胡百敬先生鼎力推荐   微软SQL Server 总部Principal Group 项目经理朱凌志鼎力推荐   本书详细介绍了数据引擎的基础运作,包含了数据库的设定与数据实际在硬盘的摆放、索引结构、事务与锁定等。除了解释设计理念与运作原理外,还辅之以测试验证的方式。数据库开发者和管理员可从中获得最优的方法、务实的建议和实例代码来帮助他们掌握创建和维护企业级关系数据库所需的复杂技术。该书获得资深专家关于创建和维护健壮数据库的高屋建瓴般的视野和入木三分的剖析,十分适合有一定数据库基础的读者学习。 内容简介 本书是Inside Microsoft SQL Server 2000的作者Kalen Delaney的又一经典著作,是Inside Microsoft SQL Server 2005系列四本著作中的一本。本书对SQL Server 2005存储引擎方面的知识进行了全面而详细的阐述,包括数据库文件、日志和恢复、表、索引及其管理、锁定和并发等内容。除了解释设计理念与运作原理外,书中还辅之以大量简短而有力的实例。您将跟随一位广受欢迎的作家同时也是SQL Server资深专家一起深入探索SQL Server存储引擎的技术内幕。   本书适合于专业数据库开发者、BI开发者、DBA和以SQL Server作为后台数据库的一般应用程序开发者。本书不仅适合SQL Server 2005的初级读者,也适合SQL Server 2005的中高级读者。读者可以从中获得最优的方法、务实的建议和实例代码来帮助他们掌握创建和维护企业级关系数据库所需的复杂技术。本书是所有SQL Server 2005用户的案头必备之书。 作者简介 Kalen Delaney,她还是微软出版社inside SQL Sever丛书的编辑。她从1987年开始便一直从事SQL Server相关的工作,1995年被评为MVP(微软最有价值专家》。她同时也是Solid Quality Learning的首席顾问和创始人。除此之外,她还是SQL Server Magazine的优秀编辑和专栏作家,她还写作了大量的SQL Server类书籍,包括著名的Inside Microsoft SQL Server2000。 目录 前言 致谢 引言 第1章 SQL Server 2005 的安装与升级  1.1 SQL Server 2005安装前提   SQL Server 2005 版本   软件要求   硬件要求  1.2 安装前决策   安全性和用户上下文   字符与排序规则   排序次序   安装SQL Server的多个实例   安装SQL Server命名实例  1.3 做好安装准备   SQL Server 2005升级向导  1.4 迁移还是升级   迁移   升级   升级后的操作  1.5 选择组件   SQL Server数据库服务(数据库引擎)   Analysis Services   Reporting Services   Notification Services   Integration Services   工作站组件、联机丛书及开发工具  1.6 小结 第2章 SQL Server 2005体系结构  2.1 SQL Server引擎组件   观测数据库引擎行为   协议   表格格式数据流(TDS)端点   关系引擎   存储引擎   SQLOS  2.2 内存   缓冲池和高速数据缓冲区   访问内存中的数据页   管理数据高速缓冲区中的页面   检查点   管理其他高速缓存中的内存   调节内存大小   调节缓存池大小  2.3 小结 第3章 SQL Server 2005的配置  3.1 使用SQL Server 配置管理器   配置网络协议   默认的网络配置   管理服务  3.2 系统配置   任务管理   资源分配   系统分页文件的位置   非必需的服务   网络协议   与SQL Server 早期版本之间的兼容性   跟踪标记(Trace Flags)   SQL Server 的配置设定   内存选项   调度选项(Scheduling Options)   磁盘I/O 选项   查询处理选项   默认跟踪(Default Trace)  3.3 小结 第4章 数据库和数据库文件 第5章 日志和恢复 第6章 表 第7章 索引的内部构造和管理 第8章 锁定和并发

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧