| Sybase数据库碎片优化方法 |
|
作者:北极圈 文章来源:本站整理 点击数: 更新时间:2008-6-25 16:56:26 |
|
4. 创建bcp in脚本并导入数据
● 创建包含下列SQL语句的文件:
cre_bcp_in. sql
select “bcp” + name + “in ./” + name + “_out.txt -Udboname -Pdbopwd -Ssys_name -c”from sysobjects where type = ‘U’
order by name
go
● isql -Udboname -Pdbopwd -Ssystemname < cre_ bcp_in. sql >; b_in
● 编辑输出文件,去掉文件第一行和最后两行无关的字符:vi b_in
● 从文本中导入数据:sh b_in
5. 更新数据库状态
Sybase不自动维护索引的统计信息,当用truncate table截断数据库时,索引并没有改变,所以必须用update statistics来确保索引的统计信息对应当前表数据的统计。
● 创建包含下列SQL语句的文件:
cre_upd_st. sql
select “update statistics” + name from sysobjects where type = “U” order by name
go
● isql -Udboname -Pdbopasswd -Ssystemname < cre_upd_st. sql >; upd_st. sql
● 编辑输出文件,去掉文件第一行和最后两行无关的字符,在最后一行加入 go构成完整的SQL语句:
vi upd_st. sql
● 更新数据库状态:
isql -Udboname -Pdbopasswd -Ssystemname < upd_st. sql
至此,基本上完成了数据库用户表的碎片整理工作。
小结
在整理过程中,有以下两点需要注意:
1. Tempdb的大小
当Sybase执行bcp in脚本时,会占用导入数据2倍的tempdb空间,因此在执行前要仔细估计最大的table的大小,保证有足够的tempdb空间。当空间不够时,要考虑用分割table或删除陈旧数据的方法缩小table的大小,或者考虑增加tempdb的大小。
2. 数据库配置选项的设置
当数据库执行bcp in脚本时会产生大量的log,为保证bcp in进程不致因为log溢出而中断,应该设置database的选项“truncate log on chkpt”为“true”。
虽然Sybase数据库是自优化的,但只要数据库是动态的,数据库碎片现象就会存在。在OLTP应用的场合,随着数据的不断增大,系统变得越来越缓慢,并且经常出现死锁时,应该检查数据库的碎片,并且采用以上方法进行优化。
实际上,应该定期做数据库的碎片整理,保证数据库的物理存储经常处于最优状态,相对于增加硬件而言,这是一种更好的保持数据库性能的低成本的途径。 上一页 [1] [2]
|
| 文章录入:admin 责任编辑:admin |
|
上一个文章: SYBASE数据库用户管理基本概念 下一个文章: Sybase内存和缓冲区管理 |
| 【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |