VLDB (超大型数据库,very large databases)处理查询操作时,将会耗费大量的时间和资源来获取所需的数据,这将影响查询的性能。一个需要遍历整张表或索引的查询将使性能降低到无法容忍的地步。这对于决策支持系统(DSS),如数据仓库系统是严峻的考验。
为了解决这些VLDB面临的挑战,ASE15的数据分区(Partition)功能将有效地减少管理所需的时间并提高应用的性能。数据分区功能将有助于满足任何容量的ASE数据库在管理、维护和性能上的要求。
数据分区可以将大的表或者索引分割成小的数据片,并存放在不同的存储单元中。数据库管理员可以在底层处理数据的存储、维护和管理工作。
“segment(段)”在ASE中被定义为设备的单元。它常常被用来存储特定类型数据,例如:系统数据、日志数据和用户数据。分区可以存贮在不同的段上或者不同的分区存储在同一个段上。类似的,一个或多个段可以存放在任何的逻辑或物理设备上,这样可以分离I/O来提高性能和数据的可用性。在一个分区上的表或索引数据可以以不同于其他分区的方式来管理和操作。查询只须访问那些包含所需数据的分区。
数据库管理员可以更快捷地管理和维护这些较小的分区,而不是像以前那样不得不面对巨型的表和索引。一些日常的任务甚至可以在多个分区上并行地执行,这不但可以节省时间,还可以在分区上自动运行。当数据增长时,只需添加新的分区即可。
在ASE15中提供了四种数据分区的方式:
1、轮循分区(round-robin),是在ASE15之前版本中唯一提供的分区方式。这种方式是在分区上顺序排列数据,没有办法决定数据在分区上的存储位置,并且查询操作会涉及所有的分区。
create table office_table (
office_id char(3) not null,
office_name varchar(30) not null,
address varchar(40) not null,
office_mgr int not null )
partition by roundrobin (
part1 on seg1,
part2 on seg2,
part3 on seg3 )
其他的三种分区方式称之为“语义数据分区”方式,因为可以通过这些方式确定数据的分区存放位置。
2、范围分区(Range Partitioning),在ASE15中将被广泛使用的方式。
利用这种分区方式,数据库管理员可以通过数据的范围确定数据在分区上的存储位置。
例如,数值1,2,3,4存储在分区1中,而5,6,7,8存储在分区2中,诸如此类。
下面是利用范围分区方式基于date/time 列创建表的语法
create table customer (
ord_date datetime not null,
name varchar(20) not null,
address varchar(40) not null)
partition by range (ord_date) (
ord_date1 values <= (3/31/05) on segment1,
ord_date2 values <= (6/30/05) on segment2,
ord_date3 values <= (9/30/05) on segment3,
ord_date4 values <= (12/31/05) on segment4)
范围分区尤其对于那些持续更新、插入和删除,且某些字段中包含连续数据,例如用户号或订单/交易日期的表尤为有效。这样的表需要数据库管理员额外的维护和管理,最适合使用范围分区。
3、列表分区(List Partitioning),可以将不同的数据分割存放在不同的分区上。
列表分区类似于范围分区,但这里实际被写入分区的数据是确定的。例如在包含有全球各地区数据的“地区”关键字段上建立列表分区。该列数据有没有排序,以及数据在分区上存储的顺序,都不影响列表分区存储数据。下面是利用列表分区方式创建表的语法示例:
create table customer (
cust_id char(10) not null,
cust_name varchar(30) not null,
state char(2) not null,
phone char(10) not null)
partition by list (state) (
west values (’CA’, ‘OR’) on seg1,
east values (’NY’, ‘NJ’) on seg2)
create table nation (
nationkey integer not null,
name char(25) not null,
regionkey varchar(30) not null,
comment varchar(152) not null)
on segment 1partition by list (regionkey)(
region1 values ('Americas'),
region2 values ('Asia'),
region3 values ('Europe'),
4、哈希分区(Hash Partitioning)。在这种方式下数据是根据特定的列和内部哈希运算法则来确定数据的存放方式。
这里不需要指定列表或数值的范围。如果列键包含唯一数据,或者数据重复度极小,哈希分区将在其所有分区上平衡数据存储。然而,如果有大量重复数值,分区将会“倾斜”,一些分区上的数据可能会比其它分区多。
哈希分区在要为大表建立很多分区,或者关键列中的数据没有排序的情况下尤为有用。它同时还可以配合查询处理引擎使得查询工作更为有效。
create table lineitem (
l_orderkey int not null,
l_partkey char(10) not null,
l_suppkey char(4) not null,
l_linenumber int not null,
l_quantity int not null)
partition by hash (l_orderkey, l_linenumber)(
litem_hash1 on seg1,
litem_hash2 on seg2,
litem_hash3 on seg3)
二、使用ASE15分区的前提条件是什么?
条件1.获得允许使用分区的许可并安装在资产管理器(SYSAM-2_0)中
条件2.用isql等连接ASE中,用如下方式设置允许使用分区
1> sp_configure “enable semantic partitioning”,1
2> go
三、如何修改number of open partitions分区数配置参数?
ASE使用 “number of open partitions” 参数来控制允许最多的分区数,注意该参数配置愈大将占用更多的内存。
1> sp_configure “number of open partitions”,800
2> go
四、初始时如何计算合适的分区数?
在系统闲时,执行如下命令可得到所应该配置的分区数
1> sp_countmetadata “open partitions”
2> go
There are 647 user partitions in all database(s), requiring 617 Kbytes of
memory. The ‘open partitions’ configuration parameter is currently set to 500.
五、使用过程中如何监控分区数是否合适?
在系统高峰时段或大量建表删除表和分区后使用如下命令监控分区数
1> sp_monitorconfig “open partition”
2> go
Name Num_free Num_active Pct_act Max_Used Num_Reuse
————————- ———– ———– ——- ———– ———–
number of open partitions 443 357 44.63 397 0
在“Max_Used”基础上再加10%的开销既是应该配置的合适分区数
397 * 1.1 = 436.7 > 437
1> sp_configure “number of open partitions”,437
2> go
六、如何估计分区数所占用的内存或一定内存所能配置的分区数?
1> sp_helpconfig “number of open partitions”,”1000″
2> go
……
Configuration parameter, ‘number of open partitions’, will consume 953K of memory if configured at 1000.
Changing the value of ‘number of open partitions’ to ‘1000′ increases the amount of memory ASE uses by 474 K.
1> sp_helpconfig “number of open partitions”,”10M”
2> go
……
Configuration parameter, ‘number of open partitions’, can be configured to 10736 to fit in 10M of memory.
七、如何取消分区
如要取消分区,必须先将分区修改为 roundrobin,且在一个段上。
1> alter table lineitem partition by roundrobin (part1)
2> go
其实如此该表就没分区了
然后就可重新分区
1> alter table lineitem partition by hash(l_orderkey)
2> (hash1,hash2,hash3,hash4)
3> go
八、分区注意事项
1.代理表和系统表不能分区
2.“alter table”与“create table”的分区语法相同,可以:
将单个分区修改为多分区
在改变分区类型的同时改变分区的数量
改变键值和边界值
改变分区所在的段
仅有范围(range)和列表(list)分区可以增加分区
注意修改分区类型等时,ASE系统要将表中的数据按照修改后的分区类型重新分配,如果是大表最好在并行方式且数据库的“select into”开关应打开,这样速度快.
3.分区操作要注意:
分区不能删除,但分区的表可“truncate table”和“select into”
取消分区可通过将分区修改为一个roundrobin的分区来实现
分区的键值和边界值要与数据类型兼容。“rang”分区的键值必须是升序且数据类型不能是“BLOB”、“Java”、“bit”和计算列
4.分区与索引
当改变分区策略或分区键,或者将没分区的表分区时均应删除索引
改变分区其它属性时不必删除索引
主键必须是分区的条件,因为主键和分区都会决定数据的物理存放顺序,一个表是不可能有两种数据的物理存放顺序的。如果主键不是分区的条件,一个变通的办法是将主键建为唯一值索引,如:
create table sales
(cust_id char(10) not null,
ord_id char(10) not null,
salesdate date not null,
salespsn int not null)
partition by range (salesdate)
(q1 values <= (’3/31/2005′) on seg1,
q2 values <= (’6/30/2005′) on seg2,
q3 values <= (’9/30/2005′) on seg3,
q4 values <= (MAX) on seg4)
create unique index idx1 on sales(cust_id,ord_id)
九、可以对单个分区做的操作
truncate table sales partition jan
update statistics sales partition feb
update table statistics sales partition mar
delete statistics sales partition apr
reorg forwarded_rows sales partition may
reorg reclaim_space sales partition jun
reorg compact sales partition jul
reorg rebuild sales local_idx partition aug
bcp custdb..sales partition sept, oct, nov out months.dat …
dbcc checktable (sales, null, dec)
相关推荐
“segment(段)”在Sybase ASE15中被定义为设备的单元。它常常被用来存储特定类型数据,例如:系统数据、日志数据和用户数据。分区可以存贮在不同的段上或者不同的分区存储在同一个段上。类似的,一个或多个段可以...
Sybase ASE for Linux 12.5 安装指南 本文档旨在指导用户如何在 RedHat AS 5 上安装 Sybase ASE for Linux 12.5。 installation process covers the creation of a Sybase directory, setting up the user and ...
此外,它还支持数据库分区、索引优化等策略,进一步提升了性能。 5. **安全性与备份恢复**:该版本强化了安全特性,包括用户权限管理、角色定义以及加密功能,确保了数据的安全性。同时,它提供了完善的备份和恢复...
2. 安装路径选择:选择安装路径时,注意所选安装硬盘最好是 NTFS 分区的,因为有些大于 2g 的文件在 fat32 分区下不能保存。 3. 安装类型选择:选择完全安装。 4. 实际安装过程中,需要选择安装的功能模块。 5. 安装...
此外,通过索引、分区和统计信息的管理,可以进一步提高查询性能。 11. **安全性**:Sybase ASE支持复杂的权限和角色管理,通过GRANT、REVOKE语句控制用户访问权限。SSL加密和审计功能增强了数据安全。 12. **扩展...
中标Linux&Sybase12.5X的安装 中标Linux&Sybase12.5X的安装是指在中标Linux操作系统上安装Sybase12.5X数据库管理系统的整个过程。该过程包括两部分:Neoshine Linux Server的安装和SYBASE12.5X的安装及配置。 一、...
- Sybase IQ支持分区表,可以通过`PARTITION BY`子句来定义分区策略。 - 分区可以按照范围、列表或哈希方式进行,这有助于提高查询性能,特别是在处理大量数据时。 **2. 复制** - Sybase IQ提供了数据复制功能,...
综上所述,Sybase IQ通过列存储、高效数据压缩和智能分区等技术,为数据仓库领域带来了革新。它的设计理念和实施策略,尤其是在应对大数据量和复杂查询时的出色表现,使其成为数据分析和决策支持系统的理想选择。...
- **性能调优**:为了最大化性能,管理员需要进行索引创建、分区策略调整、内存分配优化等工作。 - **安全性**:Sybase IQ提供了权限管理和角色定义功能,以确保数据安全。 - **监控与诊断**:内置的监控工具帮助...
1\安装数据库所对应用的ODBC 2、在控制面板数据源ODBC中,找开该窗口、进行ODBC的配置,如果数据库不在本地,则在操作中选择“连接到另一台计算机上正在运行的数据库” 服务器名、数据库名、不填没关系。...
同时,理解数据库的特性和配置,如索引、分区、缓存策略,也是优化整体系统性能的关键。 综上所述,Sybase驱动,尤其是jconn2、jconn3和jconn4,为Java开发者提供了与Sybase数据库交互的桥梁。了解它们的特点和适用...
- **高级特性**:除了基础功能外,Sybase IQ 还提供了一系列高级特性来满足不同用户的需求,例如分区表、安全机制、复制功能以及与其他系统的集成能力。 - **优化和调优**:为了确保最佳性能,Sybase IQ 提供了丰富...
**Sybase IQ 学习资料概述** Sybase IQ 是一种高度优化的数据仓库服务器,专为大规模数据管理和分析而设计。它在处理复杂查询和大数据集时表现出色,尤其适合商业智能、数据分析和数据挖掘等应用。本教程集合将帮助...
优化可以从以下几个层面着手:物理设计优化,如合理的数据分区、索引构建;SQL语句优化,避免全表扫描,使用合适的JOIN策略;服务器参数调优,根据系统负载动态调整内存分配、并发连接数等;定期执行维护任务,如...
这些服务器上的分区应保持一致,以便数据库安装和数据同步。操作系统选用的是Windows Server 2003 SP1,这是一个稳定且广泛支持的服务器平台。数据库版本为Sybase 12.5,这是一款成熟且功能强大的数据库产品。 安装...