- 论坛徽章:
- 0
|
本帖最后由 sybman 于 2013-08-18 15:35 编辑
好像论坛的兄弟们用的ASE版本都不是很高, 可能对新版本ase中的一些新性能能不是很了解, 其实最近这些年
ASE中已经增加了不少很实用的新功能,打算开一系列的帖子,跟大家分享一些我所了解到的这方面的内容,
方便大家更多地了解ASE,更好地使用ASE。
此帖的主要目的是技术交流,不管你是否听说,还是使用过这些功能,都欢迎‘到此一游’。
那就先从SAP & Sybase 成为一家后第一个非常重要的release -- 15.7开始吧...
出处: http://blog.chinaunix.net/uid-26548424-id-3853670.html
SAP Sybase ASE 15.7中一个重量级的功能就是压缩,随着用户数据的爆炸性增长, 压缩方案能够有效减少磁盘的使用量,
从而帮助用户减少成本。
ASE15.7提供的压缩方案包括如下两种,
1) data compression。对常用数据类型的压缩,包括int,char/varchar等。
2) LOB compresion。对大数据类型的压缩,包括TEXT/IMAGE/UNITEXT三种类型。
这里先向介绍一下LOB compression,其余部分会在后续的文章中介绍。
LOB,Large OBject的简写,在ASE中主要指TEXT/IMAGE/UNITEXT三种数据类型,用于存储一些非结构性的数据,比如
长文本,图片等,每行数据中的单个TEXT/IMAGE/UNITEXT列最多可存储2G的数据。如果数据库中有大量的此类数据,
那么数据量可想而知,此时使用LOB compresison就显得尤为必需。
LOB compression使用了两种压缩算法,共向用户提供如下9种压缩级别,这样用户可以有足够的灵活性根据自己数据的选择
适合自己的压缩级别
1 - 9
100 - 101 (适合小文本)
压缩级别越高,压缩率越高,CPU使用率也相应地高一些。LOB数据的压缩和解压缩对用户是透明的,用户只要定义了相应的
压缩级别, 数据插入和更改的时候数据会被自动压缩并存在磁盘上,查询数据的时候系统自动解压并返回给用户。
下面介绍一下如何使用LOB compression。
首先,用户必须打开compression配置, 1表示打开,0表示关闭
sp_configure “enable compression”, 1 | 0
之后,就可以定义LOB compression了。ASE提供了多个层面的compression定义,包括db/table/column,用户可以根据自己需要
选择方便的方法。
定义db级别的LOB compression
一旦数据库定义了此类级别的LOB compression,所有此数据库中新创建的包含TEXT/IMAGE/UNITEXT类型的表会自动继承
LOB compression,也就是说,有新创建的TEXT/IMAGE/UNITEXT都是压缩的。
CREATE DATABASE <dbname>
[…]
WITH DML_LOGGING = { minimal | full },
DURABILITY = { no_recovery | at_shutdown | full },
...,
LOB_COMPRESSION = comp_level
comp_level 可以是 1 - 9, 100 - 101,0(关闭压缩)
除了创建新数据库,用户也可以给现有的数据库添加LOB compression, 这个操作并不会影响老的数据表以及LOB数据,也
就是说,即使给数据库增加了LOB compression,这个设置只对此操作之后的LOB数据生效,老数据依然是不压缩的。
alter database dbname set lob_compression = comp_level
定义table/column级别的LOB compression
用户可以有选择性的决定一个表中哪些列是压缩的,哪些是不需要压缩的
CREATE TABLE [database.[owner].]table_name
( column_name datatype [...] [ COMPRESSED = comp_level | NOT COMPRESSED ]
[ , column_name ... ]
)
[ LOCK { DATAROWS | DATAPAGES | ALLPAGES } ]
...
[ WITH { MAX_ROWS_PER_PAGE = num_rows
[ , ... ]
[ , LOB_COMPRESSION = comp_level ]
}
]
同上,用户也可以给现有的表添加LOB compression,并且LOB compression只对添加之后插入和更改的数据有效,表中的老
数据依然保持未压缩的状态。
alter table table_name set lob_compression = comp_level
除了以上的SQL扩展,为了方便用户随时更改LOB compression的配置,ASE也提供了其他的sql语句支持
改变列级别的 LOB compression
alter table table_name modify lob_column compressed = comp_level
alter table table_name modify lob_column not compressed
增加新的TEXT/IMAGE/UNITEXT column
alter table table_name add new_lob_column_def compressed = comp_level
alter table table_name add new_lob_column_def not compressed
|
|