升级SQL2005的直接益处
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
有大量的重编译的程序 大量使用触发器的程序
改进之处(续)
数据库的维护操作
DBCC,备份,索引
对问题的诊断和解决
DAC, DMVs, XML Plans
内容
全文检索 查询的优化 编译 统计信息 查询的执行 数据库可靠性检查 存储引擎 SQL Server的内部操作系统
全文检索
全文检索可以具有多个实例
RCSI原理
所有的delete,update都会做一个copy
非常高效 类似TPCC的工作都不受显著影响 如果数据更新量太大,可能有影响
copy存在版本库(version store)
在tempdb里
百度文库
Copy也可以读,不会阻塞 Version store 定期清理 考虑增加tempdb的size
聚集索引的重建
序言(续)
在下面将会介绍其中一些改进之处,我们 可以将其分为两类
你不需要做任何修改
如 执行DBCC命令
需要改变服务器或者数据库的设置
如统计因子的自动异步更新,RCSI
背景知识
最好有管理关系数据库的基本经验 最好有关系数据库的基本知识
改进之处
全文检索会更快
程序并发性能有很大提高(RCSI)
异步请求提高了分布式查询的性能 改善了以下应用程序的可扩展性
找到平均最耗时的query
sys.dm_db_file_space_usage sys.dm_db_session_space_usage
分析tempdb空间的使用
总结
SQL Server 2005 对现有应用的某些性能 有所提高,而且更加易于管理
全文检索,查询的优化 编译,统计信息 查询的执行 数据库可靠性检查 存储引擎 SQL Server的内部操作系统
序言
我们已经知道SQL Server™ 2005增加了很 多的新特性,可以提高性能,如
数据库镜像,分区表,CLR,Service Broker, VARCHAR(MAX),XML 数据类型等 但是,你必须修改或者重新编写你的代码才能 够获得这些好处
你是否知道SQL Server™ 2005还有很多的 改进,你不需要修改你的程序就可以从 中受益?
欢迎访问我的BLOG
http://blogs.msdn.com/weix/
中文 SQL Server 主页: http://www.microsoft.com/china/sql 其他相关讲座:
DAT239:SQL Server 2005数据仓库新功能
其他的网上资源(English)
1. SQL Server 2005
SQLOS
动态使用AWE内存 缓冲池(buffer pool)替换策略
能够更好的缓存正确的页
不变页的Sniffer
随机察看缓冲池中的页以察看checksum的变化
察觉可能的硬件问题
DAC管理员专用连接 死锁输出XML 每个批处理(batch)自动找到最空闲的CPU
锁定机制的性能提高
锁的内存更NUMA-aware 锁的分区
SQL2000重建和删除聚集索引会导致非聚集 索引的重建
如果聚集索引不是唯一的
SQL2005不再重建,缩短大量时间
我们保留了唯一标志以保证索引的正确
唯一标志(uniquifier) :自动添加的隐藏列
判断indroot 可以知道非聚集索引是否重建
索引管理
Defrag提高索引页的顺序性和连续性。
(a, 1) – (b, 2) – (c, 3) SQL2005的速度有显著提高。
更易于管理 全文检索同其它实例和产品隔离开来
全文目录可以备份/还原
分离/附加(attach/detach db)
填充全文索引:100倍的速度(依赖于数据) 全文查询:一般情况下快30-50%
查询的优化
索引视图查询性能的提高 更聪明的连接(join)处理:
R.x = S.x and S.x > 10 暗示了 R.x = S.x and S.x > 10 and R.x > 10
Read-committed-snapshot-isolation 大多数应用使用系统缺省:read-committed isolation 对大多数应用有帮助 需要数据库设置 READ_COMMITTED_SNAPSHOT 提高了并发性和可收缩性,减少了死锁 提高程序的可预见性(predictability)
数学运算查询的化简
如:a>3 and a>5 可以化简为a>5
编译
语句级别的重编译
SQL 2000是对整个批处理和存储过程的重编译
批处理(存储过程)
语句1 语句2
为何要重编译
表格里大量的数据更新(insert, update, delete) 统计信息更新 (update statistics)
统计信息的异步更新
问题?
Wei.Xiao@microsoft.com
可以同时备份数据和日志
Log Shipping 的日志备份不会被数据备份所 阻塞
RESTORE Verifyonly
全面检测备份的可靠性 执行时间可能延长
数据库恢复
Checkpoint
不断自我调整,快速且不影响前台操作 可中断的
快速恢复
在Undo阶段数据库就可用 仅企业版可用
RCSI
可提交-读-快照隔离
如分布式查询追踪和死锁通知
重建索引的操作相比SQL2000提升了性能的 伸缩性(offline)
触发器
触发器执行的更好
优于访问日志记录 避免了日志扫描(经常成为瓶颈) 在多重连接的情况下避免了重复扫描 更快,在高端系统上伸缩性更好
考虑增加tempdb的size
数据库结构的检查
DBCC CHECK*使用数据库快照以避免锁定 检查更加彻底 减少图像和文件占用的存储空间
Technet http://www.microsoft.com/technet/prodt echnol/sql
2. SQL Server 2005
网上实验室 http://msdn.microsoft.com/vstudio/tryi t/hosted/sql 3. SQL社区 http://www.microsoft.com/technet/prodt echnol/sql/community/default.mspx
DBCC SHRINK*, DBCC INDEXDEFRAG, ALTER INDEX REORGANIZE
DBCC CHECK*, DBCC SHRINK* 的进程报告
长时间运行的CHECK*, SHRINK* 操作会记录在 sys.dm_exec_requests中
内容
全文检索 查询的优化 编译 统计信息 查询的执行 数据库可靠性检查 存储引擎 SQL Server的内部操作系统
快速数据文件初始化
不需要全部用0填充空间 需要给服务帐号提供SE_MANAGE_VOLUME_NAME 的权限 需要Windows XP / 2003 对CREATE DATABASE , ALTER DATABASE, RESTORE, 文件增长性能有明显提升
DMV
帮助性能调优 sys.dm_exec_query_stats
Online 建索引
建索引的同时允许 INSERT, DELETE, UPDATE, SELECT 比offline要慢 考虑增加tempdb的size
内容
全文检索 查询的优化 编译 统计信息 查询的执行 数据库可靠性检查 存储引擎 SQL Server的内部操作系统
SQL Server 的内部操作系统
tempdb 的性能增强
tempdb 的可伸缩性得到了增强,支持更大 的工作量
缓存临时表和表变量(@t, #t) 改善了分配页(allocation page)的访问协议 减少tempdb日志产生的数量 对表中最初64KB更有效的分配算法
什么是分配页?
帮助空间管理的磁盘页(disk page)
备份
在OLTP系统中,统计信息的自动更新会导 致一个可察觉的停顿 解决方案:异步更新
ALTER DATABASE dbname SET AUTO_UPDATE_STATISTICS_ASYNC ON
执行计划使用了过期的统计信息,会导致 后台自动更新统计信息 执行计划不会停顿,但是会使用旧的统计 信息
sp_updatestats
把单个的锁资源划分为多个锁资源,每个CPU 一个 NL, Sch-S, IS, IU, IX模式的锁可以被单个 CPU获取 S, U, X, SCH-M模式的锁必须被所有的CPU获 取 在16个CPU以上的系统,分区会被默认打开
FILE I/O
Page Checksum 在新数据库上默认打开
提高可靠性
升级考虑事项
我的应用是否一定可以提高性能?
取决于具体应用,并非所有功能都有性能提高
对于某些设置的调整:
可能要增大tempdb 可能要增大内存
升级之前最好要测试
核心应用一定要测
遇到问题怎么办?
我常去的网上社区
microsoft.public.sqlserver.server microsoft.public.cn.sqlserver
DAT240
升级SQL2005的直接益处
肖维 Technical Lead SQL Server Engine Access Method 微软有限公司
自我介绍
Access Method负责的技术范围
数据的访问 (B TREE) 数据的检查 (DBCC CHECK) 数据的修理 (DBCC REPAIR) 图像和文件的存储 (TEXT/IMAGE/VARCHAR) 数据的可靠性:事务管理 数据文件空间管理 (FILE SPACE) 临时数据库 (TEMPDB) 索引管理 (INDEX) 数据导入 (BULK INSERT)
内容
全文检索 查询的优化 编译 统计信息 查询的执行 数据库可靠性检查 存储引擎 SQL Server的内部操作系统
查询的执行
能够缓存动态对象的执行计划
在SQL2000里面,如果执行计划关系到动态对 象,如表变量、触发器等,计划就不会被缓存 SQL2005能缓存这些计划,避免了每次的重编 译
分布式查询能够异步执行 SQL事件探查器能够展现更多的信息
运行UPDATE STATISTICS会影响当前所有用 户表和系统表,SQL2000和SQL2005都是如 此 在SQL2005里面,会自动忽略自从上次创建 或更新统计信息以来没有修改过的表和索 引
内部客户报告说运行时间从SQL2000 的几小时 降低到的几分钟 得到的好处要依赖于忽略的表和索引的数目和 大小
改进之处(续)
数据库的维护操作
DBCC,备份,索引
对问题的诊断和解决
DAC, DMVs, XML Plans
内容
全文检索 查询的优化 编译 统计信息 查询的执行 数据库可靠性检查 存储引擎 SQL Server的内部操作系统
全文检索
全文检索可以具有多个实例
RCSI原理
所有的delete,update都会做一个copy
非常高效 类似TPCC的工作都不受显著影响 如果数据更新量太大,可能有影响
copy存在版本库(version store)
在tempdb里
百度文库
Copy也可以读,不会阻塞 Version store 定期清理 考虑增加tempdb的size
聚集索引的重建
序言(续)
在下面将会介绍其中一些改进之处,我们 可以将其分为两类
你不需要做任何修改
如 执行DBCC命令
需要改变服务器或者数据库的设置
如统计因子的自动异步更新,RCSI
背景知识
最好有管理关系数据库的基本经验 最好有关系数据库的基本知识
改进之处
全文检索会更快
程序并发性能有很大提高(RCSI)
异步请求提高了分布式查询的性能 改善了以下应用程序的可扩展性
找到平均最耗时的query
sys.dm_db_file_space_usage sys.dm_db_session_space_usage
分析tempdb空间的使用
总结
SQL Server 2005 对现有应用的某些性能 有所提高,而且更加易于管理
全文检索,查询的优化 编译,统计信息 查询的执行 数据库可靠性检查 存储引擎 SQL Server的内部操作系统
序言
我们已经知道SQL Server™ 2005增加了很 多的新特性,可以提高性能,如
数据库镜像,分区表,CLR,Service Broker, VARCHAR(MAX),XML 数据类型等 但是,你必须修改或者重新编写你的代码才能 够获得这些好处
你是否知道SQL Server™ 2005还有很多的 改进,你不需要修改你的程序就可以从 中受益?
欢迎访问我的BLOG
http://blogs.msdn.com/weix/
中文 SQL Server 主页: http://www.microsoft.com/china/sql 其他相关讲座:
DAT239:SQL Server 2005数据仓库新功能
其他的网上资源(English)
1. SQL Server 2005
SQLOS
动态使用AWE内存 缓冲池(buffer pool)替换策略
能够更好的缓存正确的页
不变页的Sniffer
随机察看缓冲池中的页以察看checksum的变化
察觉可能的硬件问题
DAC管理员专用连接 死锁输出XML 每个批处理(batch)自动找到最空闲的CPU
锁定机制的性能提高
锁的内存更NUMA-aware 锁的分区
SQL2000重建和删除聚集索引会导致非聚集 索引的重建
如果聚集索引不是唯一的
SQL2005不再重建,缩短大量时间
我们保留了唯一标志以保证索引的正确
唯一标志(uniquifier) :自动添加的隐藏列
判断indroot 可以知道非聚集索引是否重建
索引管理
Defrag提高索引页的顺序性和连续性。
(a, 1) – (b, 2) – (c, 3) SQL2005的速度有显著提高。
更易于管理 全文检索同其它实例和产品隔离开来
全文目录可以备份/还原
分离/附加(attach/detach db)
填充全文索引:100倍的速度(依赖于数据) 全文查询:一般情况下快30-50%
查询的优化
索引视图查询性能的提高 更聪明的连接(join)处理:
R.x = S.x and S.x > 10 暗示了 R.x = S.x and S.x > 10 and R.x > 10
Read-committed-snapshot-isolation 大多数应用使用系统缺省:read-committed isolation 对大多数应用有帮助 需要数据库设置 READ_COMMITTED_SNAPSHOT 提高了并发性和可收缩性,减少了死锁 提高程序的可预见性(predictability)
数学运算查询的化简
如:a>3 and a>5 可以化简为a>5
编译
语句级别的重编译
SQL 2000是对整个批处理和存储过程的重编译
批处理(存储过程)
语句1 语句2
为何要重编译
表格里大量的数据更新(insert, update, delete) 统计信息更新 (update statistics)
统计信息的异步更新
问题?
Wei.Xiao@microsoft.com
可以同时备份数据和日志
Log Shipping 的日志备份不会被数据备份所 阻塞
RESTORE Verifyonly
全面检测备份的可靠性 执行时间可能延长
数据库恢复
Checkpoint
不断自我调整,快速且不影响前台操作 可中断的
快速恢复
在Undo阶段数据库就可用 仅企业版可用
RCSI
可提交-读-快照隔离
如分布式查询追踪和死锁通知
重建索引的操作相比SQL2000提升了性能的 伸缩性(offline)
触发器
触发器执行的更好
优于访问日志记录 避免了日志扫描(经常成为瓶颈) 在多重连接的情况下避免了重复扫描 更快,在高端系统上伸缩性更好
考虑增加tempdb的size
数据库结构的检查
DBCC CHECK*使用数据库快照以避免锁定 检查更加彻底 减少图像和文件占用的存储空间
Technet http://www.microsoft.com/technet/prodt echnol/sql
2. SQL Server 2005
网上实验室 http://msdn.microsoft.com/vstudio/tryi t/hosted/sql 3. SQL社区 http://www.microsoft.com/technet/prodt echnol/sql/community/default.mspx
DBCC SHRINK*, DBCC INDEXDEFRAG, ALTER INDEX REORGANIZE
DBCC CHECK*, DBCC SHRINK* 的进程报告
长时间运行的CHECK*, SHRINK* 操作会记录在 sys.dm_exec_requests中
内容
全文检索 查询的优化 编译 统计信息 查询的执行 数据库可靠性检查 存储引擎 SQL Server的内部操作系统
快速数据文件初始化
不需要全部用0填充空间 需要给服务帐号提供SE_MANAGE_VOLUME_NAME 的权限 需要Windows XP / 2003 对CREATE DATABASE , ALTER DATABASE, RESTORE, 文件增长性能有明显提升
DMV
帮助性能调优 sys.dm_exec_query_stats
Online 建索引
建索引的同时允许 INSERT, DELETE, UPDATE, SELECT 比offline要慢 考虑增加tempdb的size
内容
全文检索 查询的优化 编译 统计信息 查询的执行 数据库可靠性检查 存储引擎 SQL Server的内部操作系统
SQL Server 的内部操作系统
tempdb 的性能增强
tempdb 的可伸缩性得到了增强,支持更大 的工作量
缓存临时表和表变量(@t, #t) 改善了分配页(allocation page)的访问协议 减少tempdb日志产生的数量 对表中最初64KB更有效的分配算法
什么是分配页?
帮助空间管理的磁盘页(disk page)
备份
在OLTP系统中,统计信息的自动更新会导 致一个可察觉的停顿 解决方案:异步更新
ALTER DATABASE dbname SET AUTO_UPDATE_STATISTICS_ASYNC ON
执行计划使用了过期的统计信息,会导致 后台自动更新统计信息 执行计划不会停顿,但是会使用旧的统计 信息
sp_updatestats
把单个的锁资源划分为多个锁资源,每个CPU 一个 NL, Sch-S, IS, IU, IX模式的锁可以被单个 CPU获取 S, U, X, SCH-M模式的锁必须被所有的CPU获 取 在16个CPU以上的系统,分区会被默认打开
FILE I/O
Page Checksum 在新数据库上默认打开
提高可靠性
升级考虑事项
我的应用是否一定可以提高性能?
取决于具体应用,并非所有功能都有性能提高
对于某些设置的调整:
可能要增大tempdb 可能要增大内存
升级之前最好要测试
核心应用一定要测
遇到问题怎么办?
我常去的网上社区
microsoft.public.sqlserver.server microsoft.public.cn.sqlserver
DAT240
升级SQL2005的直接益处
肖维 Technical Lead SQL Server Engine Access Method 微软有限公司
自我介绍
Access Method负责的技术范围
数据的访问 (B TREE) 数据的检查 (DBCC CHECK) 数据的修理 (DBCC REPAIR) 图像和文件的存储 (TEXT/IMAGE/VARCHAR) 数据的可靠性:事务管理 数据文件空间管理 (FILE SPACE) 临时数据库 (TEMPDB) 索引管理 (INDEX) 数据导入 (BULK INSERT)
内容
全文检索 查询的优化 编译 统计信息 查询的执行 数据库可靠性检查 存储引擎 SQL Server的内部操作系统
查询的执行
能够缓存动态对象的执行计划
在SQL2000里面,如果执行计划关系到动态对 象,如表变量、触发器等,计划就不会被缓存 SQL2005能缓存这些计划,避免了每次的重编 译
分布式查询能够异步执行 SQL事件探查器能够展现更多的信息
运行UPDATE STATISTICS会影响当前所有用 户表和系统表,SQL2000和SQL2005都是如 此 在SQL2005里面,会自动忽略自从上次创建 或更新统计信息以来没有修改过的表和索 引
内部客户报告说运行时间从SQL2000 的几小时 降低到的几分钟 得到的好处要依赖于忽略的表和索引的数目和 大小