Sybase SQL Server日志问题普及(三)

2009-1-7    来源:Sybase中国    我要评论
   | |

导读:管理好数据库log是用户操作数据库必须考虑的一面。本文详细解释了如何管理大的transactions的一些方法、技巧。

关键词:Sybase SQL Server Sybase日志问题 log管理

正在加载数据...

七、管理大的transactions

有些操作是大批量地修改数据,log增长速度十分快,如:

◆大量数据修改

◆删除一个表的所有记录

◆基于子查询的数据插入

◆批量数据拷贝

下面讲述怎样使用这些transaction 使log 不至溢满:

大量数据修改

例:


1>;update large_tab set col_1=0 
2>;go 

若这个表很大,则此update动作在未完成之前就可能使log满,引起1105错误(log full)而且执行这种大的transaction所产生的exclusive table loc,阻止其他用户在update期间修改这个表,这可能引起死锁。为避免这些情况,我们可以把这个大的transaction分成几个小 的transactions,并执行dump transaction 动作。

上述例子可以分成两个或多个小transactions.

例如:


1>;update large_tab set col1=0 
2>;where col2 3>;go 
1>;dump transaction database_name with truncate_only 
2>;go 
1>;update large_tab set col1=0 
2>;where col2>;=x 
3>;go 
1>;dump transaction database_name with truncate_only 
2>;go 
 

若这个transaction 需要备份到介质上,则不用with truncate_only 选项。若执行dump transaction with truncate_only,应该先做dump database 命令。

删除一个表的所有记录

例:

1>;delete table large_tab 
2>;go  

同样,把整个table的记录都删除,要记很多log,我们可以用truncate table命令代替上 述语句完成相同功能。

1>;truncate table large_tab 
2>;go  

这样,表中记录都删除了,而使用truncate table 命令,log只记录空间回收情况,而不 是记录删除表中每一行的操作。

基于子查询的数据插入

例:


1>;insert new_tab select col1,col2 from 
large_tab 
2>;go
 

同样的方法,对这个大的transaction,我们应该处理为几个小的transactions。


1>;Insert new_tab 
2>;select col1,col2 from large_tab where col1<=y 
3>;go 
1>;dump transaction database_name with truncate_only 
2>;go 
1>;insert new_tab 
2>;select col1,col2 from large_tab where col1>;y 
3>;go 
1>;dump database database_name with truncate_only 
2>;go 
 

同样,若想保存log到介质上,则dump transaction 后不加with truncate_only 选项。若 执行dump transaction with truncate_only,应该先做dump database 动作。

批量数据拷贝

在使用bcp把数据拷入数据库时,我们可以把这个大的transaction变成几个小的 transactions处理,避免log剧增。

开放trunc log on chkpt 选项


1>;use master 
2>;go 
1>;sp_dboption database_name,trunc,true 
2>;go 
1>;use database_name 
2>;go 
1>;checkpoint 
2>;go  
bcp... -b 100 (on unix) 
bcp... /batch_size=100(on vms) 

关闭trunc log on chkpt选项,并dump database。

在这个例子中,一个批执行100行拷贝。也可以将bcp输入文件分成两或多个分开的文件, 在每个文件执行后做dump transaction 来避免log 满。

若bcp使用快速方式(无索引,无triggers),这样操作不记log,换句话说,log 只记载空间分配情况。在这种情况下,要先做dump database(为恢复数据库用)。若log太小,可置 trunc log on chkpt 选项,这样在每次checkpoint后清除log。


Sybase SQL Server日志问题普及
 Sybase SQL Server日志问题普及(一)
 Sybase SQL Server日志问题普及(二)
 Sybase SQL Server日志问题普及(三)
 Sybase SQL Server日志问题普及(四)
 Sybase SQL Server日志问题普及(五)

原文出处:http://www.sybase.com.cn/gvswse/site/china/index.jsp
 
 
 
 
 
 

Sybase性能与调优

 
ParAccel的列式数据库用于实现远远高于传统的、基于角色的关系数据库的查询返回速度,ParAccel跟很多开源和专有的数据库软件工具厂商都有合作伙伴关系。
 
Replication Server(数据复制服务器)最初是如何定位的?它的应用价值体现主要在那些方面?相对以前的版本来说,目前的新版本Sybase Replication Server 15.2有哪些……
 
2008年11月4日至5日,2008 Sybase大中华区用户大会在北京万达索菲特大饭店召开。大会主要分为4日上午的高峰论坛、4日下午及5日全天三个并行的技术论坛。

热门技术手册排行

 

在本次的技术手册中,我们为您提供了PL/SQL的基础知识以及专家指导,包括了PL/SQL中的数据类型简介、PL/SQL函数与触发器以及PL/SQL中的存储过程等,相信您无论是高手还是菜鸟都可以获得有帮助的信息。

 

本系列文章由三部分组成,为Oracle数据库管理员(DBA)面试成功的必备手册。本专题内容囊括从DBA最初的面试开始,从写“杀手简历”到求职信、到面试过程到Oracle认证再到上升到公司高层最后到你成为公司里的明星DBA。专家为你一一指点迷津,最终让你登上成功的宝座。

 

要成为一名DBA,你需要具备哪些素质?DBA的薪酬待遇如何?DBA的职业道路究竟可以走向何方?我们将在本次的技术手册中为您一一解答。

 

在本次技术手册中,我们将对SQL Server存储过程的调试进行详细的介绍,包括了基础的调试方法和在调试过程中出现的T-SQL性能问题和解决方法。

 

本技术专题主要围绕sql server设计这个话题展开,侧重介绍了sql server集簇索引的设计、如何创建sql server索引、如何优化索引、索引的能与不能、处理sql server 2000索引碎片技巧以及维护sql server索引以实现查询优化等等。

查看更多
 
 

登录TechTarget中国

关闭
本服务仅向TechTarget中国的会员开放,请登录或立即免费注册
电子邮件地址:
请输入您的电子邮件地址
密码:
下次自动登录