最近项目需要整理评审pdm,学到了一些,在此总结几点
1.资源是宝贵的
数据库本质上还是将数据存储在磁盘上,只是通过DBMS进行管理,和其他软件系统一样,需要各种资源来提供支持,主要包括磁盘、CPU、内存、IO、网络,如果在资源满载的情况下,及时设计的数据库足够优秀也没有办法提升效率,毕竟巧妇难为无米之炊。而且数据库中的数据不是简单的在磁盘上存储一份,需要考虑到备份、容灾、以及索引等想关的数据,所以,在设计数据库的时候,只将必要的数据入库。比如一些实时的数据就不用入库了。
2.数据生命周期控制
一张表中的数据最好不要有搬表、delete操作,因为delet操作只是删除数据,但是并不会释放空间,truncate才会释放空间。
但如果不搬表,所有数据都放一张表就会太挤,查询操作的时候会非常慢,影响效率,这时候就可以对表进行分表或分区处理,在本项目中的要求是一张表或者分区的数据不能超过500W条。比如一张数据需要保留一年的表,可以分成12个分区,并创建12个表空间,每个分区对应一个表空间,过期了就将相应的表空间进行重建,清掉过期的数据,同时不会影响其他分区的数据,且资源得到了释放。
3.表空间的用法
上面提到了分区的时候可以每个分区对应一个表空间,事实上为了效率,不光会为表数据创建表空间,索引也会创建对应的表空间,还是上面的例子,12个分区就需要24个表空间,其中表数据12个,表索引12个;另外参数一类表空间,也是两个,表数据一个,表索引一个;用户数据一类表空间;默认表空间...等等。表空间的设计需要根据数据的生命周期,表数据的用途来划分,特别是对于有生命周期的数据,需要定期清理,这时候就一定不能和其他数据混在一起,不方便清理。
4.表的设计
前面提了,不是必要的数据不用入库。那必要的数据呢?又分为哪些?
首先,可以分为这样几类:
程序参数、用户信息、业务处理数据、日志类数据
上面是我根据最近的几个项目总结的,可能不同的场景还会有其他
在设计表的时候除了考虑当前需要用到的数据,在许多情况下还需要考虑到统计报表数据,这一点容易被忽视。一些大型应用或系统,通常处理的数据非常大,而且这些商用系统不是我们自己搞的小玩意,是不能出事的,程序挂掉几分钟都是大事,这时候就需要有专门的监控系统,监测运行情况,并对业务数据、用户信息等进行统计,查漏补缺。统计报表数据就非常重要了,设计表的时候或者在设计一个系统的时候,就需要提前考虑到这些。
如果条件满足,每张表最好再设计几个保留字段,以备后续的业务扩张
附.sql语句总结
1 --查看表空间文件 2 select file#, name from v$datafile; 3 4 5 --创建表空间 6 --表空间一般以TBS_开头命名 7 create tablespace TBS_DSS_IPARAM 8 datafile ‘/u01/app/oracle/oradata/orcl/iparam.dbf‘ 9 size 20m 10 autoextend on 11 next 50m maxsize 2048m 12 extent management local;
原文:https://www.cnblogs.com/suzi2019/p/11176138.html