您的位置:首页 > 数据库 > Oracle

oracle技术点滴--随便写写

2010-08-12 10:56 204 查看
1.如oracle运行在archive log下,为了加快某些情况下sql执行速度。可暂时对某表采用nologging语句,如:alter table emp nologging或create table emp (xx int) nologging,再执行insert /*+ append */ into XXXX。 但从数据维护的角度来说,并不建议采取此种方式。因此类操作将虽然大量减少了redo信息,但数据可稳定效得不到保证。

2.索引虽然在查询时能大幅提高查询速度,但索引其实也占据了大量的存储空间。特别是某此数据量极大的情况下表(超过几百万乃至上千万条行记录),在执行大批量insert语句将极其影响插入速度。此等操作应在系统空闲时执行,可先将索引删除,待数据插入完毕后,再索引重建。

3.统计实时海量数据报表时,可考虑表分区。以前有个项目的数据库设计为:
AAA00表
AAA05表
AAA10表
AAA15表
AAA20表
AAA25表------>BBB小时表------>CCC天表
AAA30表
AAA35表
AAA40表
AAA45表
AAA50表
AAA55表
解释如下:
AAA为分钟表,粒度为5分钟。BBB为小时表,粒度为1小时。CCC为天表,粒度1天。那相应1天AAA表将会有288个,BBB表将24个,CCC表1个。靠oracleJOB定时执行存储过程(交换分区),AA表转换到BBB再CCC表,转换成功完成AAA表及BBB表数据将清空。而ccc表将为当天统计数据。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: