我将要建立一个超大型数据库,某些表数据库的行数可能超过一千万行,数据库服务器是2台IBM的445,集群,操作系统是windows2000Server,在库和表的规划上有什么经验给讲讲,或哪里有这方面的技术资料。

解决方案 »

  1.   

    按一定的数据类别部署表空间,如相对静态的数据、频繁变化的数据分别存储在不同表空间,或从业务上划分;流水类的表建议用partition(如果是8i以上);table与index放在不同的磁盘;
      

  2.   

    呵呵呵,问对人了,我做过一个表几千万数据的系统。不上亿就不算“超”大型啦,大哥。我同意bws(bws)的说法,补充的是:可以认真考虑分区表的方法(具体语句看书)。这样的话可以非常容易彻底删除表数据和他们所占用的表空间,你知道delete是不能释放已经占用的表空间的。那样的话在你设计系统的时候,可能需要把所有数据另存一个表,当然一般不会访问,只是作为备份。然后,你那个流水类的表按你的实际需要保持一定的数据量就行,比如说一个月,一年...。这样的目的是使你日常工作使用的表数据大多处于活跃的状态。当然这样的系统是需要日常维护的,管理员应该定期维护如:重建索引等工作。
      

  3.   

    再补充说一下,按照你的硬件,千万级数据量绝对不是问题。重点考虑的是大数据量表的并发响应,以及表的索引问题。不能因为查询需要而无节制地建索引,除关键字外不要超过两个索引,每个索引的字段也不要超过三个。不然,可能出现索引无甚效果的情况,而且可能要到你真的有上千万数据时才发现,那就玩大了,那时候建一个索引起码要半个小时,而且会拖慢整个数据库。最好还是在程序里迁就一下,比如说:透过比较简单的条件选出一部分数据,再利用循环找出符合要求的纪录。这样就可以避免建一些四、五个字段的索引,把部分负担转移到客户机,现在的机器来说两三百次循环不会慢的。要真慢,叫他升级一下,再敲一笔,哎呀..露出尾巴了...。
    luminghui 消失于黑暗中.....
      

  4.   

    电信做法是对大型表做法,是分表(何为分表,就是按某种分类,如,按月份,一个月就一张表,但这样做极不规范,对于开发人员难度增大)
    对于oracle中心还是建义使用partition方法