数据库大表的优化:采用蔟表(clustered tables)及蔟索引(Clustered Index)
蔟表和蔟索引是oracle所提供的一种技术,其基本思想是将几张具有相同数据项、并且经常性一起使用的表通过共享数据块(data block)的模式存放在一起。各表间的共同字段作为蔟键值(cluster key),数据库在访问数据时,首先找到蔟键值,以此同时获得若干张表的相关数据。蔟表所能带来的好处是可以减少I/O和减少存储空间,其中我更看重前者。采用表分区(partition)
表分区技术是在超大型数据库(VLDB)中将大表及其索引通过分区(patition)的形式分割为若干较小、可管理的小块,并且每一分区可进一步划分为更小的子分区(sub partition)。而这种分区对于应用来说是透明的。通过对表进行分区,可以获得以下的好处:
1)减少数据损坏的可能性。
2)各分区可以独立备份和恢复,增强了数据库的可管理性。
3)可以控制分区在硬盘上的分布,以均衡IO,改善了数据库的性能。
蔟表与表分区技术的侧重点各有不同,前者侧重于改进关联表间查询的效率,而表分区侧重于大表的可管理性及局部查询的性能。而这两项对于我的系统来说都是极为重要。由于本人技术限制,目前尚不确定两者是否可以同时实现,有那位在这方面有经验的给点指导将不胜感激。
在两者无法同时实现的情况下,应依照需实现的功能有所取舍。综合两种模式的优缺点,我认为采用表分区技术较为适用于我们的应用。
Oracle的表分区有以下几种类型:
1)范围分区:将表按某一字段或若干个字段的取值范围分区。
2)hash分区:将表按某一字段的值均匀地分布到若干个指定的分区。
3)复合分区:结合了前面两种分区类型的优点,首先通过值范围将表进行分区,然后以hash模式将数据进一步均匀分配至物理存储位置。
综合考虑各项因素,以第三种类型最为优越。(本人实在技术有限仅采用了第1种范围分区,因为比较简单,便于管理)
优化的具体步骤:
1.确定需要优化分区的表:
经过对系统数据库表结构和字段,应用程序的分析,现在确定那些大表需要进行分区:
如帐户交易明细表acct_detail.
2.确定表分区的方法和分区键:
分区类型:采用范围分区。
分 区 键:
按trans_date(交易时间)字段进行范围分区.
3.确定分区键的分区范围,及打算分多少分区:
如:帐户交易明细表acct_detail.
根据字段(trans_date)分成一下分区:
1).分区1:09/01/2003
2).分区2:10/01/2003
3).分区3:11/01/2003
4).分区4:12/01/2003
5).分区5:01/01/2004
6).分区6:02/01/2004
该表明显需要在以后增加分区。
4.建立分区表空间和分区索引空间
1).建立表的各个分区的表空间:
1.分区1:crm_detail_200309
CREATE TABLESPACE crm_detail_200309 DATAFILE
‘/u1/oradata/orcl/crm_detail_20030901.dbf’
SIZE 2000M EXTENT MANAGEMENT LOCAL UNIFORM size 16M;
其它月份以后同以上(我在此采用oracle的表空间本地管理的方法)。
2). 建立分区索引表空间
1.分区1:index_detail_200309
CREATE TABLESPACE index_detail_200309 DATAFILE
‘/u3/oradata/orcl/index_detail_20030901.dbf’
SIZE 2000M EXTENT MANAGEMENT LOCAL UNIFORM size 16M;
5.建立基于分区的表:
create table table name
(
........
enable row movment --此语句是能修改行分区键值,也就是如不添加该 句不能修改记录的分区键值,不能使记录分区迁移
PARTITION BY RANGE (TRANS_DATE)
(
PARTITION crm_detail_200309 VALUES LESS THAN
(TO_DATE (‘09/01/2003’,’mm/dd/yyyy’
TABLESPACE crm_detail_200309,
其他分区.....
;
6.建立基于分区的索引:
create index index_name on table_name (分区键+…)
global --这里是全局分区索引,也可以建本地索引
PARTITION BY RANGE (TRANS_DATE)
(
PARTITION index_detail_200309 VALUES LESS THAN
(TO_DATE ('09/01/2003','mm/dd/yyyy' )
TABLESPACE index_detail_200309,
其他索引分区...
;
对表的分区就这样完成了,第一次主要确定表分区的分区策约是最重要的,可我觉得对表分区难在以后对表分区的管理上面,因为随着数据量的增加,表分区必然存在删除,扩容,增加等。在这些过程中还牵涉到全局等索引,因为对分区表进行ddl操作为破坏全局索引,故全局索引必须在ddl后要重 rebuild.
分享到:
相关推荐
三、数据库优化方案 根据不同的应用场景和需求,达梦数据库可以采取不同的优化方案,例如: 1. 对于高并发的应用,通过调整系统缓冲区和内存公共内存池的大小和数量,可以提高数据库的并发效率和性能。 2. 对于大...
2. 表分区:对于大表,使用范围、列表或哈希分区可以提高查询性能和管理效率。 3. 表压缩:利用Oracle的压缩特性,降低存储成本,提高查询性能。 三、SQL优化 1. 查询语句优化:编写高效的SQL语句,避免全表扫描,...
然而,动态规划优化在处理大规模查询时可能会面临计算复杂度高的问题,因此在实际应用中并不常见。 在数据库查询优化中,往往不是只使用一种算法,而是结合多种策略。现代数据库系统通常会同时利用基于成本和基于...
在本篇中,我们将学习 MySQL 数据库优化的知识点,包括查询优化、索引优化、存储优化和服务器优化等。 管理维护篇 在本篇中,我们将学习 MySQL 数据库管理维护的知识点,包括数据库备份、数据库恢复、服务器监控和...
通过分区,大表可以被分成更小、更易管理的部分,从而提高查询速度和维护效率。 最后,考虑数据库的物理存储和内存配置。合理的表空间和段管理,以及足够的PGA(Program Global Area)和SGA(System Global Area)...
本文总结了数据库查询性能优化的重要性和影响数据库查询性能的因素,并讨论了四种数据库查询性能优化技术:数据表索引、Select 语句优化、分页查询和查询缓存。实验结果表明,合理的数据库设计结构和数据库操作可以...
《数据库大表的优化》主要探讨了在处理大规模数据库时如何提升性能和管理效率的策略,主要涉及了蔟表(Clustered Tables)和蔟索引(Clustered Index)以及表分区(Partitioning)技术。这些方法都是为了优化I/O操作...
PB对数据库查询的优化.PB对数据库查询的优化.PB对数据库查询的优化.PB对数据库查询的优化.PB对数据库查询的优化.PB对数据库查询的优化.PB对数据库查询的优化.PB对数据库查询的优化.PB对数据库查询的优化.PB对数据库...
数据库索引设计与优化是数据库管理系统中至关重要的一个环节,它直接影响到数据查询的效率、存储空间的使用以及系统的整体性能。在这个主题中,我们将深入探讨数据库索引的基础概念、设计原则、优化策略以及实际应用...
作者通过系统的讲解及大量的案例清晰地阐释了关系型数据库的访问路径选择原理,以及表和索引的扫描方式,详尽地讲解了如何快速地估算SQL 运行的CPU 时间及执行时间,帮助读者从原理上理解SQL、表及索引结构、访问...
常见的锁定机制优化技术包括使用乐观锁、悲观锁、行级锁、表级锁等。 6. 数据库维护优化:数据库维护是指对数据库进行定期维护和调整,以保持数据库的健康和高效运行。数据库维护优化是指对数据库维护进行调整和...
接下来,"数据库SQL优化总结之百万级数据库优化.pdf"可能深入到实际的优化实践。 1. **数据库架构设计**:在百万级数据量下,合理的设计能避免性能瓶颈,如垂直分割、水平分割,以及读写分离策略。 2. **缓存与...
这本书首先会介绍Oracle数据库的基础知识,包括数据库架构、表空间管理、索引原理等,这些都是优化工作的基础。读者将了解到数据存储、查询处理和并发控制等核心概念,为后续的性能优化打下坚实的基础。 接着,书中...
DB2数据库性能调整和优化(第2版)侧重于介绍DB2数据库的性能调优。性能调优是一个系统工程:全面监控分析操作系统、I/O性能、内存、应用及数据库才能快速找到问题根源;深刻理解DB2的锁及并发机制、索引原理、数据库...
理解这些系统表对于数据库管理员进行性能优化、故障排查以及日常维护至关重要。 在KingbaseES V4.1中,系统表主要分为以下几类: 1. **对象定义表**:这些表包含了数据库中的各种对象定义,如`sysobjects`用于存储...
面向程序员的数据库访问性能优化法则面向程序员的数据库访问性能优化法则面向程序员的数据库访问性能优化法则面向程序员的数据库访问性能优化法则
综上所述,《数据库设计的优化策略》涵盖了数据库优化的多个方面,从SQL Server的调优技巧到具体的实施步骤,为数据库管理人员提供了一套全面的优化指南。通过对这些策略的深入理解和应用,可以有效提升数据库系统的...