什么会导致压缩数据库转储被分成两个堆栈(或段)?

时间:2011-12-13 20:30:18

标签: sybase-ase

我一直在尝试确定压缩数据库转储的未压缩大小。我已经能够在转储头信息中使用lsize来执行此操作。在我的测试中,我以下列方式创建了一个空的测试数据库:

create database foo on default=100

我们使用master作为默认值。我意识到这不是一个生产现实的场景。然后我创建了一个数据库转储,如下所示:

dump database foo to '/var/tmp/foo_compressed_9.dmp' with compression=9

我注意到标题显示有两个部分(如果我的术语错误,请原谅):

segmap: 0x00000007 lstart=0 vstart=[vpgdevno=0 vpvpn=61444] lsize=5120 unrsvd=4240
segmap: 0x00000007 lstart=5120 vstart=[vpgdevno=0 vpvpn=68612] lsize=33536 unrsvd=33405

我见过的大多数转储只有一个段(标题中有一个“segmap:”行)。什么条件可能导致转储有两个?可能有两个以上,会导致什么?

由于

1 个答案:

答案 0 :(得分:2)

Segmapdevices使用的database相关。

在您的情况下,database foo应该有两个devices(可能一个用于data,另一个用于log),这就是为什么有两个Segmap

您可以使用以下query查看database foo使用了多少设备:

select distinct s.name, u.segmap from master..sysusages u
inner join master..sysdatabases s on u.dbid = s.dbid and s.name = 'foo'