自Oracle 8(1997年左右)就引入了
分区表&分区索引(Partitioned Tables & Indexes)的概念来调整大表和大索引,提升性能,提升运维管理的能力。分区表和分区索引机制是海量数据库管理(
Very Large Databases ,即VLDB) 中一个重要的提升性能的机制。
Oracle分区技术的历史
Oracle 8引入了分区的概念,后续的每个版本都有对分区机制优化和改进。
使用分区表/索引的好处
- 性能提升: Select语句只检索本分区的记录,减少了记录总数,可有效的提升了查询性能。另外,可以通过表空间将分区映射到不同的物理磁盘上,分散设备IO,提升性能;
- 分区运维:可以针对不同分区,管理数据的加载、索引的创建(以及重建)、数据备份与恢复。因为可针对分区的管理,所以可以有效的降低了分区间的干扰、影响。
更多分区的好处可以阅读
Oracle Partitioning这篇文章,写的更加详细些。
什么时候使用分区表
什么时候使用分区表,并没有一个精确的界限,Oracle只有一些
通用的建议,具体使用需要自行评估:
- Tables greater than 2GB should always be considered for partitioning.
- Tables containing historical data, in which new data is added into the newest partition. A typical example is a historical table where only the current month's data is updatable and the other 11 months are read only.
Tip: 计算表大小的SQL
SELECT B.OWNER, B.TABLESPACE_NAME, B.TABLE_NAME, ROUND (SUM (BYTES) / 1024 / 1024 / 1024, 6) GIGS FROM SYS.DBA_EXTENTS A, SYS.DBA_TABLES B WHERE ((B.TABLESPACE_NAME = A.TABLESPACE_NAME) AND (B.OWNER = UPPER ('&OWNER')) AND (B.TABLE_NAME = '&TABLE')) GROUP BY B.OWNER, B.TABLESPACE_NAME, B.TABLE_NAME; |