认识及操作SQL Server 数据库
关于系统数据库
系统数据库中的Maser、Model、mdsb 及 tempdb的各功能及任务介绍
Maser:Maser数据库记录了SQL Server 系统的所有系统信息包括所有登入帐户与所有的系统配置设定
Tempdb:联机至系统的所有用户之临时表与预存程序都储存此。
Model:Model数据库可作为数据库模板,当报行CREATE DATABASE 语句时,系统将先复制Model数据库的内容,接着再将新数据库的其他部分予以填入
数据库的组成
数据表:这是数据库最基本对象,其目的是储存记录,所有数据库应用皆发端于此,它是数据库的基础建设
数据库关系图:也就是关联,建立多个数据怀后,表与表之间必须有关联,方有其实务上的意义
检视表:也就是查询,「检视」之意是它可使用一或多个数据表为基础,建立查询,此时的查询就像为数据库建立不同的观看角度,故检视表的英文原名是「View」
预存程序:这是相当重要的组件,只要会开发及使用预存程度,就可以说在SQL Server 的开发跨出一大步。预存程序是编译成一个报行单元的一组Transact-SQL语句。对于必须经常报的工作,可以将所需的SQL语句与逻辑,设计与编写在一个预存程序中,前端应用程序再报行预存程序即可,重点是所有工作都在服务器上进行,所以预存程序是做为数据库管理人员的重要工具
触发程序:是一种特殊的预存程序,它的功能是针对数据表产生UPDATE、INSERT或DELETE等动作后,自动报行的程序
自定义函数:是指由一或多个Transact-SQL语句组成的副程 它可用来封装程序代码,以便重复使用。SQL Server提供的函数称为内建函数,另也可自定义,称为用户目订函数。函数的目的是传回报行结果
自定义数据型态:用户自定义的数据型别是以SQL Server提供的系统型别为基础,加以重新命名及定义的自定义型号,它的吏用时机是当多个数据表必须在一个字段中使用相同的数据型别,且这些字段的数据型别、长度和NULL值属性完全一样时
规则:是针对字段的值进行检查的条件,一个字段可以同时具有一个规则、一或多个关关、一或多个条件约束等,只有符合所有条件的合法值,可以储存。而规则仅是多种可以检查数据是否合法的功能之一
默认值:可指定给字段的功能,目的是当产生新记录时,若在有默认值的字段未输入数据,就直接套用默认值
以T-SQL控制及了解数据库
以T-SQL查询数据:T-SQL可分为两大类,分别是SQL及非SQL的部份,SQL语法的功能是针对数据库的记录进行处,包括查询、删除、新增、更改等
查看服务器组态设定
管理索引片段
索引与SQL Server 2005中建立的其他对象不同。如果没有适当的维护,索引可能会在一段时间之后失去功效,因为支持这些索引的索引页会产生片段的现象。索引片段(index fragmentation)的层级与索引维护的程度,通常会决定在执行查询时,SQL Server查询优化器会使用哪些索引。优化工具也会终止使用片段程度很大的索引,这会严重伤害查询的效能。
每当数据表内容修改时,都有可能发生索引片段的现象,而且这项修改也会影响到索引页。每当进程针对数据表内容执行INSERT、DELETE或UPDATE作业时,这个数据表对应的丛集与非丛集索引也会受到影响。执行DELETE作业的进程通常会释出基础索引页的空间,这会让索引页只
包含一部份的索引列,正常情况下它们应该是满的。索引页未被填满的情况,被称为内部片段(internal fragmentation)。在出现内部片段之后,索引页就无法有效运用磁盘空间,并会增加存放相同数量索引列所需的页数。索引页数的增加会让SQL Server将大量的索引页读入内存,才能满足对索引的READ作业。分页(paging)是从硬盘子系统中,将数据或索引页读入内存的实体动作。由于硬盘子系统通常都是服务器上速度最慢的组件,任何能减少分页数量的动作,都有助于改善SQL Server的整体效能。
如果需要放置索引列或数据列的页面,已经达到单一数据或索引页能包含的信息量上限,INSERT与UPDATE作业就可能让SQL Server增加额外的索引页。
当SQL Server需要将额外的数据列加入数据页或索引页,而这个页面已经无法容纳额外的内容时,就会产生数据页分裂(page split)的现象,它会增加新的页面,而且SQL Server会将原始页面上的数据或索引信息,分配到原始的页面与新页面上。数据页分裂会按照索引键维护数据列的逻辑顺序,SQL Server知道下一个索引键所在的页面。不过,数据页分裂不会维护页面的实体顺序,新的页面通常不会紧接在原始页面之后。当页面的实体顺序不连
贯时,就是所谓的外部片段(external fragmentation)。
在索引中,外部片段永远都是不愿意见到的情形。然而,在交易量很高的数据库中,少量的内部片段则是值得的,因为它可以防止大量的数据页分裂。不过,大量的内部与外部片段,都会对数据的撷取产生负面的影响。在内部片段的情形中,数据列会很不平均地分散在大量的页面上。此时,如果要将索引页读入内存,SQL Server必须执行许多磁盘的I/O作业。
NOTE∣数据与索引页的大小上限在SQL Server 2005中,单一数据或索引页允许的上限是8,060字节。单一页面上允许的索引列或数据列数量,是8,060除以个别索引列或数据列大小的结果。例如,假设有一个索引包含800字节的数据行索引值,则SQL Server在每个索引页上只能储存10个索引列。