浅析数据库引擎

上传人:mg****85 文档编号:49590843 上传时间:2018-07-31 格式:PPTX 页数:13 大小:192.55KB
返回 下载 相关 举报
浅析数据库引擎_第1页
第1页 / 共13页
浅析数据库引擎_第2页
第2页 / 共13页
浅析数据库引擎_第3页
第3页 / 共13页
浅析数据库引擎_第4页
第4页 / 共13页
浅析数据库引擎_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《浅析数据库引擎》由会员分享,可在线阅读,更多相关《浅析数据库引擎(13页珍藏版)》请在金锄头文库上搜索。

1、浅析SQLServer数据库引擎科大讯飞移动互联 凌军 2011年06月20日一、 数据库历史简介二、 SQLServer产品历史简介三、 SQLServer 2008体系结构简介四、 SQLServer 2008数据库引擎浅析五、SQLServer2008执行模型六、结合实例进一步剖析七、思考主要内容一、数据库历史简介第一阶段:人工管理阶段第二阶段:文件管理阶段第三阶段:数据库管理阶段层次数据库(IMS)网状数据库(IDS)关系数据库(Oracle,DB2,SyBase,SQLServer)图灵奖获得者:Bachman:网状数据库之父(设计开发IDS,提交DBTG报告)E.F.Codd:关系

2、数据库之父(关系模型理论)Jim Gray:SQL之父(SQL语言,事务处理技术)二、 SQLServer产品历史时间版本说明1986年-当时微软已和IBM合作开发OS/2操作系统,但由于缺乏数据库的管理工具,而IBM也打算将 其数据库工具放到OS/2中销售之下1987年-Sysbase开发出Unix系统下运行的SQL Server版本1989年SQL Server 1.0为了与IBM竞争,SQL Server 由微软与Sybase共同开发,获得Ashton-Tate的支持,运行 于OS/2平台。1993年 (1993-09-14)SQL Server 4.2一个桌面数据库系统,包含较少的功能

3、。与Windows集成并提供了易于使用的用户界面,运 行于Windows NT平台1995年SQL Server 6.0Microsoft重写了大部分核心的系统。提供了一个低价的小型商业应用数据库方案。1996年 (1996-04-16)SQL Server 6.5此版本带来了显著的性能提升并且提供了多种有益的功能。 1998年 (1998-11-16)SQL Server 7.0完全重写了核心数据库引擎,提供中小型商业应用数据库方案,包含了初始的Web支持。 SQL Server从这一版本起得到了广泛应用。1999年SQL Server 7.0 OLAP工具首次引入OLAP工具2000年 (

4、2000-08-07)SQL Server 2000此款产品被微软定义为企业级数据库系统,其包含了三个组件(DB, OLAP, English Query)。丰富的前端工具,完善的开发工具,以及对XML的支持等,促进了该版本的推广和 应用2003年 (2003-04-24)SQL Server 2000 ,64 位 版本已经和Unix/Linux的Oracle形成竞争2005年 (2005-11-07)SQL Server 2005是一个全面的数据库平台,使用集成的商业智能 (BI) 工具提供了企业级的数据管理。SQL Server 2005 数据库引擎为关系型数据和结构化数据提供了更安全可靠

5、的存储功能,使您可 以构建和管理用于业务的高可用和高性能的数据应用程序2008年 (2008-08-07)SQL Server 2008SQL Server 2008可为关键业务应用提供可信赖的、高效的、智能的平台,支持基于策略的 管理、审核、大规模数据仓库、空间数据、高级报告与分析服务等新特性2010年 (2010-04-21)SQL Server 2008 R2SQL Server 2008 R2新增了大量重要功能,在性能和可扩展性方面也有了极大提升三、 SQLServer 2008体系结构简介数据库引擎是用于存储、处理和保护数据的核心服 务。数据库引擎提供了受控访问和快速事务处理,以满

6、足企业内最苛刻的数据消费应用程序的要求。数据库引 擎还提供了大量的支持以保持高可用性。Analysis Services(多维数据) 允许您设计、创 建和管理包含从其他数据源(如关系数据库)聚合的数 据的多维结构,从而实现对 OLAP 的支持。Analysis Services(数据挖掘) 使您可以设计、 创建和可视化数据挖掘模型。通过使用多种行业标准数 据挖掘算法,可以基于其他数据源构造这些挖掘模型。Integration Services 是一个生成高性能数据集 成解决方案的平台,其中包括对数据仓库提供提取、转 换和加载 (ETL) 处理的包。复制是一组技术,用于在数据库间复制和分发数据

7、和数据库对象,然后在数据库间进行同步操作以维持一 致性。使用复制时,可以通过局域网和广域网、拨号连 接、无线连接和 Internet,将数据分发到不同位置以及 分发给远程用户或移动用户。Reporting Services 提供企业级的 Web 报表功能 ,从而使您可以创建从多个数据源提取数据的表,发布 各种格式的表,以及集中管理安全性和订阅。Service Broker 帮助开发人员生成安全的可缩放 数据库应用程序。这一新的数据库引擎技术提供了一个 基于消息的通信平台,从而使独立的应用程序组件可作 为一个工作整体来执行。Service Broker 包括可用于异 步编程的基础结构,该结构可用

8、于单个数据库或单个实 例中的应用程序,也可用于分布式应用程序。四、 SQLServer 2008数据库引擎浅析1、最简单的查询语句是怎么运行的?select * from Test2、最简单的插入语句是怎么运行的?insert into Test (Name) values(test)要敢于去“打开盒子”,看里面到底是什么查询优化器命令分析器查询执行器SNISQL管理器数据库 管理器存取方法缓冲区 管理器事务管理器数据文件事务 文件死锁监视器资源管理器惰性写入器调度器 监视器锁管理器服务同步调度内存管理器I/O执行计划缓存数据缓存区关系引擎存储引擎SQL OS协议层SQL Server 网络接

9、口缓冲池查询树执行计划TDSSQL命令查询处理过程:分析绑定优化执行命令分析器分析:从语法库中检查T-SQL进行基本的语法检查。 绑定:1、名字解析:检查所有的对象在用户的安全上下文中存在并可见。2、类型推导:确定解析树中每个节点的最终类型。 3、聚合绑定:确定哪些地方可以进行聚合。4、组合绑定:将聚合绑定到正确的选择列表中。 优化:1、预优化:查询语句很简单,开销足够小,直接结束优化。比如没有联接的基本 查询。属于零开销,称为普通计划。2、阶段0:检验基本规则,以及散列和嵌套联接选项。这个计划的开销是否小于 0.2,如果是,结束优化。3、阶段1:检验更多的规则,以及变换联接的顺序。如果开销最

10、小的计划的开销小 于1.0,如果是,结束优化。如果不是,继续判断。如果maxdop0且这个系统是SMP系 统,以及最小开销大于并行化的开销临界值,则使用并行计划。比较并行计划的开销和最 好的串行计划的开销,将开销更小的计划传递给阶段2。4、检验所有可能的计划,并且选择达到检验的时间限制时开销最小的计划。 执行:这个计划被调度执行,后面详细说明。查询树较好的 查询计划查询优化器查询最容易 出现瓶颈的 地方在哪?插入处理过程:写事务日志接收写请求日志管理器插入缓冲池访问方法缓冲区管理器写入数据文件惰性写入器检查点写事务日志:数据修改事务中唯一一个总是需要写入磁盘的操作。并不是修改查询语句的 清单,

11、而是修改操作发生之后数据页面的具体变化。是由日志管理器完成。 接收写请求:一旦访问方法接收到确认信息,就会接收写请求,将写请求发送缓存区管理 器。 插入缓冲池:缓冲区管理器在内存中插入数据,插入成功后将确认结果发送给访问方法, 最终确认结果到达客户端。 写入数据文件:这个步骤可以由两个组件任何一个完成。惰性写入器线程定期检查空闲缓 冲列表的大小,当这个值过低的时候,惰性写入器会扫描整个数据缓存,将所有一段时间 没被使用的页面老化。如果找到一段时间没有被使用的脏页,惰性写入器则将其写入磁盘 ,然后将这个页面的内存空间标记为空闲空间。检查点是检查点线程创建的一个时间点, 将保证脏页写入磁盘,并且在

12、页面头将缓存中的这个页面标记为干净的页面。确认成功写请求插入最容易 出现瓶颈的 地方在哪?SQL OSOS调度器调度器调度器五、SQLServer2008执行模型SQLOS本质是SQL Server的资源管理器。SQLOS为服务器上每个逻 辑CPU创建一个调度器,然后将工作线程均匀地分布在每个调度器 上,在任何一个时间点上,一个调度器上只能有一个工作线程执 行。不能替代Windows,不是操作系统的抽象层,因为最终还要依 赖Windows服务,属于瘦用户模式层,和.net的clr不是一个级别。工作线程等待线程可运行线 程I/O线程定时器列 表进行I/O操作等待定时器等待请求资源(如锁 )SQL

13、 Server使用的是非抢占式调度模型,除了不是SQL Server的代 码(如CLR代码、扩展存储过程),这种情况会给任务打上标记, 表明这些任务需要抢占式调度。为什么采用 是非抢占式 调度模型?六、结合实例进一步分析通过什么能分析呢? 1、保证环境干净select * from sys.dm_exec_connectionscross apply sys.dm_exec_sql_text(most_recent_sql_handle) 2、查询:select * from testcheckpoint -检查点dbcc dropcleanbuffers -清空干净的数据页缓存dbcc fr

14、eeproccache -清空计划缓存select * from sys.dm_os_buffer_descriptors where database_id = db_id(Test)-查询数据缓存区select * from sys.dm_exec_cached_plans cross apply sys.dm_exec_sql_text(plan_handle)查询执行计划缓存set statistics profile或者默认Ctrl + L 执行计划查看set statistics io set statistics time 3、插入:insert into test(name)

15、values(kk)dbcc sqlperf(logspace) -查看日志大小dbcc loginfo(Test) -查看虚拟日志dbcc ind(Test, test, -1) -查找该表第一个页dbcc traceon (3604) -开启跟踪,dbcc page将结果输出到客户端dbcc page(Test,1,89,3) -输出最详细的页面内容dbcc traceon(3502) -开启跟踪标志,在错误日志中记录了检查点的开始和结束位置 4、执行select scheduler_id,cpu_id,parent_node_id,current_tasks_count,runnable

16、_tasks_count,current_workers_count,active_workers_count,work_queue_count from sys.dm_os_schedulers;-查看调度器select * from sys.dm_os_workers -每个调度器工作线程select * from sys.dm_os_waiting_tasks 等待列表中正在等待的任务select * from sys.dm_exec_requests -可运行列表中等待CPU的任务dbcc sqlperf(umsstats) -线程管理情况的统计信息七、思考结合以上内容思考数据库常用优化有哪些 ?

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号