- 论坛徽章:
- 0
|
欢迎讨论一个问题:建立表分区与表分割之间的孰优孰劣?
编辑: 文章来源: 发布日期:2007-2-5 人气:1029
个人认为理论上使用表分割在性能上应该和建立表分区查不多,但是,表分割对于所有的数据库都适用,而表分区只能用于oracle这样的特定的数据库;表分区属于数据库物理设计,表分割属于逻辑设计。
所以,一般来说是不是应该使用表分割更好一些。
---------------------------------------------------------------
你说的表分割是指把一张大表分割成多个表吗?
表分区是ORACLE对于非常大的表进行优化的一种有效方法, 是非常有效的一种手段, 在很多情况下,比你说的表分割更有效,比如,有一个代码表,使用分区表把100万纪录分在10个分区中(ID 每从1到10万为一个分区),那样写查询语句的时候,只要给出查询条件中所需要的代码,ORACLE自动会定位到对应的分区进行查询,大大降低的查询时间. 而采用表分割,那必须先根据查询的代码指定所要查询的表,才能找到相应的纪录. 而且,如果有下面这样的语句,查询的条件是跨分区的:
SELECT * FROM MYTABLE WHERE ID BETWEEN 99000 AND 10111;
在分区表中是非常容易实现的,ORACLE会自动在两个分区中查询;而采用表分割的话是否必须写成两个查询语句在UNION ALL?
事实上,大型的数据库都有对大表的特殊处理方式(类似于分区表),如果太强调可移植性而放弃这些最重要的特性的话,那性能很可能受到很大的影响.
---------------------------------------------------------------
即便是oracle数据库,当数据量很大时,用分表比用表分区要快些,尤其是在表用到group by求和等操作。
---------------------------------------------------------------
我也认为表分区要好一些,也就是一般说来的分区表,对这些表操作起来有很多强大的功能,说他强大主要是体现在对与表中有海量数据的情况之下的,试问大家一个其中有1亿条记录的表你是否会经常的将其移植到其他数据库系统当中去呢?
表分区基于物理存储,还有就是基于分区的索引可以使用,很不错的,当然,这些都是在海量数据情况之下的比较,但是如果真要是数据量不大的情况下比较,我想要比较分区表和表分割就没什么意思了。
---------------------------------------------------------------
表分区的效果对硬件有所依赖,而且效果恐怕不如诸位想象中那么好。我做过一点测试,很失望。
而表分割的效率提升在很多时候(不是所有时候)是很明显的。
当然这都是在巨型表的前提下讨论,缩小表和索引的规模有利于提高效率,这正是分割表的特点。 |
|