Sybase15笔记2

 三、        数据库管理
1、        设备与数据库管理
创建一个设备:
Disk init name = “dev02”,physname = “e:dev02.dat”,dsync=false,size = “50M”
创建一个数据库:
Create database mydb on dev02=”10M” log on logo2=”2M” 
扩充数据库空间:
Alter database mydb on dev02=10
护充日志空间:
Alter database mydb log on log02 = 10M

将日志与数据分别放在不同的物料设备上,有以下几点好处:
        做日志备份时节省时间和资源
        建立固定日志大小,以防止其它数据库活动竞争空间
        提高性能
        降低数据库和日志同时损坏的可能性

2、        数据库的备份与恢复
        数据库备份: 
                Dump database 数据库名(mydb) to “e:mydb.dump”
        数据库恢复:
                Load database数据库名(testdb) from “e:mydb.dump” with headeronly

        日志满后需要截日志解决:
dump tran mydb with truncate_only
dump tran mydb with no_log
truncate_only 与 no_log的区别详见数据库备份与恢复
当日志满或者别的原因导致有事务挂起的时候,with   truncate_only是不管用的,因为它也会被挂起,用with   no_log是没问题的,只要数据库的状态是online,不过可能会导致数据库不一致,尤其是在此之前做过alter   database扩数据库空间的话。
        为什么有些时候无法截断日志
有两种情况,可能出现这个问题。一是应用系统给SQL Server发送了一个用户自定义事务,一直未提交,这个最早活跃事务阻碍系统截断日志。二是客户端向SQL Server发送了一个修改数量大的事务,清日志时,该事务还正在执行之中,此事务所涉及的日志只能等到事务结束后,才能被截掉。 
对于第一种情况,只要督促用户退出应用或者提交事务,系统管理员便可清掉日志。因为给SQL Server发送Dump transaction with no-log或者with truncate-only,它截掉事务日志的非活跃部分。所谓非活跃部分是指服务器检查点之间的所有已提交或回退的事务。而从最早的未提交的事务到最近的日志记录之间的事务日志记录被称为活跃的。从此可以看明,打开的事务能致使日志上涨,因为在最早活跃事务之后的日志不能被截除。 
对于第二种情况,道理也同上。只是在处理它时,需慎重从事。如果这个大事务已运行较长时间,应尽量想法扩大数据库日志空间,保证该事务正常结束。若该事务被强行回滚,SQL Server需要做大量的处理工作,往往是正向执行时间的几倍,系统恢复时间长,可能会影响正常使用的时间

3、        数据库表管理 
表在用过一段时间后会出现性能下降,插入、删除、更新数据非常慢等问题,可用optdiag命令查看当前表的统计信息,查看聚簇率是否降低,是否有页碎片等信息,可用以下几种方法消除页碎片: 
对于APL表
可删除索引重建
用BCP命令将数据导一遍
用SELECT INTO 命令重新建表
对于DOL表,除用以上方式外,还可以用reorg rebuild tablename命令完成

备份表操作:
bcp [数据库名]..[表名] out e:aa.txt –C –U[用户] –P[密码] –S[服务名]

4、        Tempdb 库的管理
以下几种操作会对tempdb 有影响
        order by 
利用聚集索引可以避免利用tempdb资源,因为聚集索引本身可以排序
        group by 
尽可能少的使用group by 
        where 关联
set sort_merge on 可以提高关联速度,不过可能会占用系统资源
        在tempdb中创建表
create table #name 会话级
create table name  shutdown级
        建索引也可以利用

使用sp_helpdb命令可查看tempdb的情况 Sqlclub.cn 

为tempdb指定命名缓存,首先创建命名缓存,前面已经介绍创建语法,再绑定

                使用tempdb的三大问题:
1)、数据库大小的问题
扩数据库大小或可以自己建一个数据库放里面
2)、性能问题
将tempdb放到速度较快的设备上,或将tempdb放到命名缓存里,考虑将tempdb放到多个设备上
3)、锁的竞争
系统表的锁竞争,SYBASE12.3.0中支持多个临时数据库,可以将用户绑定到其它临时数据库上。  

 

四、        性能优化
1、        Adaptive server 优化器:
优化器统计值存储在两个系统表中:
Systabstats:存储表和索级级的统计,如页数、行数、索引页数、聚集率等
Sysstatistics:存储列级已知的统计,如密度值、直方图值等
将统计值存放在表中的好处:
统计值的空间受数据库尺寸的限制
基于表的统计值有很高的精确度
基于表的方法提供了一个全局仓库,使排错和收集信息简单化
基于表的方法有可扩展性,对以后加强功能的处理比较简单、容易

2、        使用optdiag查看优化器统计
Optdiag是显示、修改、模拟统计值的命令行工具
查看表的统计值命令:
Optdiag statistics dbname..tbname –U –P

管理优化器统计值:
Create index 创建索引 
Upate statistics 更新统计值
Delete statistics 删除统计值
Sp_flushstats 从内存中刷新统计值

使用sp_sysmon 监控数据页聚集率

3、        数据库调优
数据库系统参数配置的调优:
修改内存参数
合理的分配存储过程缓冲区与数据缓冲区的大小
合理分配网络包的大小
设置锁的个数
设置锁的机制
建立索引与表分区
数据库服务器可用CPU的个数
扩充TEMPDB的大小
增加use log cache size

4、        应用程序的调优:
尽量将事务最小化
索引的建立与SQL的写法要匹配
尽量减少网络流量
并发数多时,可让客户端承担部分工作量

扫描慢的时候加  set sort_merge on 合并连接会快很多,缺点是会在执行期间占用很多资源。会话结束后自动结束  

你可能感兴趣的:(sql,应用服务器,SQL Server,网络应用,配置管理)