当前位置:数据库 > Oracle >>

oracle数据库建表和表空间设计

需要建很多表,其中有三张表加001编号各创建100张,每张表记录2天的数据量,数据量最大为2000万,正常在1000万数据量,这样3*100*2000万*1.5k,需要的表空间就很大,现在我想知道怎么设计这些表的建立。是建一个表空间,很多数据文件,将表放入一个表空间,还是分配多个表空间,表放入不同的表空间中。数据库是oracle 11g,性能是16cpu,32G内存,磁盘矩阵。请大家帮忙提供解决方式,解决我在追加悬赏。谢谢了,有需要进一步了解情况的提出来,我会每天晚上查看的。
追问:我想知道如果使用大文件表空间的话,对查询性能有没有影响,不过我准备使用视图将所有历史表创建成一个视图,不知道对查询性能会不会有影响?
还有一个表空间和多个表空间有什么区别吗?我们的总体数据量还是很大的,顶峰时每天的流水记录为1000万+300万,需要保存370天左右,记录放在历史表中。是一些交易流水表,每个交易流水表有很多历史表,历史表命名规则就是后面加编号。
答案:这个数据的多少和表空间的选择和你的数据量多少是没有太大关系的,需要统计你的数据量的大小。如果数据量很大,像你说的3*100*2000万*1.5k需要估算一下他是有多少G?这样才好设计表空间的分配。从10g开始有表空间支持一个大的数据文件,由多个文件组成肯定没有一个文件好管理,但是如果出问题了一个大数据文件损坏肯定造成的损失很大。这就是易维护性和安全性的取舍。不知道你们磁盘阵列是怎么做的如果没有raid1,数据又很重要的话,也许添加多个数据文件。但是多个数据文件的添加,每个数据文件的大小又受到OS的影响,这个和DB_block_size的大小又有关系,具体算法我不细讲,结论是单个数据文件最多32G。所以这个时候就看你的数据量大小了,你只说量,但是也许有lob字段之类的我无法估算大小,所以这个你自己算一下,如果需要的数据文件过多的话,你想方便维护也是可以使用大数据文件。sql如下:
SQL> create bigfile tablespace giapblob       ----------------表空间名字
  2 datafile 'H:\ypx\pic02.dbf'                          ----------------数据文件名字路径
  3 size 204800M                                           ----------------200G的bigfile
  4 autoextend on next 1024M                      -----------------扩展自动1G
  5 maxsize unlimited                                    -----------------不限最大
  6 extent management local autoallocate;    ----------------自动管理分配区间 

其中上述只是从管理方便的角度考虑一个表空间的处理方法,一般单个表空间最大限制是1022个数据文件*4M数据块*DB_BLOCK_SIZE=32TB。如果数据量过大,必须采用多表空间。
另外也要考虑需求中的使用性能,如果表数据量过大,比如你们每天2000万,那有没有历史表数据?这个如果是OLAP还好说,OLTP可能要做分区表等等一系列的性能考虑,情况不同选择不同。
其他:建表空间是为了方便管理,看你这些结构是怎样的,如果整个系统表空间太多了,只建一个表空间何尝不可,如果为了便于管理,建三个表空间,每个表空间放100张表也可以。而数据文件当建多个,在不同的盘上,提供最大I/O。 你的数据只保存2天,但数据量1000万左右,不大也不小,可以考虑每张表建两个子分区,如果空间紧张,应当压缩表。很少碰到表+编号建上100张的需求~这是什么需求 我来解答oracle数据库 

上一个:oracle 10g 安装client_win32.zip clusterware_win32.zip database_win32.zip gateways_win32.zip分别是
下一个:我是卫生统计专业的学生,请问医学课题的信息存储于数据库用ORACLE,SQL SERVER,MYSQL哪种好。

Oracle
MySQL
Access
SQLServer
DB2
Excel
SQLite
SYBASE
Postgres
如果你遇到数据库难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,