本文主要是介绍也说说Sybase ASE中的空间膨胀及应对方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前言
直观来讲,数据库是典型的以空间换时间的思路去提高数据检索的效率。我们先把数据“入”进去,组织好,建好索引,都为了什么?相当大一部分只不过是为了最终能快速得到查询的结果。当然这又引发了好多子项,比如,怎么“入”得快而又不发生冲突,怎么在相对少的资源的情况下得到相同的效果。
这其间,空间的膨胀,几乎不可避免,重要的是,膨胀是否理?是否在物理资源的承受范围之内?
前边提到了PostgreSQL的空间膨胀,这篇短文将提到ASE中比较典型的空间膨胀现象,以及如何有效的去避免它。
Sybase ASE中的Lob Space
在Sybase ASE当中,普通的表数据,其空间分成两大类,一类是数据页,另一类是索引页(空间)。而大对象LOB一类的字段,它的空间存放,主体都是放到了索引页里头(对,没看错,是放到了索引页里头)。是不是有点像PG里头的烤面包(TOAST)。在索引页里头,它也是按照一页一页来存储的。不过,默认它是不收缩的。即一页只存“一条”记录。对,没看错,一页一条记录,甚至是一个LOB字段的内容。
我们先在页大小配置为16KB的ASE中看下普通的一张表:
CREATE table TBig(id int not null, col2 varchar(512), col3 text, col4 datetime)
INSERT INTO TBig values(1, REPLICATE('b', 512), REPLICATE('c', 10), '2019-01-24 02:00:00')
INSE
这篇关于也说说Sybase ASE中的空间膨胀及应对方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!