随笔分类 - 数据库
摘要:有个误区:Oracle的表分区会增加查询性能,因为只需要在部分数据里查了;会增加降低插入性能,因为多了一步指定分区的操作。实际情况并非如此,至少在OLTP系统中,分区不一定会增加查询性能,但很可能会增加插入性能。 引用Tom大神的《Oracle编程艺术》的一段话,很好地解释了分区对OLTP系统的性能影响: 在OLTP系统中,不应该把分区当作一种大幅改善查询性能的方法。实际上,在一个传统的OLTP系统中,你必须很小心地应用分区,提防着不要对运行时性能产生负面作用。在传统的OLTP系统中,大多数查询很可能几乎立即返回,而且大多数数据库获取可能都通过一个很小的索引区间扫描来完成。因此,以上所...
阅读全文
摘要:我们的系统是一个OLTP系统,用的是Oracle RAC,没有名义上的DBA,但最近一年左右的时间,不知不觉干了DBA事。之前的数据库基础仅限于学生水平,在此做个阶段性小结,记录下学习轨迹,按学习顺序排序,其实就是工作中遇到的顺序。一、从备份恢复开始 因为会写shell,就被拉去做Oracle的备份恢复。拿了隔壁项目的现成资料,移植到了我们的系统。这里的知识点在于Oracle的redo log原理,了解存储的大致结构。我们用的是RMAN的备份,稍微看点RMAN的资料。资料网上一大堆,就不推荐了。顺带通过这一阶段工作,熟悉了sqlplus工具,不过后面用的更多的是pl sql develope.
阅读全文
摘要:一、背景知识Oralce中的一张表数据量达到亿数量级后或是单表达到2G大小,查询效率似乎会明显下降。需要通过分区的方式,从行的维度对表进行划分,避免单表数据量过大分区方法有下面几类:范围,最常见,按照某列数据的范围分区,比如按时间分区哈希,对于数据规律性不强,或者取值范围难以确定的,推荐哈希法,强行进行分区。分区个数需设置成2的幂次列表,类似枚举,需事先知道字段的精确值混合,上述各种组合oracle 11g又新增了几种分区方法,如下:引用分区,父表的外键作为关键字建立分区,则子表可以以同样的方式分区虚拟列分区,通过表中字段的运算结果进行分区间隔分区,范围分区的变种,范围固定且分区可自动扩展系统
阅读全文
摘要:项目中的数据量有点大,最核心的一张表会有TB数量级的数据,因而也需要建这么大的表空间,如何处理这么大的表空间是个难题。 询问了几位专家,也查了网络上的资料,得到了一个大致的解决方法:设置多个数据文件。具体做法如下:为此表空间划分单独的LUN,保证足够的空间,我这里就划分1TB;在此LUN上建立表空间,考虑到系统的数据是慢慢累积的,刚开始不用一次把空间都分配满,可先设置10个24GB的数据文件,这样就分配到了240GB的空间可以存储数据;等数据量上来后,可选择扩展原有的数据文件,或新加数据文件,以此扩展表空间。 上述方法还没实践过,有待验证。这里也先整理下设置多个数据文件的好处:有些操作...
阅读全文