当前位置:文档之家› sybase数据库慢的请留意

sybase数据库慢的请留意

sybase数据库慢的请留意
sybase数据库慢的请留意

关于sybase的配置-(数据库慢的请留意)

说明:数据库性能慢的主要原因有两个

1)数据库服务配置不合理

2)应用程序不合理

遇到数据库性能下降时通常先检查数据库服务配置方面有没有可以改善的,修改之后再观察一段时间,如果性能没有改善的话就要分析应用程序上有没有可以调整的地方:索引是否合理,sql 语句是否优化等。

本篇主要分析数据库服务的配置:

问题分析:

小型机硬件:rp2470双机、CPU700M*2、内存512M*6

以下是现场发过来的主要配置情况:

lock scheme datapages //datapages锁模式是性能最差的锁,一般不用number of locks 300000 //通常不需要配置太多的锁10万就够了

max memory 500000 //物理内存3G,配给sybase的为1G明显不合理number of open indexes 4000 //通常2000

number of open objects 4000 //通常2000

number of user connections 300 //

number of worker processes 0 //多cpu要打开相应工作进程数

procedure cache size 154800 //存储过程缓存不要超过100M

total data cache size 453699 //明显该值太小

allocate max shared memory 0 //打开sybase占用内存的开关

max online engines 2

number of engines at startup 2

问题处理:

建议先调整以下配置

sp_configure "max memory",1150000 //sybase占用2.3G内存

sp_configure "allocate max shared memory",1

sp_configure "user log cache size",4096 //用户日志缓存用来缓存客户段信息

sp_configure "procedure cache size",50000 //100M存储过程缓存

sp_configure "number of worker processes",2

备份sybase主目录下的***.cfg

sp_cacheconfig "default data cache","1G" //配置缺省数据缓存1G

sp_cacheconfig "default data cache", "cache_partition = 2"

reboot sybase服务

备份sybase主目录下的***.cfg

sp_cacheconfig "tempdb_cache","400M" //由于内存较充裕,通常会分配一部分内存给tempdb,提高查询的速度

sp_bindcache "tempdb_cache","tempdb" //绑定400M的内存给tempdb

reboot sybase服务

上述操作如无法启动sybase服务则可以将备份的***.cfg替换当前的配置文件,重新boot sybase服务

总结:

sybase 11.9.2 & 12.0 & 早期版本的配置通常为以下几项:

total memory //定义sybase 服务能够使用的物理内存

number of lock //定义锁的数目

number of open database //打开的数据库个数,缺省是12个,数据库数目超过12个时要调整该值

number of devices //数据库的设备数,缺省是10,通常是不够的,需要调整number of user connections //用户连接数,根据需要设置,通常一个用户数消耗100K的内存这个版本的数据库缓存、日志缓存、过程缓存是不用手工配置的

sybase 12.5版本的配置通常为以下几项:

lock scheme //锁模式,sybase推荐使用缺省(allpages),但是一些并发操作多的表(temp_telebill)要使用行锁(datarows),减少被锁现象

number of locks //通常不需要配置太多的锁10万就够了

max memory //sybase服务能够使用的物理内存,通常配置成物理内存的70%~80%,上例内存是3G,配给sybase的为1G明显不合理

allocate max shared memory //打开sybase占用内存的开关

number of open indexes //通常2000,该值配置过低时会在日志中报该值不够,最终导致性能缓慢

number of open objects //通常2000,该值配置过低时会在日志中报该值不够,最终导致性能缓慢

number of user connections //用户连接数,根据实际需求来配置,盲目多配会浪费内存procedure cache size //存储过程缓存不要超过100M,用来缓存过程的编译代码。number of open database //打开的数据库个数,缺省是12个,数据库数目超过12个时要调整该值

number of devices //数据库的设备数,缺省是10,通常是不够的,需要调整

user log cache size //日志缓存用来保留客户端连接信息的,每个连接都会生成一个user log cache size大小的cache,该值缺省为2K,主机内存充裕时可以配成4K。

在12.5及以后的版本中都要手工的配置default data cache,缺省为8M,几乎所有的用户操作都是在这个缓存中进行的,如果不优化的话严重影响数据库性能。

优化的方法是把尽可能多的内存配置给default data cache ,即:’max memory’-'所有其他内存消耗(用户数,锁数等)’-‘少许预留内存’=default data cache。

sp_cacheconfig "default data cache","1G" //配置缺省数据缓存1G

sp_cacheconfig "default data cache", "cache_partition = 2"

关于cpu的配置

max online engines //sybase 使用的cpu的个数

number of engines at startup //激活cpu的个数

number of worker processes //多cpu要打开相应工作进程数

Sybase数据库死锁对策

Sybase 数据库死锁对策 死锁的发生对系统的性能和吞吐量都有重要影响,经检测发现,管理信息系统的死锁主要是因为两个或多个线程(登录)抢占同一表数据资源。引起长时间抢占同一资源不是因为我们需要处理的事务太复杂,时间太长,而往往是因为我们在前端应用程序对数据库作操作时忘了提交.本文介绍一种处理解决这种死锁的方法。 Sybase 封锁原理 数据共享与数据一致性是一对不可调和的矛盾,为了达到数据共享与数据一致,必须进行并发控制。并发控制的任务就是为了避免共享冲突而引起的数据不一致。Sybase SQL Server 并发控制的方法是加锁机制(LOCKING ). 锁的类型 Sybase SQL Server 有三种封锁类型:排它锁(exclusive lock,简称X 锁);共享锁(share lock,简称S 锁);更新锁(update lock,简称U 锁)。这三种锁的相容矩阵表如下: ×:表示不兼容。∨:表示兼容。 Sybase SQL Server 是自动决定加锁类型的。一般来说, 读(SELECT )操作使用S 锁,写(UPDATE,INSERT 和delete )操作使用X 锁。U 它在一个更新操作开始时获得,当要修改这些页时,U 锁会升级为X 锁。 锁的力度 SQL Server 有两级锁:页锁和表锁。通常页锁比表锁的限制更少(或更小)。页锁对本页的所有行进行锁定,而表锁则锁定整个表。为了减小用户间的数据争用和改进并发性,SQL Server 试图尽可能地使用页锁。 当SQL Server 决定一个语句将访问整个表或表的大多数页时,它用表锁来提供更有效的锁定。锁定策略直接受查询方案约束,如果update 或delete 语句没有可用的索引,它就执行表扫描或请求一个表锁定。如果update 或delete 语句使用了索引,它就通过请求页锁来开始,如果影响到大多数行,它就要请求表锁。一旦一个语句积累的页锁超过锁提升阈值,SQL Server 就设法给该对象分配一个表锁。如果成功了,页锁就不再必要了,因此被释放。表锁也在页层提供避免锁冲突的方法。对于有些命令SQL Server 自动使用表锁。 锁的状态 SQL SERVER 加锁有三种状态: 1)意向锁(intend )—是一种表级锁,它表示在一个数据页上获得一个S 或X 锁的意向。意向锁可以防止其他事务在该数据页的表上获得排它锁。 2)阻塞(blocking,简记blk )—它表明目前加锁进程的状态,带有blk 后缀的锁说明该进程目前正阻塞另一个需要获得锁的进程,只有这一进程完成,其他进程才可以进行。 3)需求锁(demand )—表示此时该进程企图得到一个排它锁。它可以防止 可申请的锁 已有的锁 S U X S ∨ ∨ × U ∨ × × X × × ×

SYBASE数据库故障处理方法

SYBASE数据库故障处理方法 Sybase数据库故障处理方法 一、 Sybsystemprocs 库“挂起”解决办法 1. 修改Sybase.cfg 文件,修改Sybase 数据库可以修改系统参数. 2. $ vi Sybase.cfg 查找―allow updates‖ ,将其修改为1.(缺省值为0). 既 allow updates to system tables=1 重新启动系统. 3. 用 isql 登录到sql server 中,修改 master库中sysdatabases 表中 sybsystemprocs 库对应的 status 的值为-32768. $isql –Usa –P 1> update master..sysdatabases 2> set status = -32768 where name =‖ sybsystemprocs‖ 1>go 1>shutdown with nowait 2>go 关闭数据库 重新启动. 4.用 isql 登录到sql server 中,修改 master库中sysdatabases 表中 sybsystemprocs 库对应的 status 的值为0. $isql –Usa –P 1>update master..sysdatabases 2>set status = 0 where name =‖ sybsystemprocs‖ 3>go 1>shutdown with nowait 2>go 关闭数据库重新启动. 5. 将Sybase.cfg 中的‖allow updates to system‖ 的值改为0. 二、如何恢复master数据库 ASE can't setup and has no valid dump of master 1、编辑RUN_servername 在命令行最后加入:-T3607 2、单用户模式启动ASE $cd install $startserver -f RUN_servername -m 3、bcp out系统表 $bcp master..sysdevices out /directory.spec/devs -Usa -P -c $bcp master..sysdatabases out /directory.spec/dbs -Usa -P -c $bcp

MySQL数据库性能(SQL)优化方案-期末论文

高级数据库技术——期末论文 基于SQL查询的MySQL数据库性能优化研究 :XX 学号:2014XXXXX 学院:计算机学院

摘要: 查询是数据库系统中最基本也是最常用的一种操作,是否具有较快的执行速度,已成为数据库用户和设计者极其关心的问题。在研究开源数据库管理系统MySQL 查询优化技术的基础上,主要结合传统SQL操作优化、深度分析 MySQL 源代码、现代数据库发展几方面进行诸如参数调优,MySQL关联查询,重写相关规则等容展开优化分析研究。 关键词:查询优化,查询重用,查询重写,计划优化

一、传统SQL查询优化操作 1.选取最适用的字段属性 MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快。因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽可能小。例如,在定义邮政编码这个字段时,如果将其设置为CHAR(255),显然给数据库增加了不必要的空间,甚至使用VARCHAR这种类型也是多余的,因为CHAR(6)就可以很好的完成任务了。同样的,如果可以的话,我们应该使用MEDIUMINT而不是BIGIN来定义整型字段。 另外一个提高效率的方法是在可能的情况下,应该尽量把字段设置为NOT NULL,这样在将来执行查询的时候,数据库不用去比较NULL值。 对于某些文本字段,例如“省份”或者“性别”,我们可以将它们定义为ENUM类型。因为在MySQL中,ENUM类型被当作数值型数据来处理,而数值型数据被处理起来的速度要比文本类型快得多。这样,我们又可以提高数据库的性能。 2.使用连接(JOIN)来代替子查询(Sub-Queries) MySQL从4.1开始支持SQL的子查询。这个技术可以使用SELECT语句来创建一个单列的查询结果,然后把这个结果作为过滤条件用在另一个查询中。例如,我们要将客户基本信息表中没有任何订单的客户删除掉,就可以利用子查询先从销售信息表中将所有发出订单的客户ID取出来,然后将结果传递给主查询,如下所示: DELETE FROM customerinfo WHERE CustomerID NOT in (SELECT CustomerID FROM salesinfo ) 使用子查询可以一次性的完成很多逻辑上需要多个步骤才能完成的SQL操作,同时也可以避免事务或者表锁死,并且写起来也很容易。但是,有些情况下,

Sybase数据库故障处理方法

Sybase数据库故障处理方法 一、Sybsystemprocs 库“挂起”解决办法 1.修改Sybase.cfg 文件,修改Sybase 数据库可以修改系统参数. 2.$ vi Sybase.cfg 查找―allow updates‖ ,将其修改为1.(缺省值为0). 既allow updates to system tables=1 重新启动系统. 3.用 isql 登录到sql server 中,修改master库中sysdatabases 表中 sybsystemprocs 库对应的status 的值为-32768. $isql –Usa –P 1>update master..sysdatabases 2>set status = -32768 where name =‖sybsystemprocs‖ 1>go 1>shutdown with nowait 2>go 关闭数据库重新启动. 4.用 isql 登录到sql server 中,修改master库中sysdatabases 表中 sybsystemprocs 库对应的status 的值为0. $isql –Usa –P 1>update master..sysdatabases 2>set status = 0 where name =‖sybsystemprocs‖ 3>go 1>shutdown with nowait 2>go 关闭数据库重新启动. 5.将Sybase.cfg 中的‖allow updates to system‖的值改为0. 二、如何恢复master数据库 ASE can't setup and has no valid dump of master 1、编辑RUN_servername 在命令行最后加入:-T3607 2、单用户模式启动ASE $cd install $startserver -f RUN_servername -m 3、bcp out系统表 $bcp master..sysdevices out /directory.spec/devs -Usa -P -c $bcp master..sysdatabases out /directory.spec/dbs -Usa -P -c $bcp master..sysusages out /directory.spec/usages -Usa -P -c

SYBASE数据库常见的问题总结

SYBASE 数据库常见问题总结 SYBASE 数据库常见问题总结 ..................................................................... 错误!未定义书签。 1. SYSLOGS日志满了进不了系统,如何清除日志启动系统 .................... 错误!未定义书签。 2. 数据库日志损坏时重建日志启动数据库的解决办法.............................. 错误!未定义书签。 3. 数据库处于可疑状态的解决方法.............................................................. 错误!未定义书签。4.Sybase系统崩溃了,没有备份,但设备文件还存在,如何恢复数据库?错误!未定义书签。 5.不小心直接删除了日志的设备文件,如何恢复数据库?..................... 错误!未定义书签。6.sa密码忘记了导致isql -Usa -P******进不去怎么办?......................... 错误!未定义书签。7.关于sybase的配置-(数据库慢的请留意) ........................................ 错误!未定义书签。8.设备路径更改的方法................................................................................. 错误!未定义书签。9.dump文件load后数据库访问不了解决办法........................................ 错误!未定义书签。10.sybase数据库备份方案........................................................................... 错误!未定义书签。11.master数据库状态被置为-32768后的处理方法 ................................... 错误!未定义书签。 1. SYSLOGS日志满了进不了系统,如何清除日志启动系统 业务系统数据库不能正常启动,对于这一类问题,我们按照如下步骤解决: 第一步,启用allow updates to system tables,这样可以使具有系统管理员角色的用户能够改变系统表并可创建和修改系统表的存储过程,其中系统表包括master数据库中所有Sybase 提供的表以及用户数据库中所有以“sys”开头的表和在sysobjects表中其ID值小于或等于100的表。系统表的不正确变更会导致数据库损坏和数据丢失,修改系统表时务必要使用begin transaction来保护数据库不受可能损坏数据库的错误影响,完成修改后应立即禁用allow updates to system tables。 1>sp_configure "allow update",1 2>go 第二步,Adaptive Server中的每个数据库在sysdatabases中都有相应的一行,安装Adaptive Server后,master数据库、model数据库、sybsystemprocs和tempdb数据库在sysdatabases 中都将有相应的条目,如果已经安装审计功能,sybsecurity数据库也将在其中有相应的条目。修改sysdatabases表,将testdb的状态修改为-32768,然后在关闭Adaptive Server后重新启动Adaptive Server。 1> update sysdatabases set status=-32768 where name = "testdb" 2>go 1>shutdown 2>go 第三步,由于事务日志已经很满,不能使用常规方法转储此事务日志,如果使用了dump

Sybase数据库故障处理方法

Sybase数据库故障处理方法 一、 Sybsystemprocs 库“挂起”解决办法 1.修改文件,修改Sybase 数据库可以修改系统参数. 2.$ vi 查找“allow updates” ,将其修改为1.(缺省值为0). 既 allow updates to system tables=1 重新启动系统. 3.用isql 登录到sql server 中,修改 master库中sysdatabases 表中sybsystemprocs 库对应的 status 的值为-32768. $isql –Usa –P 1>update master..sysdatabases 2>set status = -32768 where name =”sybsystemprocs” 1>go 1>shutdown with nowait 2>go 关闭数据库重新启动. 4.用isql 登录到sql server 中,修改 master库中sysdatabases 表中sybsystemprocs 库对应的 status 的值为0. $isql –Usa –P 1>update master..sysdatabases 2>set status = 0 where name =”sybsystemprocs” 3>go 1>shutdown with nowait 2>go 关闭数据库重新启动.

5.将中的”allow updates to system”的值改为0. 二、如何恢复master数据库 ASE can't setup and has no valid dump of master 1、编辑RUN_servername 在命令行最后加入:-T3607 2、单用户模式启动ASE $cd install $startserver -f RUN_servername -m 3、bcp out系统表 $bcp master..sysdevices out /devs -Usa -P -c $bcp master..sysdatabases out /dbs -Usa -P -c $bcp master..sysusages out /usages -Usa -P -c $bcp master..syslogins out /logins -Usa -P -c $bcp master..sysconfigures out /configures -Usa -P -c $bcp master..syscharsets out /charsets -Usa -P -c 4、shutdownASE 5、创建新master设备 $buildmaster -d -s (new_master_device_size以2K为单位) 6、编辑RUN_servername 将指定master设备指定为新创建的master设备,并删除在第1步中增加的参数。 7、删除/dbs、/usages文件中有关master、tempdb、model的内容。

日常工作中使用PowerBuilder和sybase遇到的问题

日常工作中使用PowerBuilder和sybase遇到的问题 (例子中的数据库名称为yanglao) 1.在PowerBuilder使用数据管道 在sybase中进行数据导入导出时,使用数据管道是最方便的一种方法,但也有缺点,数据量过大时,执行效率慢,甚至有时一张表需要几十个小时。如果Database Devices创建的不合理,数据库文件和日志文件不够大,在使用数据管道时,在途会停止操作。如果出现这种情况,先查看一下数据库的log space,如下图: 看一下Free(MB)是否有剩余,如果用完需要清楚日志。在SQL Advantage中执行下面语句:dump transaction yanglao with no_log 附数据管道的报错信息(百度中可搜索) Start()函数返回一个integer值时数据管道的运行是否成功,返回值的意义为: 1 函数执行成功 -1 打不开数据管道 -2 列数太多

-3 要创建的表已经存在 -4 要增加数据的表不存在 -5 未建立与数据库的连接 -6 参数错误 -7 列不匹配 -8 访问源数据库的sql语句致命错误 -9 访问目标数据库的sql语句致命错误 -10 已经达到指定的最大错误数 -12 不正确的表达法 -13 需要关键字、但未指定关键字 -15 数据管道已经在运行 -16 源数据库出错 -17 目标数据库出错 -18 目标数据库处于只读状态,不能写入数据 2.小写字符替换成大写字符 update table1 set sfz=str_replace(sfz,'x','X') str_replace(string要被替换的字符串, string用于替换的字符串,string替换成的字符串) 3.在sybase(版本sybase12.5)中创建database device后,找不到设备 业务情形:创建database后,重新启动数据库系统,在database device管理中找不到该设备。 原因:创建的设备超过2G 解决方法:将超过2G的设备进行分解,例如:需要建10G的设备的,可以建5个2G的设备 4.先打开workspace,再连接数据库报错: 提示信息为: DBMS SYC Adaptive Server Enterprise is not supported in your current installation 解决方法: 百度了许多中方法,都没有解决。自己给powerbuilder打上补丁,问题解决 5.关于sybase的客户端字符属性的问题 字符集的安装 设置默认字符 sp_configure 'default character set id',171 具体步骤: ?(这里SYBASE的安装路径为c:\sybase) c:\>cd \sybase\charsets\cp936 ?c:\sybase\charsets\cp936> charset -U用户名(默认sa) -P密码-S数据库服务器名称 binary.srt cp936 更改默认字符集为cp936(在SQL环境中). ?执行select name,id from syscharsets(会列出字符集对应的id号) ?找到name为cp936对应的id(假设为171) ?执行sp_configure "default character set id",171 6. 重启server两次(注:第一次启动后, server会自动宕掉,需要第二次重启后才能使用) 6.备份还原sybase数据库

SQLServer数据库性能优化技术

1数据库设计 要在良好的SQLServer方案中实现最优的性能,最关键的是要有1个很好的数据库设计方案。在实际工作中,许多SQLServer方案往往是由于数据库设计得不好导致性能很差。所以,要实现良好的数据库设计就必须考虑这些问题。 1.1逻辑库规范化问题 一般来说,逻辑数据库设计会满足规范化的前3级标准: 1.第1规范:没有重复的组或多值的列。 2.第2规范:每个非关键字段必须依赖于主关键字,不能依赖于1个组合式主关键字的某些组成部分。 3.第3规范:1个非关键字段不能依赖于另1个非关键字段。 遵守这些规则的设计会产生较少的列和更多的表,因而也就减少了数据冗余,也减少了用于存储数据的页。但表关系也许需要通过复杂的合并来处理,这样会降低系统的性能。某种程度上的非规范化可以改善系统的性能,非规范化过程可以根据性能方面不同的考虑用多种不同的方法进行,但以下方法经实践验证往往能提高性能。 1.如果规范化设计产生了许多4路或更多路合并关系,就可以考虑在数据库实体中加入重复属性。 2.常用的计算字段可以考虑存储到数据库实体中。 比如某一个项目的计划中有计划表,其字段为:项目编号、年初计划、二次计划、调整计划、补列计划…,而计划总数是用户经常需要在查询和报表中用到的,在表的记录量很大时,有必要把计划总数作为1个独立的字段加入到表中。这里可以采用触发器以在客户端保持数据的一致性。 3.重新定义实体以减少外部属性数据或行数据的开支。相应的非规范化类型是: 把1个实体分割成2个表。这样就把频繁被访问的数据同较少被访问的数据分开了。这种方法要求在每个表中复制首要关键字。这样产生的设计有利于并行处理,并将产生列数较少的表。 把1个实体分割成2个表。这种方法适用于那些将包含大量数据的实体。在应用中常要保留历史记录,但是历史记录很少用到。因此可以把频繁被访问的数据同较少被访问的历史数据分开。而且如果数据行是作为子集被逻辑工作组访问的,那么这种方法也是很有好处的。1.2生成物理数据库 要想正确选择基本物理实现策略,必须懂得数据库访问格式和硬件资源的操作特点,主要是内存和磁盘子系统I/O。这是一个范围广泛的话题,但以下的准则可能会有所帮助。 1.与每个表列相关的数据类型应该反映数据所需的最小存储空间,特别是对于被索引的列更是如此。比如能使用smallint类型就不要用integer类型,这样索引字段可以被更快地读取,而且可以在1个数据页上放置更多的数据行,因而也就减少了I/O操作。 2.把1个表放在某个物理设备上,再通过SQLServer段把它的不分簇索引放在1个不同的物理设备上,这样能提高性能。尤其是系统采用了多个智能型磁盘控制器和数据分离技术的情况下,这样做的好处更加明显。 3.用SQLServer段把一个频繁使用的大表分割开,并放在2个单独的智能型磁盘控制器的数据库设备上,这样也可以提高性能。因为有多个磁头在查找,所以数据分离也能提高性能。 4.用SQLServer段把文本或图像列的数据存放在1个单独的物理设备上可以提高性能。1个专用的智能型的控制器能进一步提高性能。 2与SQLServer相关的硬件系统 与SQLServer有关的硬件设计包括系统处理器、内存、磁盘子系统和网络,这4个部分基本

解决Sybase数据库死锁

解决Sybase数据库死锁 2005-10-19 17:29 ChinaUnix 我要评论(1)字号:T | T 死锁的发生对系统的性能和吞吐量都有重要影响,经检测发现,管理信息系统的死锁主要是因为两个或多个线程(登录)抢占同一表数据资源。 AD: 死锁的发生对系统的性能和吞吐量都有重要影响,经检测发现,管理信息系统的死锁主要是因为两个或多个线程(登录)抢占同一表数据资源。引起长时间抢占同一资源不是因为我们需要处理的事务太复杂,时间太长,而往往是因为我们在前端应用程序对数据库作操作时忘了提交.本文介绍一种处理解决这种死锁的方法。 Sybase封锁原理 数据共享与数据一致性是一对不可调和的矛盾,为了达到数据共享与数据一致,必须进行并发控制。并发控制的任务就是为了避免共享冲突而引起的数据不一致。Sybase SQL Server并发控制的方法是加锁机制(LOCKING)。 锁的类型可申请的锁已有的锁 S U X S ∨∨× U ∨×× X ××× Sybase SQL Server有三种封锁类型:排它锁(exclusive lock,简称X锁);共享锁(share lock,简称S锁);更新锁(update lock,简称U锁)。这三种锁的相容矩阵表如下: ×:表示不兼容。∨:表示兼容。Sybase SQL Server是自动决定加锁类型的。一般来说,读(SELECT)操作使用S锁,写(UPDATE,INSERT和delete)操作使用X锁。U锁是建立在页级上的,它在一个更新操作开始时获得,当要修改这些页时,U锁会升级为X锁。 锁的力度 SQL Server有两级锁:页锁和表锁。通常页锁比表锁的限制更少(或更小)。页锁对本页的所有行进行锁定,而表锁则锁定整个表。为了减小用户间的数据争用和改进并发性,SQL Server 试图尽可能地使用页锁。 当SQL Server决定一个语句将访问整个表或表的大多数页时,它用表锁来提供更有效的锁定。锁定策略直接受查询方案约束,如果update或delete语句没有可用的索引,它就执行表扫描或请求一个表锁定。如果update或delete语句使用了索引,它就通过请求页锁来开始,如果影响

基于SQLServer2000的数据库性能调整技术

基于SQLServer2000的数据库性能调整技术摘要:本文对数据库应用系统的各个部分特别是数据库服务器、SQL 语句、存储过程等的性能调整作了大量的分析和试验,提出了一些具体的性能调整方法和措施,并取得较好的应用效果。 关键词:SQL;数据库;性能优化 一、基于SQLServer2000的数据库性能调整 1.系统规划 数据库服务器是整个数据库应用系统的核心,它的性能高低直接影响整个系统的性能。SQL Server2000数据库的很多方面都可以被优化或调整,以便给予系统更好的性能,诸如硬件、SQL Server配置、数据库设计、SQL语句、SQL索引、复制、备份与恢复及其他。 2.优化SQL语句 SQL优化的实质就是在结果正确的条件下,用优化器可以识别的语句,充份利用索引,减少表扫描的I/O次数,尽量避免表搜索的发生。实在SQL的性能优化是一个复杂的过程,上述这些只是在应用层次的一种体现,深进研究还会涉及数据库层的资源配置、网络层的流量控制以及操纵系统层的总体设计。在这里就不展开了,在第五章将有专题讨论。 3.存储过程调整 SQL Server存储过程是用Transact-SQL语句PROCEDURE创建的,

并可用ALTER PROCEDURE语句进行修改。存储过程定义包含两个主要组成部分:过程名称及其参数的说明,以及过程的主体所有设计优良的Microsoft SQL ServerTM 2000应用程序都应当使用存储过程。不论是否将应用程序的业务逻辑写进存储过程都应如此。 4.高性能备份与恢复 需要确定数据的可用性要求,以便选择适当的备份和还原策略。总体备份策略定义备份的类型和频率以及所需的硬件特性和速度。测试备份和恢复过程。测试有助于确保拥有从各种故障中恢复所需的备份,并且认真正的故障发生时可以快速平稳地执行恢复过程。 5.用户治理 工程设计企业传统的组织结构按专业及职责设置,是面向部分的层次治理结构。这种组织结构治理层次多,各个机构间协调复杂,造成了信息交流和传递困难,设计周期长等题目。 二、优化SQL语句和存储过程 数据库调整中一个很重要的方面就是应用程序的调整,关键在于SQL语句的优化和存储过程的应用。本章结合具体的项目实践,讨论了一些关于SQL语句的优化和存储过程的应用的方法和措施。 1.优化SQL语句 SQL优化的实质就是在结果正确的条件下,用优化器可以识别的语句,充份利用索引,减少表扫描的次数,尽量避免表搜索的发生。

Sybase数据库日常维护

数据库日常维护工作是系统管理员的重要职责。其内容主要包括以下几个部分: 一、备份系统数据 sybase 系统的备份与恢复机制保证了在系统失败时重新获取数据的可能性。sql server 提供了两种不同类型的恢复机制:一类是系统自动完成的恢复,这种措施在每次系统启动时都自动进行,保证了在系统瘫痪前完成的事务都写到数据库设备上,而未完成的事务都被回退;另一类是人工完成的恢复,这是通过dump 和load 命令来执行人工备份和恢复工作。因此定期备份事务日志和数据库是一项十分重要的日常维护工作。 1、备份数据库 每一个数据库都应在创建之后卸出,从而提供一个装入基点。在此之后按排定的时间周期表卸出。比如每周五卸出数据库。对一般数据库系统卸出数据库周期建议为每周一次。 除了按计划周期卸出数据库之外,还需在每次运行没有日志的操作后卸出数据库。例如: ·每次强制地运行了dump tran with no_log (因为数据库的磁盘空溢出);

·每次用sp_dboption 允许select into/bulkcopy 做快速拷贝,或用select into 命令创建一个永久性的表,或使用了writetext 命令。 卸出数据库的命令为: dump database database_name to dump_device database_name 是要卸出的数据库名称,dump_device 是卸出设备的名称。用系统过程sp_helpdevice 可以获得设备的信息。 下面一条命令用来卸出数据库my_db : dump database my_db to db_bk_dev 2、备份事务日志 如果事务日志与数据库放在同一个设备上,则事务日志不应与数据库分开备份。master 数据库和小于4m 的用户数据库就是这种情况。一般数据库系统的数据库和日志分别放在不同的设备上,因此,可以用dump tran 命令单独备份日志。 备份事务日志的周期直接影响数据的恢复程度,因此建议每天备份。

sybase数据库安全

安全性控制的层次结构 Sybase数据库为开发者提供了有效的安全性控制策略,既注重数据访问的安全性和监督用户的登录,又兼顾了用户在使用数据时对速度的要求。Sybase中的安全性是依靠分层解决的,它的安全措施也是一级一级层层设置的,真正做到了层层设防。第一层是注册和用户许可,保护对服务器的基本存取;第二层是存取控制,对不同用户设定不同的权限,使数据库得到最大限度的保护;第三层是增加限制数据存取的视图和存储过程,在数据库与用户之间建立一道屏障。 安全性问题的基本原则 Sybase基于上述层次结构的安全体系,提出以下几点实施安全的原则: 选择性访问控制(Discretionary Access Controls DAC),DAC 用来决定用户是否有权访问数据库对象; 验证,验证就是保证只有授权的合法用户才能注册和访问; 授权,对不同的用户访问数据库授予不同的权限; 审计,监视系统发生的一切事件。 Sybase的安全控制策略 基于上述四点原则,Sybase提供了四种基本策略进行安全性控

制。 在创建服务器时,Sybase将所有权限都分配给系统管理员,系统管理员可以在服务器上增加注册者(Logins)(只有系统管理员有此权限)。Logins可以登录服务器但不能访问数据库。数据库属主(DBO)有权增加用户(users),users可以使用分配给它的数据库。当users 访数据库时,首先以Logins身份进入服务器,系统自动打开默认数据库,Logins身份转化为users身份。 在用户登录后,系统要通过口令进行验证,以防止非法用户盗用他人的用户名进行登录。这一验证步骤在登录时的注册对话框中出现,注册与验证同时进行,用户名与口令有一个不符,登录请求被拒绝。 权限使得用户在数据库中活动范围仅被容许在小范围内,大大提高了数据库的安全性。在Sybase系统中,对象的所有者或创建者自动被授予对对象的许可权。所有者则有权决定把许可权授予其他用户。Sybase提供了GRANT和REVOKE命令,以便授予或取消许可权。数据库所有者和系统管理员享有特殊许可权,包括数据库所有者(Database Owner,DBO)对自己所拥有的数据库中的一切对象具有全部许可权;系统管理员(System Administrantion,SA)享有服务器内的所有数据库的一切对象的许可权。 Sybase提供了Audit Server,它是能够全面审计跟踪服务器上一切活动的工具,在某些情况下,我们难以阻止非法操作的发生,但

如何解决Sybase数据库堆栈溢出导致的异常

如何解决Sybase数据库堆栈溢出导致的异常 (v 1.0)

版本说明

目录 版本说明 (2) 故障现象: (4) 故障原因: (4) 处理方法: (4)

故障现象: SYBASE数据库异常退出,重新启动失败,访问不了数据库。查看数据库日志,出现如下系统日志:00:00000:00000:2004/10/13 23:30:00.75 kernel Stack overflow detected: limit: 0xf8446ab0, sp: 0xf845275c 00:00000:00000:2004/10/13 23:30:00.75 kernel *** Stack guardword corrupted. 00:00000:00000:2004/10/13 23:30:00.77 kernel pc: 0x006654d0 pcstkwalk+0x24(0xf8452688, 0x00000000, 0x0000270f, 0x00000002, 0xfffffff8) 00:00000:00000:2004/10/13 23:30:00.78 kernel pc: 0x006653dc ucstkgentrace+0x194(0x00040004, 0x00000000, 0x00000000, 0xf8eff590, 0x00000000) 00:00000:00000:2004/10/13 23:30:00.78 kernel pc: 0x00632300 ucbacktrace+0xa8(0xf8eff590, 0x00000001, 0x00040004, 0x00000008, 0xf845275c) 故障原因: SYBASE数据库堆栈溢出,可能是某些很长的where子句、较长的选择列表、深层嵌套的存储过程在执行时导致原来配置的堆栈大小不够用导致,需要修改堆栈大小。 处理方法: 方法一: *********************************************************************** use master go sp_configure stack go 会显示如信息: Parameter Name Default Memory Used Config Value Run Value -------------- ------- ----------- ------------ --------- esp execution stacksize 34816 0 34816 34816 stack guard size 4096 #908 4096 4096 stack size 46080 #10216 46080 46080 *********************************************************************** 注意记下上述结果中 stack size 对应的Default值(红色字体标注),用下面的命令扩大为现在的2倍。 sp_configure 'stack size', 92160

SYBASE数据库常见的问题总结

SYBASE 数据库常见问题总结 SY BASE数据库常见问题总结 (1) 1. SY SLOGS日志满了进不了系统,如何清除日志启动系统 (1) 2. 数据库日志损坏时重建日志启动数据库的解决办法 (4) 3. 数据库处于可疑状态的解决方法 (6) 4.Sybase 系统崩溃了,没有备份,但设备文件还存在,如何恢复数据库? (9) 5.不小心直接删除了日志的设备文件,如何恢复数据库?. 15 6.sa 密码忘记了导致isql -Usa -P****** 进不去怎么办?16 7.关于sybase 的配置-(数据库慢的请留意) (17) 8.设备路径更改的方法 (22) 9.dump 文件load 后数据库访问不了解决办法 (23) 1 0.sybase 数据库备份方案 (23) 1 1 .master 数据库状态被置为-32768 后的处理方法 (30) 1. SY SLOGS日志满了进不了系统,如何清除日志启动系统业务系统数据库不能正常启动,对于这一类问题,我们按照如下步骤解决: 第一步,启用allow updates to system tables ,这样可以使具有系统管理员角色的用户能够改变系统表并可创建和修改系统表的存储过程,其中系统表包括master 数据库中所有Sybase 提供的表以及用户数据库中所有以“sys”开头的表和在sysobjects 表中其ID 值小于或等于100 的表。系统表的不正确变更会导致数据库损坏和数据丢失,修改系统表时务

必要使用begin transaction 来保护数据库不受可能损坏数据库的错误影响,完成修改后应立即禁用allow updates to system tables 。 1>sp_configure "allow update",1 2>go 第二步,Adaptive Server 中的每个数据库在sysdatabases 中都有相应的一行,安装Adaptive Server 后,master 数据库、model 数据库、sybsystemprocs 和 tempdb数据库在sysdatabases 中都将有相应的条目,如果已经安装审计功能,sybsecurity 数据库也将在其中有相应的条目。修改sysdatabases 表,将testdb 的状态修改为-32768 ,然后在关闭Adaptive Server 后重新启动Adaptive Server 。 1> update sysdatabases set status=-32768 where name = "testdb" 2>go 1>shutdown 2>go 第三步,由于事务日志已经很满,不能使用常规方法转储此事务日志,如果使用了dumptransaction 或dumptransaction with truncate_only 命令,而命令又由于日志空间不足失败时,可以使用dump transaction 的特殊选项with no_log ,此选项可截断事务日志而不记录转储事务事件。所有dumptran with no_log 都将在Adaptive Server 错误日志中进行报告,这些消息包括执行此命令的用户ID 、指示成功或失败的消息,no_log 是唯一生成错误日志消息的转储选项。但是这个选项(包括with truncate_only )没有提供任何方法可恢复自从上次例行转储后提交

SYBASE解决数据库被标记为“suspect”的方法

SYBASE解决数据库被标记为“suspect”的方法 (转载) 现象: Error 926 Severity Level 14 Error Message Text Database "xx" cannot be opened - it has been marked SUSPECT by recover Explanation 当你使用Transact_SQL命令操作这个数据库的数据时,出现这个信息,这是一个严重的错误,如果你要使用这个数据库的数据,必须改正这个错误。 用SQL Advantage登录到SQL Server,须用sa帐号 sp_configure "allow updates", 1 go reconfigure with override go update master..sysdatabases set status =-32768 Where name="database_name" /*database_name 是你的数据库名*/ go shutdown with nowait go 这时重新启动SQL Server,再有SA帐号注册到SQL Server。 update master..sysdatabases set status=0 Where name="database_name" /*database_name 是你的数据库名*/ go sp_configure "allow updates" ,0 go reconfigure with override go 如果你的数据库原来有dboption,你需要重新设置这些选项。可以参考《系统管理员手册》

sybase启动时926错误处理方法

sybase数据库启动时报926错误 Message: 926, State 1, Severity 14 -- 'Database 'FYRSSD128' cannot be opened. An earlier attempt at recovery marked it 'suspect'. Check the SQL Server errorlog for informat ion as to the cause. 一般是由于服务器突然断电或者数据库异常关闭,导致数据库损坏,处于置疑状态。 解决办法: 1.打开允许修改系统表的属性,设置数据库的状态为-32768 sp_configure "allow update", 1 go SELECT * FROM sysdatabases WHERE name ='FYRSSD128' go update master..sysdatabases set status=-32768 where name=" FYRSSD128" go 重启数据库 shutdown with nowait go 2. 设置数据库的状态为0,重建数据库日志 UPDATE master..sysdatabases SET status = 0 WHERE name ='FYRSSD128' GO DBCC rebuild_log(FYRSSD128,1,1) GO 重启数据库 shutdown with nowait go 3. 如果数据库的状态为0,设置数据库属性 EXEC sp_dboption FYRSSD128, "select into/bulkcopy/pllsort",true GO EXEC sp_dboption FYRSSD128, "trunc log on chkpt",true GO EXEC sp_dboption FYRSSD128, "abort tran on log full",true GO 4. 如果数据库的状态为12,说明数据库已经正常。 SELECT * FROM sysdatabases WHERE name ='FYRSSD128' go 关闭允许修改系统表的属性 sp_configure "allow update", 0 go

相关主题
文本预览
相关文档 最新文档