先来说说需求:生产环境中有一张大表大概有400W+的数据记录。按照业务的需求,需要先对表中的某个字段进行group by分组后,再对记录集进行分页处理。因为可能涉及到别人公司业务机密,不好拿原案例出来分析,所以这里做了一个模拟案例,并且尽量将模型最简单化。 测试案例如下: create table node(a number,b varchar2(100),c varchar2(10),d d...
2016-12-19 16:58 5973 3
我们知道,访问数据表可以通过普通的DQL语句,也可以在存储过程中使用游标。通过游标,可以逐行获取数据表的数据处理,确实相当灵活便利。在本篇文章,我们来探讨一下,通过游标访问一张数据表,与普通DQL方式访问,有什么差别,分析一下这其中的性能差异。 测试环境如下: SQL> select * from v$version; BANNER ------------------------...
2016-11-25 10:46 5034 0
直方图是统计学上的工具,通常情况下表现为一种几何图形,这个图形是根据从实际环境所收集过来的被管理对象的质量分布情况的数据所绘制而成,通常会画成以数据类型为底边(X 轴),数据频率作为高度(Y轴),根据所绘制成的图形判断数据的分布和走势,从而判断产品的质量情况。表现为: 之前有分析过一个COST计算的案例,里面有关行数总量(RO...
2016-11-25 10:30 6347 0
SQL优化与调优技术是一个复杂的主题,CBO的核心算法COST数学代价模型的正确建立,受到很多因素的影响。例如数据库支持的算法种类(nest loop,hash join,sort merge,hash unique sort,parallel,bloom filter...),假如某个数据库不支持某种算法,那么执行计划就不会去计算这种执行路径啦;还有代价模型是否考虑数据缓存,如果考虑缓存,实际产生的...
2016-11-25 10:01 4931 0
今天早上回到办公室没多久就接到了新炬过来的电话,说我们的数据库服务器swap使用已经过了告警基准线,让我去看看应用是否还运行正常。于是赶紧登陆服务器查了一下swap的活动情况: [cramer@zhzy-db01-p780:///]#lsps -s Total Paging Space Percent Used 98304MB 35% 确实,swap空间使用了30多G,内存交换活跃,怕是数...
2016-11-18 10:45 8884 1
最近,群里面见到很多关于ORACLE乱码的问题的讨论,我总结了一下普遍的几个问题,做了几个测试案例,再针对测试案例的结果解释一下原因。希望能做到知其然,知其所以然。。。 测试背景:操作系统默认字符集GBK,ORACLE服务端字符集AL32UTF8 执行工具是 sqlplus 下面几个测试案例都是用"哈"字符来展示的,先说明这么一个事实,"哈"字符在GBK下的...
2016-11-09 09:58 4913 0
今天有个网友问,想找数据库在指定时间段内执行过的所有SQL。我稍微想了一下AWR或许能解决他的问题,细想一下又觉得不妥,AWR报告中采集的SQL是两个采集时间点的SQL之差,如果SQL在这两个时间点之间被刷出了library cache, 则第二个时间点是采集不到该SQL的任何信息的,因此该SQL也就不会在报告中有体现了。 下面来做个试验,论证一下这个观点:...
2016-09-20 13:02 4582 0
来讨论Oracle收集表字段的唯一值统计使用的算法。11G中对于唯一值(number distinct value NDV)的估算算法,采用的新算法名称为 Approximate NDV。较于10G对于NDV的估算采取快速采样统计法,有了崭新的改进。对于亿级别以上的表数据,新算法无论是估算准确度和所需要的内存空间,都有明显的优势。 Approximate NDV 的算法思想如下: 步骤1. 将扫...
2016-09-08 17:07 5073 0
场景: A,B 两个表的大小都是超过50G的,现在需要对这两个表进行Hash连接,SQL如下: select * from A,B where A.id = b.id 显然,这个问题的性能瓶颈在于PGA中无法完全容纳build hash table时需要的内存而将两表hash分区到TEMP表空间,后续频繁产生的读写临时表空间。 有什么优化方案吗 落落的博客说需要加一个伪列,对这个伪列进行 Ora_Hash(...
2016-09-06 14:58 4607 0
实验环境如下: SQL> select * from v$version; BANNER -------------------------------------------------------------------------------- Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production PL/SQL Release 11.2.0.4.0 - Production CORE 11.2.0.4.0 Production TNS for 64-bit Windows
2016-09-02 15:21 4121 1