SSYBASE SQL Server
![](/icons/32830de.gif)
![](/icons/32830yi.gif)
![](/icons/32830dou.gif)
![](/icons/32830dou.gif)
![](/icons/32830dou.gif)
![](/icons/32830de.gif)
![](/icons/32830dou.gif)
![](/icons/32830dou2.gif)
![](/icons/32830de.gif)
![](/icons/32830dou.gif)
![](/icons/32830dou.gif)
![](/icons/32830yi.gif)
![](/icons/32830dou2.gif)
![](/icons/32830yi.gif)
我们知道
![](/icons/32830dou.gif)
![](/icons/32830de.gif)
![](/icons/32830dou2.gif)
Log pages 在commit ,checkpo
![](/icons/32830int.gif)
![](/icons/32830dou2.gif)
Data pages 在checkpo
![](/icons/32830int.gif)
![](/icons/32830dou2.gif)
系统在recovery 时读每个database
![](/icons/32830de.gif)
![](/icons/32830de.gif)
![](/icons/32830dou.gif)
![](/icons/32830de.gif)
![](/icons/32830de.gif)
![](/icons/32830de.gif)
![](/icons/32830dou2.gif)
![](/icons/32830int.gif)
![](/icons/32830dou2.gif)
![](/icons/32830de.gif)
![](/icons/32830yi.gif)
![](/icons/32830dou2.gif)
2、Transaction logs 和checkpo
![](/icons/32830int.gif)
checkpo
![](/icons/32830int.gif)
![](/icons/32830de.gif)
![](/icons/32830de.gif)
![](/icons/32830dou2.gif)
![](/icons/32830de.gif)
![](/icons/32830int.gif)
![](/icons/32830de.gif)
![](/icons/32830int.gif)
![](/icons/32830de.gif)
![](/icons/32830dou2.gif)
![](/icons/32830de.gif)
![](/icons/32830dou.gif)
![](/icons/32830int.gif)
![](/icons/32830de.gif)
![](/icons/32830dou2.gif)
如果数据库开放trunc log _disibledevent=> 3、Transaction log
![](/icons/32830de.gif)
没有
![](/icons/32830yi.gif)
![](/icons/32830de.gif)
![](/icons/32830de.gif)
![](/icons/32830yi.gif)
![](/icons/32830de.gif)
![](/icons/32830dou2.gif)
![](/icons/32830yi.gif)
![](/icons/32830de.gif)
![](/icons/32830dou.gif)
![](/icons/32830de.gif)
![](/icons/32830dou2.gif)
![](/icons/32830yinwei.gif)
![](/icons/32830de.gif)
![](/icons/32830dou.gif)
![](/icons/32830de.gif)
![](/icons/32830dou.gif)
![](/icons/32830de.gif)
![](/icons/32830dou2.gif)
![](/icons/32830de.gif)
![](/icons/32830dou2.gif)
例如:
- update,insert和delete
频率
- 每个transaction 中数据
修改量
- SQL Server系统参数recovery
erval 值
- log是否存到介质上用于数据库恢复
![](/icons/32830dou.gif)
![](/icons/32830dou.gif)
![](/icons/32830yi.gif)
![](/icons/32830dou2.gif)
4、检测log
![](/icons/32830de.gif)
若log 在自己
![](/icons/32830de.gif)
![](/icons/32830dou.gif)
例:***NOTICE:space used _disibledevent=> 根据log剩余空间比例来决定是否使用dump transaction 命令来备份和清除log关闭trunc log _disibledevent=> 在这个例子中![]()
用快速思路方法来判断transaction log 满程度
1>use database_name在syslogs 表用sp_spaceused 命令
2>go
1>select data_pgs (8,doa mpg)
2>from sysindexes where id=8
3>go
Note:this query may be off by as many as 16 pages.![]()
5、log 设备
般来说
应该将
个数据库
data和log存放在区别
数据库设备上
这样做
好处:
6、log
- 可以单独地备份(back up)transaction log
- 防止数据库溢满
- 可以看到log空间
使用情况
[dbcc checktable (syslogs)]
- 可以镜像log设备
清除
数据库log是不断增长
必须在它占满空间的前清除
前面已经讨论过
清除log可以开放数据库选项trunc log _disibledevent=> 7、管理大
transactions
有些操作是大批量地修改数据log增长速度十分快
如:
下面讲述怎样使用这些transaction 使log 不至溢满:
- 大量数据修改
- 删除
个表
所有记录
- 基于子查询
数据插入
- 批量数据拷贝
大量数据修改
例 :1>update large_tab若这个表很大col_1=0
2>go则此update动作在未完成的前就可能使log满
引起1105
(log full)而且执行这种大
transaction所产生
exclusive table loc
阻止其他用户在update期间修改这个表
这可能引起死锁
为避免这些情况
我们可以把这个大
transaction分成几个小
transactions
并执行dump transaction 动作
![]()
上述例子可以分成两个或多个小transactions.
例如:1>update large_tab若这个transaction 需要备份到介质上col1=0
2>where col2 3>go
1>dump transaction database_name with truncate_only
2>go
1>update large_tabcol1=0
2>where col2>=x
3>go
1>dump transaction database_name with truncate_only
2>go则不用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同样_tab select col1,col2 from large_tab
2>go思路方法
对这个大
transaction
我们应该处理为几个小
transactions
1>Insert同样_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_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 _disibledevent=>1>use master
2>go
1>sp_dboption database_name,trunc,true
2>go
1>use database_name
2>go
1>checkpo
2>go
bcp... -b 100 (on unix)
bcp... /batch_size=100(on vms)
![](/icons/32830dou.gif)
![](/icons/32830yi.gif)
![](/icons/32830dou2.gif)
![](/icons/32830de.gif)
![](/icons/32830dou.gif)
![](/icons/32830dou2.gif)
若bcp使用快速方式(无索引
![](/icons/32830dou.gif)
![](/icons/32830dou.gif)
![](/icons/32830dou.gif)
![](/icons/32830dou.gif)
![](/icons/32830dou2.gif)
![](/icons/32830dou.gif)
![](/icons/32830dou2.gif)
![](/icons/32830dou.gif)
SQL Server提供阈值管理功能
![](/icons/32830dou.gif)
![](/icons/32830de.gif)
![](/icons/32830dou2.gif)
![](/icons/32830de.gif)
![](/icons/32830dou2.gif)
![](/icons/32830de.gif)
![](/icons/32830de.gif)
![](/icons/32830dou.gif)
![](/icons/32830dou.gif)
![](/icons/32830de.gif)
![](/icons/32830dou.gif)
![](/icons/32830dou.gif)
![](/icons/32830dou2.gif)
最新评论