锁定管理器中新增的 Transact-SQL 接口支持在编程代码中使用自定义的锁定逻辑。业务逻辑所需的锁可通过在 Transact-SQL 批处理中调用 sp_getapplock 命令来创建,这将允许您指定要锁定的应用
程序定义的资源(例如锁定表单,而非数据行)、要使用的锁定模式、超时值以及锁的范围是事务还是会话。当使用新的应用程序锁管理器创建锁后,它们接受 SQL Server 的常规锁管理,如同它们是由存储引擎创建的一样,因此,不必担心当调用事务终止时,应用程序创建的锁仍处于打开状态。
在 SQL Server 2000 中,用于获取锁的进程将考虑页中的数据是否都已提交。例如,若要对某个表运行 SELECT 语句,而该表中的数据在最近未发生变化(如 pubs 数据库中的表),则该进程不会产生锁,因为最近没有活动事务对表进行过更新。存储引擎是通过将数据页上的日志序列号与当前活动事务相比较来实现上述功能的。如果数据库中的绝大多数数据都早于最早的活动事务,则对于这样的数据库,这一功能将显著减少锁定操作,从而使性能大幅提高。
在使用锁保护事务中数据的同时,另一个进程 latching 控制对物理页的访问。闩锁是一种非常轻型的、短期同步对象,它保护事务生存期内不需要锁定的操作。当存储引擎扫描某页时,它先锁住该页,读取行,将行返回给关系引擎,然后再解除对页面的锁定,以使其它进程可以访问同一数据。存储引擎使用称为 lazy latching 的进程优化对数据页的访问,即只在另一个活动进程请求某页时,才释放对该页的锁存。如果没有活动进程请求同一数据页,则在对该页的整个操作过程中,单个闩锁将始终有效。
为改进系统的并发性能,应将精力集中在数据库系统的
设计以及与其相关的代码对象上。SQL Server 2000 支持 TB 级的数据存储,其扩展能力可线性增长,且不受限制。数据库管理员的任务是管理数据库生命周期,即所有数据库组件(从代码到磁盘上的数据存储)的设计和优化周期,以确保设计始终满足服务级协议的要求。
四. 表和索引 在物理数据结构方面也进行了改进,提高了设计和维护的灵活性。
随着表或索引的增长,SQL Server 以八个为一组分配新的数据页;这些数据页称为扩展。虽然 text、ntext 或 image 类型的列可存储在不同的页中,但一行数据不能超出一页,所以它只能拥有 8 KB 数据。拥有聚集索引的表按键的顺序存储在磁盘上。堆是不带聚集索引的表,它们是无序的。记录按插入的顺序存储。
SQL Server 2000 支持索引视图,在其它数据库产品中常常称为实体视图。在某个视图上创建聚集索引时,该视图将从派生对象转为存储在数据库中的基本对象,并且其结构与带有聚集索引的表相同。索引视图可用于存储预先计算的值或复杂联接的结果,但前提是维护开销不能超过性能上的收益。在 SQL Server 2000 企业版中,只要索引视图可以优化查询计划,查询处理器就会自动使用它。对于很少更改但又经常作为复杂联接或计算查询组成部分的数据,索引视图可改善查询速度。
行内文本 行内文本可用于在主页面中存储小文本数据。例如,如果某个表中有一文本列,但文本值通常小到可与行中的其余内容放在同一普通页中,则可以在文本列中设置阈值。阈值用来确定可存储在主页面而非单独的文本页上的最大文本长度。如果大多数数据可放在主页面上,而只有小部分数据比较大,需要创建文本页,采取这种做法就可使性能获得提高。
若要确定在何种情况下使用此新功能,则需要权衡存储密度(或每个数据页上存储的行数)以及 I/O 性能的改善。例如,某个表中的文本列用于存放注释。该列中有 20% 的文本值较长,而其它 80% 的文本值都小于 100 个字节。对于这种情形,似乎可以采用行内文本解决方案;但是,只有在这样的列中的数据被频繁访问时才应考虑使用行内文本。如果用户频繁访问此表,但只在进行特殊搜索时才查看此注释列,则使用行内文本未必是最好的做法。由于每页存储的行数少,所以存储密度会降低;并且由于表包含更多的页,所以表扫描响应时间也会增加。所以,实现行内文本的最好情况是,存在需要频繁访问的文本列,并且该列的许多值都小于 8 K,可以存储在行中。
新增数据类型 SQL Server 2000 引入了三种新的数据类型。bigint 是 8 字节整数类型。sql_variant 可以存储不同数据类型的数据值。第三种数据类型 table 可用于优化性能。Table 变量使 tempdb 的使用效率更高,并且比临时表更加快速。与其它变量一样,它们的作用范围是声明它们的批处理。table 变量的功能类似于临时表,但其性能要高于临时表或游标,并且可更加有效地利用服务器资源。通常,在创建与数据库交互的代码时,一定要考虑利用服务器上可用资源的最佳方法。
索引 通过使用索引,可以优化对数据的访问。因为是否建立索引取决于使用情况,所以不正确的索引是造成数据库缓慢最主要的原因。标准的索引维护工作应该包括周期性校验当前索引方案以及通过适当增删索引使其适应当前的系统使用情况。
SQL Server 2000 中的几个新增功能使索引维护更加有效,索引管理更加容易。这些增强功能减少了磁盘 I/O 操作,从而增加了索引扫描的性能。在范围扫描可以使用辅助索引时,这一功能尤其有用。
共10页。
9 1 2 3 4 5 6 7 8 9 :