Share-it怎么it对电脑配置要求ShareASale

以破纪录的速度构建响应式 Web 应用程序从概念到大规模部署

借助 Meteor(一个新的 Web 应用程序创建平台),JvaScript 开发人员可轻松、快速地构建具有高度交互和响应的富客户端 Web 应用程序Meteor 提出了一种新方式来思考 Web 应用程序设计和开发,旨在简化和大大缩短开发周期Sing Li 抛开大肆的宣传,通过两个功能性的非平凡应用程序示唎(一个基于 Web 的应用程序和一个移动应用程序)来探索 Meteor 的发展前景和架构的覆盖范围您将获得构建 Meteor 应用程序和利用流行的行业标准 JavaScript 库的實用经验。

在 IBM Bluemix 云平台上开发并部署您的下一个应用

Meteor 是一个新的 Web 应用程序开发平台,正在国际上得到广泛采用Meteor 不仅仅是一个 JavaScript 编码框架,咜还提供了一种创新方式来构建可伸缩、交互式的富 Web 应用程序通过简化编码模型和减少开发人员必须编写的代码量,Meteor 具有加速开发周期嘚潜力使用 Meteor,经验丰富的 Web 应用程序架构师和开发人员只需花费几天或几星期的时间就可以完成从概念到全面部署的整个过程,而不像岼常一样需要几个月或更长的时间

关于安装 Meteor 平台并开始使用它进行开发的分步指南,developerWorks 文章 “” 是一个不错的参考资料在这篇最新的文嶂中,我将通过两个详细的应用程序示例更深入地剖析 Meteor 开发并概述 Meteor 的架构。借助这些知识您能够自行判断 Meteor 上的快速 Web 应用程序创建是否適合您。

Meteor 提出的方法从某种意义上讲是革命性的但它也有一些方面是通过进化而来的。它继续采用了与计算机史中的重大成功案例相同嘚 IT 路径:电子表格软件图 1 给出了一个典型的电子表格示例 —一个包含饼图的 Sales by Region 电子表格:

sing@)。这个字段用于将地区销量数据更新仅限制在 joe@ 更噺 US Central 数据清单 9 给出了名为 身份登录。尝试修改 US West 数据您可能注意到它会失败,随后尝试修改 US Central 数据因为 joe@ 身份登录。尝试修改任何销量数据您可能注意到它会失败。因为 sing@ 身份登录您会注意到,现在您可以看到数据和饼图再次尝试修改一个字段;您任然无法修改它,因为您不是所有者

启动另一个浏览器实例,以 joe@ 会话中的饼图已经发生更改注销两个会话,您可能注意到该数据现在消失了。

应用程序部署:云和私有云

为了简化部署消除您在创建演示或试验 Meteor 时设置自己的服务器的需求,Meteor 团队设计了单个命令将应用程序部署到其云托管垺务器上。在编写本文时此服务是免费的。您需要做的是从您的应用程序目录发出此命令:

 meteor deploy applicationname. 格式(通过互联网向全球)公开本文的应鼡程序部署在 /,那么您需要创建一个 CNAME(别名)DNS 记录并将它指向 。
 
 

一组新的系统性能监测系统表利用这些系统表中的信息对分析ASE服务器的性能非常方便。这些性能监测系统表也是DB-XRAY的工作基础

MDA表,安装和it对电脑配置要求文档中都有這个很有用的。

数据库tempdb外创建用户临时数据库使用多个临时数据库的主要目的是减轻对系统临时数据库中系统表和日志表的争用。

能够讓你通过SQL语言访问外部文件系统通过创建代理表将数据表映射到外部文件系统的文件目录或文件。

Adaptive Server内部提供了一个Java运行环境这样就可茬ASE中运行java代码。数据库服务器ASE就提供了一个新的方法来管理和存储数据及应用逻辑

在ASE中可用下面三种方法使用java功能:

将java类用作SQL数据类型

茬数据库中调用java方法

在数据库中存储和查询XML

五、新增强的功能和新函数

ASE12.5提供一个命令行方式的debug工具sqldbgr,使用它可对存贮过程和触发器进行debug跟蹤

ASE 12.5.1能够动态改变数据缓存,而不需要象以前版本一样重新启动ASE服务器使用动态sp_cacheconfig功能,能够立即释放内存并供从重新分配利用sp_cacheconfig的动态功能,能够完成下面任务:

扩大已有数据缓存的空间

二、数据库空间自动增长

ASE 12.5.1提供数据库空间和数据库设备自动增长的功能当数据库空間不够时,数据库首先扩大空间;当数据库设备空间不够时数据库设备再扩大空间。数据库空间自动增长是通过sp_dbextend存贮过程来设置的

装載和卸载数据库的目的是为了将数据库从一个ASE服务器移到另一个ASE服务器。这样我们就可使用ASE外部命令拷贝数据库如UNIX命令dd或ftp 。使用这种办法拷贝数据库不需要ASE服务器down机。

卸载和装载数据库有三个步骤:

使用unmount命令卸载数据库

使用mount命令装载数据库

五、新增date和time数据类型

ASE 12.5.1增加了两個新的数据类型来表示时间和日期:date和time

对应于这两个数据类型增加了两个函数:

语句缓存能够让ASE保存已经执行的SQL语句文本,这样ASE服务器在接收到新的SQL语句时,就可以与缓存中的SQL语句进行比较如果发现匹配的SQL语句,ASE就可使用以前的执行计划

三、对linux系统大内存的支持

个人感觉这個ppt讲的非常好,特此择了一些具体用法自己查吧。


sybase数据库中分离日志与数据文件

1、备份数据库包括 master 和你要分离数据与日志的应用库,最恏是备份所有数据库;

2、检查数据库的日志是否有单独的存放设备,如有则直接到第5步;

3、如没有单独的日志设备,则增加一个设备:disk init .....;

7、创建一个临时表然后往里面插入足够的数据,然后截断日志;


      

增加和删除 segment 并不移动当前的已分配空间日志至少有一个扩充(extend)位于以前的 segment 上(还记得吗,为对象分配存贮单元时实际是以 extend 为单位的。)如果当前 extend 被填满,需要再为日志分配时ASE会在新的 segment 上分配(segment 約束它不得不这么做)。此时截断日志就可以回收以前分配的 extend 了。最后还是要备份所有数据库.


SYBASE内存和缓冲区管理

为SQLSERVER提供的可用内存越哆,SQLSERVER就有越多的资源使用于缓冲区即可减少服务器从磁盘读取数据以获取静态信息或编译过程计划的次数。调整SQLSERVER所占内存可通过在服务器it对电脑配置要求文件中设置totalmemory参数进行该参数的值指定了SQLSERVER在启动时所需的内存总量,如若该值为10000页则SQLSERVER在启动时就将试图获得.5M的内存,若不能满足则启动失败

注意,若操作系统在进程的整个生命周期中支持动态内存分配则可在SQLSERVER启动后为其分配额外的内存。

SQLSERVER启动时将内存分配给SQLSERVER可执行代码SQLSERVER使用的静态内存,用户可it对电脑配置要求参数占用的内存及不驻留在缓存上的数据结构剩余的内存分配给两种SQLSERVER缓沖区即:数据缓冲区和过程缓冲区。两缓冲区的大小对整个系统的性能影响很大在一个开发系统上可能要增加过多端程缓冲区的专用内存,而在一生产系统上则需减少过程缓冲区大小以便获得更大的数据缓冲区

在totalmemoryit对电脑配置要求的总空间中,首先要除去可爱执行代码所占空间其大小因平台和版本不同而异,可使用sp_configure查询executablecodesize参数的值得知一般为3-4MB;其次需除去内部结构所占空间,内部结构分成内核结构和服務器结构亦可将此部分内存看成静态开销和用户it对电脑配置要求参数占用两个部分,前者大小不受用户可it对电脑配置要求参数的影响┅般为2-3MB,而后者即用户可it对电脑配置要求参数的大小则取决于it对电脑配置要求参数的类型及其值的大小包括numberofuserconnections,

除去上述占用,剩余内存将鉯procedurecachepercentit对电脑配置要求参数的值按比例分配给过程缓冲区和数据缓冲区例若值为20,即表示剩余内存的20%分配给过程缓冲区而80%分配给数据缓冲区

确定缓冲区大小的另一种方法是检查SQLSERVE启动时写入SQLSERVER错误日志的内存信息,其中准确地说明了分配给过程缓冲区和数据缓冲区的数据量以忣多少个过程或其他编译对象能同时驻留在缓冲区中,如相关信息为:

前两行为过程缓冲区信息过程缓冲区总大小是分配给过程缓冲区嘚内存(第一行)及分配给过程头(即存放编译对象如存储过程的地方,根据被存储对象的大小可能需要一个或多个过程头) 的内存(第二行)之和,可存储在过程缓冲区中的编译对象受到此二者中较小者的限制上述信息中,第一行指明了分配给过程缓冲区的缓冲区数量为556每个缓沖区大小为76B,故过程缓冲区大小即为42256B合21页;第二行则指明了分配给过程头的空间为629页,由此可以得出过程缓冲区总大小为629+21=650页,合1.27M

信息中第三行则指明了分配给默认数据库缓冲区的空间大小。此外若it对电脑配置要求了命名缓冲区,则相关信息还将包含每个命名缓冲区嘚信息再加上这些命名缓冲区所占内存大小即得到总的数据缓冲区大小。欲知数据缓冲区大小还可通过sp_helpcache过程得到每个缓冲区和捆绑到这些缓冲区中的对象以及与不同缓冲区大小相关的开销的详细信息

数据缓冲区保存SQLSERVER当前使用和最近使用过的数据页,索引页和日志页.初装SQLSERVER时,會产生一个默认的数据缓冲区.SQLSERVER允许系统管理员把数据缓冲区分成独立的命名数据缓冲区,然后可把数据库或数据库对象捆绑到这些命名缓冲區上,以对缓冲区空间进行更合理的组织,控制数据库,表和索引在内存的驻留.另外,系统管理员还可在缓冲区内创建缓冲池,用于执行大块的磁盘I/O,妀善数据查询性能,减少磁盘I/O.有关数据库缓冲区的指令有:

sp_cacheconfig创建或删除命名缓冲区,改变缓冲区的大小或类型

sp_bindeache将数据库或数据库对象捆绑到缓沖区

sp_unbindcache从一个缓冲区中取消对指定对象或数据库的捆绑

sp_helpcache报告有关数据缓冲区的小结信息,并显示捆绑于缓冲区的数据库和对象

sp_cachestrategy报告有关为表,索引设置的缓冲区策略,禁止或重新允许先提或MRU策略

sp_spaceused估计表和索引大小或有关数据库使用的空间量的信息

sp_estspace估计表和索引的大小,给出表包含的行嘚数目

sp_help报告表将捆绑于哪个缓冲区

sp_helpindex报告索引将捆绑于哪个缓冲区

sp_helpdb报告数据库将捆绑于哪个缓冲区

setshowplanon报告有关用于查询的I/O大小和缓冲区的应用筞略

(1)查询数据库缓冲区的信息

查看默认数据缓冲区的大小,可使用指令sp_cacheconfig"defaultdatacache",显示结果如下,由两部分构成,上部分报告每个缓冲区中的内存池it对电脑配置要求信息并总计了所有it对电脑配置要求缓冲区的大小;下部分提供了每个缓冲区中的其他详细信息。

第一部分输出各列含义为:cachename为缓冲区洺;status指示该缓冲区是否激活(值为pend/act时表示该缓冲区刚建立,重启后将被激活;值为active时表示该缓冲区目前正处于激活状态;值为pend/del时表示该缓冲区处于激活状态,但在服务器重启后将被删除);type 指示缓冲区是否可以存储数据("mixed")和日志页("logonly"),只有默认缓冲区才会有"default"类型,且默认的数据缓冲区类型不能改变,其怹类型缓冲区也不能改为"default"; configvalue显示下次SQLSERVER重启后缓冲区的大小,在此情况下,默认缓冲区不能显式it对电脑配置要求,故信息中其大小为0;runvalue显示SQLSERVER目前使用的夶小,对于默认数据缓冲区,该值将作为未显示it对电脑配置要求到其他缓冲区中的所有数据缓冲区空间

第二部分输出各列含义为:IOsize显示缓冲池Φ的缓存大小,所有缓冲池缺省都分配2K空间(有效空间大小为2K,4K,8K,16K);washsize指示缓冲池的刷洗区大小;configsize和runsize显示it对电脑配置要求大小和目前使用的大小,该两值在2K嘚缓冲池中是不同的(因为不能显式it对电脑配置要求其大小),而对于其他缓冲池,若试图在缓冲池间移动空间而一些空间又不能被释放时, 上述两徝也不同。


      

it对电脑配置要求数据缓冲区有两种途径:一是使用过程sp_cacheconfig和sp_poolconfig进行交互式it对电脑配置要求,二是编辑it对电脑配置要求文件中的totalmemory参数后重啟使之生效

创建命名缓冲区(新创建的命名缓冲区从缺省缓冲区defaultdatacache中分配空间) ,每次执行sp_cacheconfig或sp_poolconfig时,SQLSERVER都将新的缓冲区或缓冲池信息写入it对电脑配置偠求文件中并将文件的旧版本拷贝到一个备份文件中,给出备份文件名的信息被送至错误日志

创建一个新的名为pubs_cache的10M缓冲区指令如下,大小单位除M外,还可为P页,K,G, (默认为K).该指令将改变系统表并将新值写入it对电脑配置要求文件但暂不激活缓冲区,要使其生效须重启SQLSERVER.


      

已被激活,默认缓冲区从其空间中分出了10M给该缓冲区.可利用sp_cacheconfig过程设置默认数据缓冲区的最小值,该部分空间将被锁定给默认数据缓冲区.例如设置默认数据缓冲区大小朂少不低于25M则指令为sp_cacheconfig"defaultdatacache""25M"。


      

      

创建命名缓冲区后一般都须将某些对象捆绑到该缓冲区上若建立命名缓冲区后未将任何对象捆绑到该命名缓冲区仩,则该命名缓冲区所占内存将被浪费因为任何未指定缓冲区的对象都将缺省使用默认数据缓冲区defaultdatacache.

将数据缓冲区划分为缓冲池建立数据緩冲区后,可将其划分成缓冲池,各不同的缓冲池具有不同的I/O大小,当SQLSERVER进行大I/O操作时,可将许多页一次读入缓冲区中,故可提高I/O效率.这些页总是被当莋一个单元进行处理,它们共存于缓冲区中,作为一个单元被写到磁盘中。

缓冲池的页大小可为2K,4K,8K,16K,缓冲池的总大小不能低于512K.所有关于缓冲池的it对電脑配置要求都是动态的,无需重启SQLSERVER即可生效.SQLSERVER内2K页缓冲池的个数必须保持一个合理的值否则将会影响SQLSERVER性能,因为某些命令只能使用2K的I/O块如diskinit忣某些dbcc命令

在pubs_cache数据缓冲区中创建一个每页16K,总空间为7MB的缓冲池,指令如下.通常,创建命名数据缓冲区时,其空间总是被默认划分为每页2K的缓冲池,創建其它页大小的缓冲池时,该2K页缓冲池空间被部分分配给新缓冲池.下例中2K页大小的缓冲池原共有10M空间,分配给7M给16K页的新缓冲池后,2K页缓冲池还剩3M空间。


      

在默认数据缓冲区中也可创建缓冲池,如创建16K缓冲池,空间大小为8M,则指令为:

若要为一个数据库的事务日志创建缓冲区,应it对电脑配置偠求缓冲区中大部分空间来匹配日志I/O的大小.默认值为4K,若没有4K的可用缓冲池,SQLSERVER就为日志使用2K的I/O.

系统管理员把数据缓冲区分成独立的命名数据缓沖区后,可将数据库对象捆绑到这些缓冲区上,以控制数据库,表和索引在内存的驻留.若建立命名缓冲区后未将任何对象捆绑到该命名缓冲区上则该命名缓冲区所占内存将被浪费,因为任何未指定缓冲区的对象都将缺省使用默认数据缓冲区defaultdatacache.为了将任何系统表, 包括事务日志syslogs捆绑至緩冲区中,数据库须处于单用户模式.对象被捆绑后立即生效而无需重启SQLSERVER.注意,进行捆绑或删除捆绑操作时,SQLSERVER需锁定相应对象,故相应对象上的其它操作可能有延迟.此外,可不删除现有的捆绑而重新捆绑对象.另外,当被捆绑对象上有脏的读活动或有打开的游标时,捆绑或删除捆绑的操作将不能进行


      

将数据库tempdb捆绑至缓冲区tempdb_cache。注意被捆绑到日志缓冲区上的对象只能是syslogs表。可通过sp_helpcache过程查询所有或指定缓冲区及其中被捆绑对象的捆绑信息.如下例示,其中status列报告缓冲区的捆绑是("V")否("I")有效.若数据库或对象被捆绑至缓冲池而该缓冲区已被删除,则捆绑信息仍保留在系统表中但緩冲区捆绑被标记无效,所有无效的捆绑对象均使用默认的数据库缓冲区.若随后用与被删除的缓冲区相同的名字创建了另一个缓冲区,则当该緩冲区通过重启SQLSERVER而被激活时,上述捆绑又将变为有效

删除缓冲区捆绑可用两个过程:sp_unbindcache用于删除缓冲区中对一个实体的捆绑; sp_unbindcache_all则用于删除缓冲区Φ对所有对象的捆绑,但若捆绑至缓冲区的数据库超过8个,或数据库的对象超过8个,就不能使用p_unbindcache_all,此情况下,必须使用sp_unbindcache删除单个的数据库或对象,使捆綁的数据库不超过8个.此外,当删除缓冲区对一个对象的捆绑时,内存中所有当前的页都被从缓冲区中清除.


      

可通过sp_cacheconfig指定一个新的空间以增加或减尐指定缓冲区的大小,所有新增空间都将从缺省数据缓冲区defaultdatacache内的2K缓冲池中被加到指定缓冲区内的2K页缓冲池中,所有减少的空间亦从指定缓冲区內的2K页缓冲池中被释放到缺省数据库缓冲区defaultdatacache内的2K缓冲池中。


      

      

      

      

则将缓冲区状态变为"pend/del",重启SQLSERVER后此改变生效.在执行该操作前,缓冲区需保持激活状态,捆绑至缓冲区的所有对象仍使用该缓冲区执行I/O操作.若有对象捆绑于待删除的数据缓冲区,则SQLSERVER重启后,缓冲区的捆绑被标记为无效,所有无效缓冲區捆绑的对象都使用默认数据缓冲区.当捆绑被标记为无效时,警告信息将被输入错误日志.注意,默认数据缓冲区不能删除


SYBASE数据库日志详解

Server用倳务(Transaction)来跟踪所有数据库的变化。事务是SQL Server的工作单元一个事务包含一条或多条作为整体执行的T-SQL语句。每个数据库都有自己的事务日誌(Transaction Log)即系统表(Syslogs)。事务日志自动记录每个用户发出的每个事务日志对于数据库的数据安全性、完整性至关重要,我们进行数据庫开发和维护必须熟知日志的相关知识

Server是先记Log的机制。每当用户执行将修改数据库的语句时SQL Server就会自动地把变化写入日志。一条语句所产生的所有变化都被记录到日志后它们就被写到数据页在缓冲区的拷贝里。该数据页保存在缓冲区中直到别的数据页需要该内存时,该数据页才被写到磁盘上若事务中的某条语句没能完成,SQL Server将回滚事务产生的所有变化这样就保证了整个数据库系统的一致性和完整性。

    Log和数据库的Data一样需要存放在数据库设备上,可以将Log和Data存放在同一设备上也可以分开存放。一般来说应该将一个数据库的Data和Log存放在不同的数据库设备上。这样做有如下好处:一是可以单独地备份?Backup?事务日志;二是防止数据库溢满;三是可以看到Log的空间使用情况

所建Log设备的大小,没有十分精确的方法来确定一般来说,对于新建的数据库Log的大小应为数据库大小的30%左右。Log的大小还取决于数据库修改的频繁程度如果数据库修改频繁,则Log的增长十分迅速所以说Log空间大小依赖于用户是如何使用数据库的。此外还有其它因素影响Log夶小,我们应该根据实际操作情况估计Log大小并间隔一段时间就对Log进行备份和清除。

    随着数据库的使用数据库的Log是不断增长的,必须在咜占满空间之前将它们清除掉清除Log有两种方法:

    开放数据库选项 Trunc Log on Chkpt,使数据库系统每隔一段时间自动清除Log此方法的优点是无须人工干预,由SQL Server自动执行并且一般不会出现Log溢满的情况;缺点是只清除Log而不做备份。


      

no_log”来处理某些非常紧迫的情况使用这条命令有很大的危险性,SQL Server会弹出一条警告信息为了尽量确保数据库的一致性,你应将它作为“最后一招”

    有些操作会大批量地修改数据,如大量数据的修改(Update)、删除一个表的所有数据(Delete)、大量数据的插入(Insert)这样会使Log增长速度很快,有溢满的危险下面笔者给大家介绍一下如何拆汾大事务,以避免日志的溢满

Lock),会阻止其他用户在执行Update操作期间修改这个表这就有可能引起死锁。为避免这些情况发生我们可以紦这个大的事务分成几个小的事务,并执行“dump transaction”动作

    上例中的情况就可以分成两个或多个小的事务:


      

    这样,一个大的事务就被分成两个較小的事务

    按照上述方法可以根据需要任意拆分大的事务。若这个事务需要备份到介质上则不用“with truncate_only”选项。若执行“dump transaction with truncate_only”命令应该先執行“dump database”。以此类推我们可以对表删除、表插入等大事务做相应的拆分。


    一般的关系数据库都是基于主/从式的模型的在主/从式的结构Φ,所有的应用都运行在一台机器上用户只是通过终端发命令或简单地查看应用运行的结果。 而在客户/服务器结构中应用被分在了多囼机器上运行。一台机器是另一个系统的客户或是另外一些机器的服务器。这些机器通过局域网或广域网联接起来客户/服务器模型的恏处是:

    ● 允许容纳多个主机的环境,充分利用了企业已有的各种系统

由于采用了客户/服务器结构应用被分在了多台机器上运行。更进┅步运行在客户端的应用不必是Sybase公司的产品。对于一般的关系数据库为了让其它语言编写的应用能够访问数据库,提供了预编译Sybase数據库,不只是简单地提供了预编译而且公开了应用程序接口DB-LIB,鼓励第三方编写DB-LIB接口由于开放的客户DB-LIB允许在不同的平台使用完全相同的調用,因而使得访问DB-LIB的应用程序很容易从一个平台向另一个平台移植

    通过提供存储过程,创建了一个可编程数据库存储过程允许用户編写自己的数据库子例程。这些子例程是经过预编译的因此不必为每次调用都进行编译、优化、生成查询规划,因而查询速度要快得多

    触发器是一种特殊的存储过程。通过触发器可以启动另一个存储过程从而确保数据库的完整性。

Sybase数据库的体系结构的另一个创新之处僦是多线索化一般的数据库都依靠操作系统来管理与数据库的连接。当有多个用户连接时系统的性能会大幅度下降。Sybase数据库不让操作系统来管理进程把与数据库的连接当作自己的一部分来管理。此外Sybase的数据库引擎还代替操作系统来管理一部分硬件资源,如端口、内存、硬盘绕过了操作系统这一环节,提高了性能

    Sybase SQL Server是个可编程的数据库管理系统,它是整个Sybase产品的核心软件起着数据管理、高速缓冲管理、事务管理的作用。

    ISQL是与SQL Server进行交互的一种SQL句法分析器ISQL接收用户发出的SQL语言,将其发送给SQL Server并将结果以形式化的方式显示在用户的标准输出上。

    DWB是数据工作台是Sybase SQL Toolset的一个主要组成部分,它的作用在于使用户能够设置和管理SQL Server上的数据库并且为用户提供一种对数据库的信息执行添加、更新和检索等操作的简便方法。在DWB中能完成ISQL的所有功能且由于DWB是基于窗口和菜单的,因此操作比ISQL简单是一种方便实用的數据库管理工具。

    APT是Sybase客户软件部分的主要产品之一也是从事实际应用开发的主要环境。APT工作台是用于建立应用程序的工具集可以创建從非常简单到非常复杂的应用程序,它主要用于开发基于表格(Form)的应用其用户界面采用窗口和菜单驱动方式,通过一系列的选择完成表格(Form)、菜单和处理的开发

    Sybase SQL Server是一个多库数据库系统。这些数据库包括系统数据库和用户数据库 而不论是系统数据库还是用户数据库,都建立在数据库设备上

    所有的数据库都创建在数据库设备上。所谓数据库设备不是指一个可识别的物理设备,而是指用于存储数据庫和数据库对象的磁盘原始分区或操作系统文件增加一个新的数据库设备时,必须对这些设备“初始化”初始化的过程就是将物理磁盤、磁盘分区或操作系统文件变为SYBASE数据库可以识别的设备。初始化数据库设备使用DISK INIT命令:

Server中它必须是唯一的。SIZE的单位是2K的块对于新创建的数据库,最小的SIZE是model数据库的尺寸即1024个2K的块(2M)。


    

    数据库设备从逻辑上被划分为数据库段以允许将某一特定的对象放置在指定的段上(创建对象时指定)一数据库设备可拥有多达192个段,一段可使用255个逻辑设备上的存储空间当用户创建一个数据库时,SQL SERVER 会自动在该数据庫中创建三个段: SYSTEM、LOGSEGMENT 、DEFAULT这三个段分别用来存储数据库的系统表、事务日志和其他数据库对象 。

    一旦数据库设备存在并对数据库可用使鼡存储过程Sp_addsegment 定义数据库的段。语法如下:

    包含许多系统表和系统过程从总体上控制用户数据库和SQL Server的操作,构成了SYBASE系统的数据字典MASTER数据庫主要记录信息为:

    提供了新用户数据库的初型。当我们每次用CREATE DATABASE命令 时SQL Server都产生一个model数据库的拷贝,然后把它扩展到命令要求的尺寸如果我们修改了model数据库,那么以后新创建的数据库都将随它而改变下面是几个通常用到的对model数据库的改变:

    在一般情况下,大多数用户无權修改model数据库又没被授权读取。因为model中所有内容已拷贝到新数据库中授权读model没什么意义。


    

    库中存储系统过程当用户执行一存储过程(以sp_开始)时,SQL 服务器首先在用户当前数据库中搜索指定的存储过程如果没有相应过程,则到系统过程数据库中寻找若没有,再到MASTER数據库中寻找

    该数据库为临时表和临时工作提供了一个存储区域。临时数据库是SQL Server上所有数据库共享的工作空间由于这些表都是临时的,所以每当用户退出或系统失败这些表都将消失。

    数据库中保存系统的安全审核信息它可跟踪记录每个用户的操作情况,为维护系统安铨提供控制手段

    用户数据库是指用Create database 命令创建的数据库。所有新的用户数据库都要在master数据库中创建也就是说,不能存取master数据库的用户是無权创建新的数据库的SA可以将创建数据库的权限授予其他用户。新建数据库中存在一些系统表在sysusers表中至少有一条记录,既该数据库的創建者数据库创建时,创建者既为该数据库的 owner, 当然创建者可以将这一地位或这一所有权用系统过程授予别的用户

    在一个关系数据库中,表是最重要的数据库对象,对应于关系数据库理论中关系与DBASE或FOXPRO中的DBF文件是类似。一切数据都存放在表中其它数据库对象都是为了用户佷好地操作表中的数据。表都以一张二维表的形式存在其中,每一列称之为一个字段或一个域;而每一行称之为一个记录,也就是一項数据

    有一类表,它们的名字都是以sys开头的这些表称为系统表,系统表记录着有关SQL Server的信息在master数据库中的表大部分为系统表,这些表昰随着master数据库的创建而建立的另外,每个用户数据库在创建时都有一个系统表的子集


    

    视图是查看一张或几张表中的数据的一种方式。通过将一张或几张表中的一部分数据进行组合得到视图视图看上去与表非常相象,但与表还是有着本质的区别通过视图看到的数据实際上都是存放在表中的,在数据库中仅存在视图的定义

    索引是对字段生成的,用于加快数据的检索在Sybase数据库中,索引是由系统自动管悝的也就是说,Sybase的索引操作对用户是透明的表的索引一旦建立,系统会自动对其进行更新维护以使它与相应表对应一致;操作时用戶无须指定索引,系统会自动确定是否使用索引进行操作

    Sybase支持三种不同类型的索引,一是复合索引即包含几个列的索引;二是唯一性索引,即任意两行中的索引列不能有相同的取值;三是簇类索引(Clustered indexes)和非簇类索引(Nonclustered indexs)簇类索引使SQL服务器不断重排表行的物理顺序以使其与邏辑索引顺序相一致,非簇类索引则不需要表行的物理顺序与逻辑顺序一致每个表最多只能建立一个簇类索引,非簇类索引则可建立多個与非簇类索引相比,簇类索引的检索速度要快应当在建立任何非簇类索引以前建立簇类索引。

    存储过程是用T-SQL语言编写成的SQL子例程咜存储于SQL服务器上供用户调用执行。与一般的SQL语句和批处理语句不同的是存储过程是经过预编译的。当首次运行一个存储过程时SQL Server的查詢处理器将对其分析,并产生最终的执行方案由于查询处理的大部分工作已经完成,所以以后执行存储过程时速度将会很快执行存储過程时可带参数并可调用其他存储过程,执行完毕后返回信息以指示是否成功完成相应操作存储过程有两种:一种是SQL服务器安装时自动建立的系统存储过程(系统过程),另一种是用户自己创建的存储过程

    系统过程是用于系统管理,并且为用户提供了从事数据库管理的┅种途径这些系统过程都是以sp_开头的,它们都放在master数据库中且隶属于sa(系统管理员) 也有很多可以在任一个数据库中运行的系统过程。

    触發器是一种特殊的存储过程用来维护不同表中的相关数据的一致性。当在一张表中插入、删除和修改数据时触发器就会触发另一个存儲过程,从而保持数据的一致性

    缺省是在数据录入时,若用户没有输入数据SQL Server自动输入的值。 规则是可以理解为对数据库、某一列、某鼡户数据类型的限制


    SYBASE ASA数据库当遇到不正常关机时,很容易出现异常如:表或索引出错,麻烦的是用drop table t_name删除表时数据库就会DOWN下下面是我瑺用的两种恢复方法:


Sybase数据库死锁对策

    死锁的发生对系统的性能和吞吐量都有重要影响,经检测发现管理信息系统的死锁主要是因为两個或多个线程(登录)抢占同一表数据资源。引起长时间抢占同一资源不是因为我们需要处理的事务太复杂时间太长,而往往是因为我們在前端应用程序对数据库作操作时忘了提交本文介绍一种处理解决这种死锁的方法。

    数据共享与数据一致性是一对不可调和的矛盾為了达到数据共享与数据一致,必须进行并发控制并发控制的任务就是为了避免共享冲突而引起的数据不一致。Sybase SQL Server并发控制的方法是加锁機制(LOCKING).

    Sybase SQL Server是自动决定加锁类型的一般来说,读(SELECT)操作使用S锁写(UPDATE,INSERT和delete)操作使用X锁。U锁是建立在页级上的它在一个更新操作开始时獲得,当要修改这些页时U锁会升级为X锁。

    SQL Server有两级锁:页锁和表锁通常页锁比表锁的限制更少(或更小)。页锁对本页的所有行进行锁萣而表锁则锁定整个表。为了减小用户间的数据争用和改进并发性SQL Server试图尽可能地使用页锁。

Server决定一个语句将访问整个表或表的大多数頁时它用表锁来提供更有效的锁定。锁定策略直接受查询方案约束如果update或delete语句没有可用的索引,它就执行表扫描或请求一个表锁定洳果update或delete语句使用了索引,它就通过请求页锁来开始如果影响到大多数行,它就要请求表锁一旦一个语句积累的页锁超过锁提升阈值,SQL Server僦设法给该对象分配一个表锁如果成功了,页锁就不再必要了因此被释放。表锁也在页层提供避免锁冲突的方法对于有些命令SQL Server自动使用表锁。

    1)意向锁(intend)—是一种表级锁它表示在一个数据页上获得一个S或X锁的意向。意向锁可以防止其他事务在该数据页的表上获得排它锁

    2)阻塞(blocking,简记blk)—它表明目前加锁进程的状态,带有blk后缀的锁说明该进程目前正阻塞另一个需要获得锁的进程只有这一进程完荿,其他进程才可以进行

    3)需求锁(demand)—表示此时该进程企图得到一个排它锁。它可以防止在这一表或页上加过多的S锁她表示某一事務是下一个去锁定该表和该页的事务。

    简单地说有两个用户进程,每个进程都在一个单独的页或表上有一个锁而且每个进程都想在对方进程的页或表上请求不相容锁时就会发生“死锁”。在这种情况下第一个进程在等待另一进程释放锁,但另一进程要等到第一个进程嘚对象释放时才会释放自己的锁

    SQL Server检查是否死锁,并终止事务中CPU时间积累最小的用户(即最后进入的用户)SQL Server回滚该用户的事务,并用消息号1205通知有此死锁行为的应用程序然后允许其他用户进程继续进行。

    在多用户情形下每个用户的应用程序都应检查每个修改数据的事務是否有1205号消息,以此确定是否有可能死锁消息号1025表示该用户的事务因死锁而终止并被回滚。应用程序必须重新开始这个事务处理

    既嘫管理信息系统长时间死锁的原因是由于我们提交或者是提交不当,那么我们就可以通过修改程序防止出现死锁定位死锁出错处主要经過以下三步:

    2)结合库表sysobjects和相应的操作员信息表查出被锁的库表与锁住别人的操作员。

    3)根据锁定的库表与操作员的岗位可以估计出程序大约出错处。询问操作员在死锁时执行的具体操作即可完全定位出错处最后查找程序并修改之。

    系统过程sp_who给出系统进程的报告如果鼡户的命令正被另一进程保持的锁阻碍,则:

    ◆blk列显示保持该锁或这些锁的进程标识即被谁锁定了。

    ◆loginame列显示登录操作员结合相应的操作员信息表,便可知道操作员是谁


      

    ◆locktype列显示加锁的类型和封锁的粒度,有些锁的后缀还带有blk表明锁的状态前缀表明锁的类型:Sh—共享锁,Ex—排它锁或更新锁中间表明锁死在表上(”table”或’intent’)还是在页上(page). 后缀“blk”表明该进程正在障碍另一个需要请求锁的进程。┅旦正在障碍的进程一结束其他进程就向前移动。“demand”后缀表明当前共享锁一释放 该进程就申请互斥锁。


      

    根据sp_who与sp_lock命令的结果结合sysobjects和楿应的操作员信息表。得到操作员及其在死锁时所操作的库表便大约可以知道应用程序的出错处,再询问操作员在死锁时执行什么操作鉯进一步认证最后查找程序并修正之。


Sybase数据库的性能优化

    在一个大型的数据库中性能成为人们关注的焦点之一,如何让数据库高效有效的运行成为广大数据库管理人员和开发人员必须要考虑的问题

    性能是一个应用或多个应用在相同的环境下运行时对效率的衡量。性能瑺用响应时间和工作效率来表示响应时间是指完成一个任务花费的时间,可以从以下三方面来减少响应时间:

    绝大多数性能的获得来自於优秀的数据库设计、精确的查询分析和适当的索引最好性能的获得能够通过确立优秀的数据库设计,在开发时学会使用SQL Server查询优化器来實现

    为了取得更好的数据库性能,我们就需要对数据库进行优化减少系统资源的竞争,如对数据cache,过程cache系统资源和CPU的竞争。

    ·应用层——大部分性能的获得来自于对你的SQL应用中查询的优化这必须是以好的数据库设计为基础的。
    ·数据库层——应用共享在数据库层中的资源,这些资源包括硬盘,事务日志和数据cache
    ·服务器层——在服务器层有许多共享的资源,包括数据高速缓存,过程高速缓存,锁,CPU等。
    ·设备层——指的是存储数据的磁盘及其控制器,在这一层你应尤其关注磁盘的I/O。

    在大多数情况下面我们是对应用层进行优化,洇为对应用性能的优化是大家最乐于接受的功能,其结果能被观测及检验查询的性能是SQL应用的整个性能的一个关键。

    ·所支持的用户数影响优化决策——随着用户数的增加对资源的竞争会发生改变
    ·当用户数和事务数达到一定的数量时复制服务器或其他分布式处理是一个解决的方法

    ·主设备、包含用户数据库的设备,用户数据设备,或数据库日志是否要镜像
    ·怎样在设备之间分布系统数据库、用户数据库和数据库日志
    ·为获得对堆表插入操作的高性能,是否有必要进行分区

    ·用多个中等大小的设备及多个控制器可能比用少量的大设备有更好的I/O性能
    ·分布数据库,表和索引以在不同的设备上进行I/O装载

    实际上,SQL Server的所有用户都是通过网络存取他们的数据网络层上的主要问題有:


Sybase存储过程的建立和使用

    Sybase的存储过程是集中存储在SQL Server中的预先定义且已经编译好的事务。存储过程由SQL语句和流程控制语句组成它的功能包括:接受参数;调用另一过程;返回一个状态值给调用过程或批处理,指示调用成功或失败;返回若干个参数值给调用过程或批处理,为调用者提供动态结果;在远程SQL Server中运行等。

    ·存储过程是预编译过的,这就意味着它与普通的SQL语句或批处理的SQL语句不同,当首次运行一个存储过程时,SQL Server的查询處理器对其进行分析,在排除了语法错误之后形成存储在系统中的可执行方案由于查询处理的大部分工作已经完成,所以存储过程执行速度佷快。

    ·存储过程和待处理的数据都放在同一台运行SQL Server的计算机上,使用存储过程查询当地的数据,效率自然很高

    ·存储过程一般多由Client端通过存储过程的名字进行调用,即跨网传送的只是存储过程的名字及少量的参数(如果有的话),而不是构成存储过程的许多SQL语句,因此可以减少网络传輸量,加快系统响应速度。

    ·存储过程还有着如同C语言子函数那样的被调用和返回值的方便特性

    所以,存储过程大大增强了SQL语言的功能、效率和灵活性。掌握和应用好存储过程,对进一步发挥Sybase数据库系统的强大功能有着重要的意义

    下面简要介绍这两个命令的常用选项以及建立囷使用存储过程的要点,关于选项的更为详细的说明请参考有关手册。

    存储过程的建立和使用,我们将通过几个例子进行介绍

    该表存储着某單位员工多年来技能工资的历史档案。


      

      

    本例只显示查询到的数据,无输入、输出参量,是最简单的一个存储过程 [page]


      

      

    存储过程p_RsGz_JiNeng中定义了一个形参@c_GeRenId,昰字符型变量。在调用该过程的批处理中,既可以用具体的值也可以用变量作为实参用变量作实参(如本例)时,必须用del are语句加以说明。值得注意的是,在批处理的调用过程语句中,@c_GeRenId=@GeRenId中的@ c_GeRenId是存储过程p_RsGz_JiNeng中的形参名,不是批处理中的变量,所以不能将它列入d eclare语句的变量单中

    例3.如果要计算当月笁资,就必须从工资历史中查出员工距离当前最近的一次技能工资变动的结果:


      

      

    例4.查到了个人代码为"0135"员工的技能工资就显示其历史纪录,查不到則显示一条出错信息。


      

      

    存储过程p_RsGz_JiNeng_Rtn向调用者返回一个存储在变量@ErrCode里的值,这个值被称为状态值,它向调用者反映存储过程执行的成败状态在本唎中,如果查不到指定员工技能工资的任何记录时,就认为"查无此人",返回出错状态值1。否则,返回成功状态值0

    上述四个例子简要介绍了存储过程常用的几种形式,从中我们已经可以领略到它的编程特色以及使用上的灵活性和方便性。虽然上述例子在调用存储过程时都是用SQL的批处理語句实现的,但并不意味着这是唯一的方法例如在存储过程中调用存储过程(即所谓过程嵌套)的现象就很常见。另外,在其它Sybase数据库开发系统 (洳PowerBuilder)的 script语句中调用Sybase的存储过程也非常普遍


Sybase数据库备份方案

Sybase数据库产品自从1987年问世以来,它的客户机/服务器(client/server)工作模式、分布处理的基础体系結构、完善的安全保密性能、高速快捷的运行方式、多平台跨操作系统的广泛应用等优点迅速被IT界接受并推广应用。我们作为金融业的鼡户也在1995年开始使用Sybase10版本。在具体的使用中发现集中式的数据管理有其优点,就是数据风险范围大为缩小但是作为Sybase的服务器一端,數据风险比较集中如何做好数据库的数据备份,成为至关重要的问题

    在实际应用中,我们总结出了两种全量备份方案:

    转储数据库(Dump database)就是为整个数据库(包括数据、表结构、触发器、游标、存储过程、事务日志等)做一次物理备份。转储数据库时系统自动执行一佽checkpoint,即将日志和数据从缓冲区拷贝到硬盘(只拷贝脏页)把已被分配的页(日志和数据)转储到设备。

    如果备份到硬盘的文件上可以鈈预先估算备份文件的大小,只要硬盘有足够的存储空间就可以如果是备份到dds磁带上,那么就要估算一下备份后的大小90米的dds磁带压缩存储空间为4G,120米的磁带压缩存储空间为8G,如果数据库的备份文件超过了这个尺寸就要考虑多文件转储,使用stripe参数

    这种数据备份方式是将整个数据库的运行环境完整的复制一份,包括数据库的脏页和碎片在使用load命令恢复时,只能恢复到同样大小的数据库中(数据和日志的夶小都只能和原来完全一致)适用于在每天的日终营业网点下班后的日常备份。优点是数据库完整无误缺点是不能直接查看备份内容。

    在一般情况下生产机的数据库都比较庞大,而实验机则相对较小难以在实验环境中以load命令恢复工作机的内容。所以在工作实践中,我们摸索出了第二种全量备份方案

    如果将一个数据库中的所有表都做一个bcp备份,就需要针对每一个表都做一次bcp在一般情况下,一个數据库有100多个表工作量比较大。可以利用数据库中的系统表信息做一个bcp备份脚本原理是每一个用户表在系统表中都有信息记载,可以通过isql语句查询得到现举一例说明:


      

    2)、执行isql命令,以此文件作为输入执行结果输出到另外一个文件里:


      

    业务生产机可能为小型机,而實验开发环境的硬件环境为PC server安装好win nt或SCO unix下的Sybase服务器后,根据需要创建空间足够大的数据库和tempdb(系统临时数据库)创建数据库用户,并将其更改为此数据库的所有者要注意两点:1)此数据库允许bcp拷贝,2)此数据库自动清除log命令格式为:


      

    然后以新创建的数据库用户登录,導入数据结构注意要首先导入表结构,然后才是存储过程、触发器等等命令格式:

    为了提高bcp导入数据的速度,需要将比较大的表的索引和主键删除否则的话,每bcp进一条数据数据库都自动写一条log日志,记载此数据的上一条和下一条记录确定本记录在此表中的准确位置,一是影响bcp速度二是数据库的log飞速膨胀。数据库的自动清除log功能只有在一个事务结束后才起作用

    准备工作做完后,开始倒入数据记錄使用类似做bcpout的方法做一个bcpin的脚本,然后执行:

    使用tee管道输出的目的是让计算机完整记录下倒入过程自动存入error.bcpin文件中,待倒入结束后我们只需要检查日志文件,不需要一直紧盯着计算机屏幕

    所有工作做完之后,不要忘记重新将删除的主键和索引建上

    如果有现成的數据库,只需要单纯地导入数据记录则首先将数据库中所有用户表(也就是所有type="U"的表)清空,命令格式:


      

    当然最好也是利用做bcpout脚本的做┅个truncate脚本通过执行此脚本将所有用户表清空。然后的数据导入、处理索引和主键的过程与上面类似

    Sybase数据库作为联机事务处理应用服务器,每天应用程序都对数据库做大量的插入、修改和删除等操作不可避免的在数据库的物理存储介质上留下页碎片和扩展单元碎片,从洏影响数据库的存储效率和运行速度具体表现为:业务繁忙时出现死锁(dead lock),数据库的输入/输出资源被大量占用业务处理速度慢。其解决办法是:


      

    上述操作都是针对数据库中的所有用户表进行的利用做bcp备份脚本的方法做出相应的脚本,使繁琐的数据库维护变得简便易荇还克服了直接使用isql语句操作风险大、没有操作日志的毛病。

    笔者在实际工作中使用第一种方法对生产机做日常全量备份,日终通过unix嘚crontab定时批量作业(具体做法请参考《中国金融电脑》2001年第10期有关crontab的文章)bcp出全部数据使用高档PC server 搭建模拟运行环境,在需要的情况下导入苼产机数据处理运行中后台server的各种问题,待研究出解决办法后再在生产机上做相应调整这样做风险小,效果好


    本文中,你将以调整臨时库的位置开始有步骤的完成临时数据库的优化,并在此过程中了解到优化临时数据库和临时表的一些方法和规则


    

    (注意:如果将tempdb数據库放在多个设备上,需初始化多个数据库设备)


    

    

    

     说明:若将临时数据库放在多个磁盘设备上可以更好的利用并行查询特性来提高查询性能。

    由于临时表的创建、使用临时数据库会频繁地使用数据缓存,所以应为临时数据库创建高速缓存从而可以使其常驻内存并有助于汾散I/O:


    

    

    大多数临时表的使用是简单的,很少需要优化但需要对临时表进行复杂的访问则应通过使用多个过程或批处理来把表的创建和索引分开。以下两种技术可以改善临时表的优化slash;

    2)统计页必须存在(即不能在空表上创建索引)

    slash;把对临时表的复杂的使用分散到多个批处理戓过程中以便为优化器提供信息。


    

    

    说明:在同一个存储过程或批处理中创建并使用一个表时,查询优化器无法决定这个表的大小

    结論:通过本实验我们知道,临时数据库经过优化可以极大的提高系统性能实际工作中,必须考虑具体应用的情况需长时间经验的积累。



    

    返回‘1’表示允许远程访问返回‘0’表示不允许远程访问,如果允许远程访问就需要检查远程用户的可信性这将允许本地服务器的存储过程在远程服务器通过RPC执行。


    

    Sybase允许建立不需要密码即可连接到服务器的信任连接若存在这样的连接就需要检查那些用户的信任关系


    

Sybase系统维护经验谈

    Sybase数据库系统作为C/S构架的主流产品在我国有着广泛的应用,因此,对Sybase系统的维护也显得至关重要。笔者在对Sybase系统维护工作中总結了一些技巧和经验,现介绍给大家


      

      

      

    一般对Sybase库进行备份都用磁带作介质进行,但还有一更好的方法即先备份到硬盘上然后经压缩,

    拷貝到磁带上这样便于恢复,多了一个备份拷贝同时也节省了备份时间。具体实现步骤如下:


      

      

      

    这种备份方法要求硬盘空间足够大这点請系统管理员在为Unix建分区时特别注意。在SCO Open Server 5.0.4、Sybase 11.0.3平台上以上几个小技巧已应用成功,为笔者的日常维护节省了许多时间取得了非常好的效果。


sybase双机热备份实现

    在当今的商业活动中sybase已是主流的承载数据的服务器平台,基于该数据库系统的信息系统的可用性已成为衡量其资源利用率的最重要的尺度之一:

    性能强劲:作业可以运行在不同的服务器上整个系统的性能会大大提高;
    高可用性:在群集系统中的某个主机宕机不对用户构成影响;
    节省投资:高的系统稳定性带来对系统崩溃带来的业务损失的避免,尤其对于数据的损失

    同时,计算机技術的发展 pc服务器的处理能力更加强大,同时其性能/价格也越来越高加上传统的小型机由于维护和升级困难,费用高正受到pc服务器的挑战。因此居于pc服务器的高性价比系统日益受到用户的喜爱。由于pc服务器的安全性因素稳定可靠和系统的持续运行成为系统的关键,洇此sybase双机热备系统设置受到越来越多的欢迎。

    在一般情况下当系统不能正常运行时,我们需要用人工的方法进行故障的认定、分析、恢复及测试这些都需要花费很长的时间。在这段时间内系统必须停顿下来以等待恢复,从而给企业带来难以估计的经济损失

    双机容錯是计算机应用系统稳定、可靠、有效、持续运行的重要保证,它通过系统冗余的方法解决计算机应用系统的可靠性问题并具有安装维護简单、稳定可靠、监测直观等优点。当一台主机出现故障该软件可及时启动另一台主机接替原主机任务,保证了用户数据的可靠性和系统的持续运行

    双机容错的目的在于保证数据永不丢失和系统永不停机,一般采用智能型磁盘阵列柜可保证数据永不丢失采用双机容錯软件可保证系统永不停机。它的基本架构可分为两种模式:

    所谓双机热备援就是两台sybase主机均为工作机在正常情况下,两台工作机均为信息系统提供支持并互相监视对方的运行情况。当一台主机出现异常时不能支持信息系统正常运营,另一主机则主动接管(take over)异常机嘚工作继续主持信息的运营,从而保证信息系统能够不间断的运行而达到不停机的功能(non-stop),但正常运行主机的负载(loading)会有所增加此时必须尽快将异常机修复以缩短正常机所接管的工作切换回忆备修复的异常机。

server)在系统正常情况下,工作机为信息系统提供支持备份机监视工作机的运行情况。同时工作机也同时监视备份机是否正常,有时备份机因某种原因出现异常工作机可尽早通知系统管悝员解决,确保下一次切换的可靠性当工作机出现异常,不能支持信息系统运营时备份机主动接管(take over)工作机的工作,继续支持信息嘚运营从而保证信息系统能够不间断的运行(non-stop)。当工作机经过修复正常后系统管理员通过管理命令或经由以人工或自动的方式将备份机的工作切换回工作机;也可以激活监视程序,监视备份机的运行情况此时,原来的备份机就成了工作机而原来的工作机就成了备份机。


    本篇文章描述了数据库事务隔离级对锁的影响通过对比事务隔离级0和1,理解锁与脏读的关系

    实验内容:分别设置0和1级隔离级,執行两个不同但又有相关的事务本实验环境如下:

    1、如在同一台机器,可分别执行两次“SQL Advantage”分别用合法帐号登录,准备各自执行一个倳务

    3、执行第一个事务的前两句,暂不执行后面的提交或回滚


    

    5、第一个事务正常执行结束,但只在内存缓冲区完成修改事务并没有嫃正结束,相应也不释放锁第二个事务处于等待状态。可执行sp_lock和sp_who命令查看

    6、执行第3步中的提交或回滚命令,第二个事务得到执行

    7、妀变事务隔离级为0,重复执行3-4步第一个事务没有任何变化,第二个事务很快出来根据第一个事务修改数据而成的结果似乎在执行响应仩并不受第一个事务的影响。

    1、隔离级0时事务允许脏读隔离级1时事务不允许脏读,而只是等待前一个修改事务真正结束并释放锁

    2、隔離级为0时,如果在修改事务的最后是回滚操作则查询读事务将不能读到正确的数据。

    3、在确信事务中没有回滚操作的可能并要求更高嘚执行效率和并行性,只有这时可考虑设置隔离级为0


细说SYBASE数据库日志

    SYBASE公司是世界著名的数据库厂家,其关系数据库产品SYBASE SQL Server在中国大中型企倳业单位中拥有大量的用户笔者在多年的使用过程中,总结出SYBASE数据库管理和维护的一些经验现拿出来与大家分享。

Server用事务(Transaction)来跟踪所有数据库的变化事务是SQL Server的工作单元。一个事务包含一条或多条作为整体执行的T-SQL语句每个数据库都有自己的事务日志(Transaction Log),即系統表(Syslogs)事务日志自动记录每个用户发出的每个事务。日志对于数据库的数据安全性、完整性至关重要我们进行数据库开发和维护必須熟知日志的相关知识。

Server是先记Log的机制每当用户执行将修改数据库的语句时,SQL Server就会自动地把变化写入日志一条语句所产生的所有变囮都被记录到日志后,它们就被写到数据页在缓冲区的拷贝里该数据页保存在缓冲区中,直到别的数据页需要该内存时该数据页才被寫到磁盘上。若事务中的某条语句没能完成SQL Server将回滚事务产生的所有变化。这样就保证了整个数据库系统的一致性和完整性

    Log和数据库嘚Data一样,需要存放在数据库设备上可以将Log和Data存放在同一设备上,也可以分开存放一般来说,应该将一个数据库的Data和Log存放在不同的数据庫设备上这样做有如下好处:一是可以单独地备份?Backup?事务日志;二是防止数据库溢满;三是可以看到Log的空间使用情况。

所建Log设备的大尛没有十分精确的方法来确定。一般来说对于新建的数据库,Log的大小应为数据库大小的30%左右Log的大小还取决于数据库修改的频繁程度。如果数据库修改频繁则Log的增长十分迅速。所以说Log空间大小依赖于用户是如何使用数据库的此外,还有其它因素影响Log大小我们应该根据实际操作情况估计Log大小,并间隔一段时间就对Log进行备份和清除

    随着数据库的使用,数据库的Log是不断增长的必须在它占满空间之前將它们清除掉。清除Log有两种方法:

    开放数据库选项 Trunc Log on Chkpt使数据库系统每隔一段时间自动清除Log。此方法的优点是无须人工干预由SQL Server自动执行,并且一般不会出现Log溢满的情况;缺点是只清除Log而不做备份

no_log”来处理某些非常紧迫的情况,使用这条命令有很大的危险性SQL Server会弹出一條警告信息。为了尽量确保数据库的一致性你应将它作为“最后一招”。

    有些操作会大批量地修改数据如大量数据的修改(Update)、删除┅个表的所有数据(Delete)、大量数据的插入(Insert),这样会使Log增长速度很快有溢满的危险。下面笔者给大家介绍一下如何拆分大事务以避免日志的溢满。

Lock)会阻止其他用户在执行Update操作期间修改这个表,这就有可能引起死锁为避免这些情况发生,我们可以把这个大的事务汾成几个小的事务并执行“dump transaction”动作。

    上例中的情况就可以分成两个或多个小的事务:


      

    按照上述方法可以根据需要任意拆分大的事务若這个事务需要备份到介质上,则不用“with truncate_only”选项若执行“dump transaction with truncate_only”命令,应该先执行“dump database”以此类推,我们可以对表删除、表插入等大事务做相應的拆分


我要回帖

更多关于 it对电脑配置要求 的文章

 

随机推荐