欢迎分享,转载请注明来源:内存溢出
举报违规检举侵权投诉|2013-10-22 08:49 提问者采纳 天天爱答题,20元话费等你拿~这包括实例范围的元数据(例如登录帐户)、 端点、链接服务器和系统配置设置。此外,master数据库还记录了所有其他数据库的 存在、数据库文件的位置以及SQLServer 的初始化信息。因此,如果master数据库 不可用,则SQLServer 无法启动。在SQLServer中,系统对象不再存储在master 数据库中,而是存储在mssqlsystemresource数据库中。 master数据库对系统来说很关键,因此总是要保存它的当前副本。创建另一个数据库, 改变配置值,修改登录账户这样的 *** 作都会修改master数据库,所以总是应该在完成 这些 *** 作之后备份master数据库。master数据库本身不大,做一次备份很快,建议经 常做master数据库的备份。 由于master数据库还记录启动服务器实例所需要的初始化信息,每个其他数据库的主文 件位置。master数据库是SQLServer启动的时候打开的第一个数据库。SQLServer是从 master数据库找到的其他数据库的信息。如果master数据库存在问题,整个SQLServer 都无法正常启动。 如果说是master数据库严重损坏,如果有备份直接还原master数据库即可。如果没有备 份,则需要重建master数据库。重建master数据库将使所有的系统数据库恢复到原始状 态。重建master数据库会删除并重建msdb数据库。这将导致丢失所有计划信息以及备份 和还原历史记录。重建master数据库之后,SQLServer数据库就好比重新安装后一样, 所有用户信息都会丢失,用户数据库需要重新附加,SQLServer任务和计划都要重建。 因此重建master数据库是个万不得已的选择。 在执行任何语句或系统过程来更改master数据库中的信息以后,应备份master数据库. 建议不要再master数据库中创建用户对象 导致master数据库更新并要求备份的 *** 作类型包括: 1,创建或删除用户数据库 2,添加或删除文件和文件组 3,添加登陆或其他登陆安全相关 *** 作 4,更改服务器范围的配置选项或者数据库配置选项 5,创建或删除逻辑备份文件 6,配置用于分布式查询和远程调用的服务器,如添加链接服务器或远程登录 恢复master数据库使用的还是RESTORE指令.还原master数据库后SQLServer实例将自动停止. 关于如何恢复master数据库,在后面将单独写一篇博客. model数据库 用作在SQLServer实例上创建的所有数据库的模板。因为每次启动SQLServer 时都 会创建tempdb,所以model数据库必须始终存在于 SQLServer系统中。 创建数据库是model数据库是SQLSERVER使用的模板.model数据库里的全部内容都会被复 制到新的数据库.所以这个数据库不建议做任何修改.除非是有目的的要建立一些模板. 虽然这个数据库的内容一般不会发生改变,但是在SQLServer启动的时候要使用model数 据库某些设置创建新的tempdb。如果没有tempdb,SQLServer无法启动。因此model数据库 必须存在SQLServer系统中。这个数据库也要有备份。 还原model数据库与对用户数据库执行完整的数据库还原相同 tempdb数据库 tempdb系统数据库是一个全局资源,可供连接到SQLServer 实例的所有用户使用,并 可用于保存下列各项: 显式创建的临时用户对象,例如全局或局部临时表、临时存储过程、表变量或游标。 SQLServer数据库引擎创建的内部对象,例如,用于存储假脱机或排序的中间结果的工作表。 由使用已提交读(使用行版本控制隔离或快照隔离事务)的数据库中数据修改事务生成的行版本。 由数据修改事务为实现联机索引 *** 作、多个活动的结果集(MARS)以及AFTER 触发器等功能而生 成的行版本。 tempdb中的 *** 作是最小日志记录 *** 作。这将使事务产生回滚。每次启动SQLServer 时都会重新 创建tempdb,从而在系统启动时总是保持一个干净的数据库副本。在断开联接时会自动删除临时 表和存储过程,并且在系统关闭后没有活动连接。因此tempdb中不会有什么内容从一个SQLServer 会话保存到另一个会话。不允许对tempdb进行备份和还原 *** 作。 资源数据库(mssqlsystemresource) 资源数据库是一个隐藏数据库。可执行系统对象(入系统存储过程和功能)都保存在这里。创建这个数 据库是为了快速安全的升级。如果没有人可以访问到这个数据库,也就没有人可以改变它。简单的用 新的资源数据库替换掉旧的资源数据库,就可以升级到新的,包括新系统对象服务包。不能使用任何 正常方法查看该数据库。但这个数据库任然需要磁盘空间。 mssqlsystemresource数据库从来不做修改,理论上不用备份。 msdb数据库 由SQLServer代理用于计划警报和作业,也可以由其他功能(如ServiceBroker 和数据库邮件)使用 SQLServer将在msdb数据库中自动维护一份完整的在线备份与还原历史记录。这些信息包括执行备份一 方的名称,备份时间和用来存储备份的备份设备。SQLServerManagementStudio利用这些信息提出 计划以还原数据库并应用事务日志备份。 默认情况下msdb使用简单恢复模式。 还原msdb数据库与对用户数据库执行完整的数据库还原相同Berkeley DB (DB)是一个高性能的,嵌入数据库编程库,和C语言,C++,Java,Perl,Python,PHP,Tcl以及其他很多语言都有绑定。Berkeley DB可以保存任意类型的键/值对,而且可以为一个键保存多个数据。Berkeley DB可以支持数千的并发线程同时 *** 作数据库,支持最大256TB的数据,广泛用于各种 *** 作系统包括大多数Unix类 *** 作系统和Windows *** 作系统以及实时 *** 作系统。 2.0版本或以上的Berkeley DB由Sleepycat Software公司开发,并使用基于自由软件许可协议/私有许可协议的双重授权方式提供[1],附有源代码。开发者如果想把Berkeley DB嵌入在私有软件内需要得到Sleepycat公司的许可,若将软件同样遵循GPL发布,则不需许可即可使用。而2.0版本以下的则使用BSD授权,可自由作商业用途。 Berkeley DB最初开发的目的是以新的HASH访问算法来代替旧的hsearch函数和大量的dbm实现(如AT&T的dbm,Berkeley的 ndbm,GNU项目的gdbm),Berkeley DB的第一个发行版在1991年出现,当时还包含了B+树数据访问算法。在1992年,BSD UNIX第4.4发行版中包含了Berkeley DB1.85版。基本上认为这是Berkeley DB的第一个正式版。在1996年中期,Sleepycat软件公司成立,提供对Berkeley DB的商业支持。在这以后,Berkeley DB得到了广泛的应用,成为一款独树一帜的嵌入式数据库系统。2006年Sleepycat公司被Oracle 公司收购,Berkeley DB成为Oracle数据库家族的一员,Sleepycat原有开发者继续在Oracle开发Berkeley DB,Oracle继续原来的授权方式并且加大了对Berkeley DB的开发力度,继续提升了Berkeley DB在软件行业的声誉。Berkeley DB的当前最新发行版本是4.7.25。 值得注意的是DB是嵌入式数据库系统,而不是常见的关系/对象型数据库,对SQL语言不支持,也不提供数据库常见的高级功能,如存储过程,触发器等。 Berkeley DB的体系结构Berkeley DB以拥有比Microsoft SQL Server和Oracle等数据库系统而言更简单的体系结构而著称。例如,它不支持网络访问—程序通过进程内的API访问数据库。 他不支持SQL或者其他的数据库查询语言,不支持表结构和数据列。 访问数据库的程序自主决定数据如何储存在记录里,Berkeley DB不对记录里的数据进行任何包装,每个记录有且只有两部分:键、值,所以在Berkeley DB的背景下通常用key/data pair指代一个记录。记录和它的键都可以达到4G字节的长度。 尽管架构很简单,Berkeley DB却支持很多高级的数据库特性,比如ACID 数据库事务处理,细粒度锁,XA接口,热备份以及同步复制。 Berkeley DB包含有与某些经典Unix数据库编程库兼容的接口,包括:dbm,ndbm和hsearch。Berkeley DB的核心数据结构数据库环境句柄DB_ENV: 每个DB_ENV相当于一个数据库,它包含了数据库全局信息,比如缓冲区大小、以及对事务、日志、锁等子系统的全局配置信息。数据库句柄结构DB:每个DB相当于关系数据库的一个表,其中存储了很多key/data pair。DB句柄代表了一个包含了若干描述数据库表属性的参数,如数据库访问方法类型、逻辑页面大小、数据库名称等;同时,DB结构中包含了大量的数据库处理函数指针,大多数形式为 (*dosomething)(DB *, arg1, arg2, …)。其中最重要的有open,close,put,get等函数。 数据库记录结构DBT:DB中的记录由关键字和数据构成,关键字和数据都用结构DBT表示。实际上完全可以把关键字看成特殊的数据。结构中最重要的两个字段是 void * data和u_int32_t size,分别对应数据本身和数据的长度。 数据库游标结构DBC:游标(cursor)是数据库应用中常见概念,其本质上就是一个关于特定记录的遍历器。注意到DB支持多重记录(duplicate records),即多条记录有相同关键字,在对多重记录的处理中,使用游标是最容易的方式。 数据库环境句柄结构DB_ENV:环境在DB中属于高级特性,本质上看,环境是多个数据库的包装器。当一个或多个数据库在环境中打开后,环境可以为这些数据库提供多种子系统服务,例如多线/进程处理支持、事务处理支持、高性能支持、日志恢复支持等。 DB中核心数据结构在使用前都要初始化,随后可以调用结构中的函数(指针)完成各种 *** 作,最后必须关闭数据结构。从设计思想的层面上看,这种设计方法是利用面向过程语言实现面对对象编程的一个典范。 Berkeley DB数据访问算法在数据库领域中,数据访问算法对应了数据在硬盘上的存储格式和 *** 作方法。在编写应用程序时,选择合适的算法可能会在运算速度上提高1个甚至多个数量级。大多数数据库都选用B+树算法,DB也不例外,同时还支持HASH算法、Recno算法和Queue算法。接下来,我们将讨论这些算法的特点以及如何根据需要存储数据的特点进行选择。 B+树算法B+树是一个平衡树,关键字有序存储,并且其结构能随数据的插入和删除进行动态调整。为了代码的简单,DB没有实现对关键字的前缀码压缩。B+树支持对数据查询、插入、删除的常数级速度。关键字可以为任意的数据结构.HASH算法DB中实际使用的是扩展线性HASH算法(extended linear hashing),可以根据HASH表的增长进行适当的调整。关键字可以为任意的数据结构。 要求每一个记录都有一个逻辑纪录号,逻辑纪录号由算法本身生成。实际上,这和关系型数据库中逻辑主键通常定义为int AUTO型是同一个概念。Recho建立在B+树算法之上,提供了一个存储有序数据的接口。记录的长度可以为定长或不定长。 和Recno方式接近, 只不过记录的长度为定长。数据以定长记录方式存储在队列中,插入 *** 作把记录插入到队列的尾部,相比之下插入速度是最快的。 对算法的选择首先要看关键字的类型,如果为复杂类型,则只能选择B+树或HASH算法,如果关键字为逻辑记录号,则应该选择Recno或Queue算法。当工作集关键字有序时,B+树算法比较合适;如果工作集比较大且基本上关键字为随机分布时,选择HASH算法。Queue算法只能存储定长的记录,在高的并发处理情况下,Queue算法效率较高;如果是其它情况,则选择Recno算法,Recno算法把数据存储为平面文件格式。Berkeley DB的资源链接:官方主页: http://www.oracle.com/database/berkeley-db/db/index.html产品下载: http://www.oracle.com/technology/software/products/berkeley-db/index.html官方开发者文档中心: http://www.oracle.com/technology/documentation/berkeley-db/db/index.html产品技术信息: http://www.oracle.com/technology/products/berkeley-db/pdf/berkeley-db-family-datasheet.pdf http://www.oracle.com/database/docs/berkeley-db-datasheet.pdf http://www.oracle.com/database/docs/Berkeley-DB-v-Relational.pdf官方主页上有很多有趣的成功案例的白皮书和技术文档,值得大家学习
赞
(0)
打赏
微信扫一扫
支付宝扫一扫
如何在Delphi中开发数据库程序
上一篇
2023-03-26
什么是数据库管理系统(DBMS)?它有什么功能?
下一篇
2023-03-26
评论列表(0条)