- 浏览: 1019999 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (529)
- 服务器 (8)
- jsp (1)
- java (6)
- AIX (1)
- solaris (3)
- linux学习 (53)
- javaScript (2)
- hibernate (1)
- 数据库 (74)
- sql语句 (8)
- oracle 学习 (75)
- oracle 案例 (42)
- oracle 管理 (42)
- Oracle RAC (27)
- oracle data guard (12)
- oracle 参数讲解 (14)
- Oracle 字符集 (8)
- oracle性能调优 (24)
- oracle备份与恢复 (12)
- oracle Tablespace (9)
- oracle性能诊断艺术 (1)
- oracle 11g学习 (5)
- oracle streams (1)
- oracle upgrade and downgrade (4)
- db2学习 (13)
- db2命令学习 (2)
- mysql (28)
- sql server (30)
- sql server 2008 (0)
- 工具 (10)
- 操作系统 (3)
- c++ (1)
- stock (1)
- 生活 (5)
- HADOOP (2)
最新评论
-
massjcy:
...
如何将ubuntu文件夹中文名改为英文 -
skypiea:
谢谢。。。
终于解决了。。。
Oracle 10.2.0.4(5)EM不能启动的解决方案(Patch 8350262) -
qwe_rt:
引用vi /etc/sysconfig/network 请问 ...
Linux操作系统下配置静态IP上网 -
liuqiang:
sudo killall -9 apache2
ps 和 kill 命令详解 -
dazuiba:
引用*绝杀 kill -9 PID 当使用此命令时,一定要通过 ...
ps 和 kill 命令详解
当cursor_sharing参数为similar来减少硬解析.在这种设置下,如果一个等值查询sql的条件列上存在柱状图,Oracle将认为每次由不同的字面变量产生的cursor都是unsafe的,这样就会产生硬解析且增加version count.
SYS@huiches>select * from v$version;
BANNER
--------------------------------------------------------------------------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Prod
PL/SQL Release 10.2.0.4.0 - Production
CORE 10.2.0.4.0 Production
TNS for 32-bit Windows: Version 10.2.0.4.0 - Production
NLSRTL Version 10.2.0.4.0 - Production
已用时间: 00: 00: 00.09
SYS@huiches>desc test;
名称 是否为空? 类型
-------------------------------------------------------------------------------------------------------------------------------------------------- -------- ---------------------------------------------------------------------------------------------------
ID NUMBER
NAME VARCHAR2(20)
SYS@huiches>select count(*) from test;
COUNT(*)
----------
19999900
已用时间: 00: 00: 10.79
SYS@huiches>select sql_text,hash_value from v$sql where sql_text='select count(*) from test';
SQL_TEXT HASH_VALUE
------------------------------------------------------------ ----------
select count(*) from test 297253644
已用时间: 00: 00: 00.03
SYS@huiches>select operation,options,object_name,optimizer from v$sql_plan where hashvalue='297253644';
OPERATION OPTIONS OBJECT_NAME OPTIMIZER
------------------------------ ------------------------------ ------------------------------ ----------------------------------------------------------------------------------------------------------------------------------------------------------------
SELECT STATEMENT ALL_ROWS
SORT AGGREGATE
PX COORDINATOR
PX SEND QC (RANDOM) :TQ10000
SORT AGGREGATE
PX BLOCK ITERATOR
TABLE ACCESS FULL TEST
已选择7行。
已用时间: 00: 00: 02.61
SYS@huiches>show parameter cursor_sharing
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
cursor_sharing string EXACT
SYS@huiches>alter system set cursor_sharing='SIMILAR';
系统已更改。
已用时间: 00: 00: 00.07
SYS@huiches>show parameter cursor_sharing
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
cursor_sharing string SIMILAR
1.建立一个测试表histestnew,A B 两列都是unique的,区别在于A上有柱状图,B上没有柱状图;
SYS@huiches>create table histestnew as select rownum a, rownum b from dba_objects;
表已创建。
已用时间: 00: 00: 00.25
SYS@huiches>select count(*) from histestnew;
COUNT(*)
----------
50526
已用时间: 00: 00: 00.06
SYS@huiches>alter table histestnew add constraint UN1_histestnew unique (A);
表已更改。
已用时间: 00: 00: 00.23
SYS@huiches>alter table histestnew add constraint UN2_histestnew unique (B);
表已更改。
已用时间: 00: 00: 00.07
10g数据库统计怎么有问题呢?
SYS@huiches>exec dbms_stats.gather_table_stats(ownname=>'SYS',tabname=>'HISTESTNEW',cascade=>true,method_opt=>'FOR COLUMNS B SIZE 1');
PL/SQL 过程已成功完成。
已用时间: 00: 00: 00.15
SYS@huiches>select column_name,num_distinct,num_buckets from user_tab_col_statistics where table_name='HISTESTNEW';
COLUMN_NAME NUM_DISTINCT NUM_BUCKETS
------------------------------------------------------------ ------------ -----------
A 50526 75
B 51362 1
已用时间: 00: 00: 00.04
SYS@huiches>exec dbms_stats.gather_table_stats(ownname=>'SYS',tabname=>'HISTESTNEW',cascade=>true,method_opt=>'for columns B size 1');
PL/SQL 过程已成功完成。
已用时间: 00: 00: 00.12
SYS@huiches>select column_name,num_distinct,num_buckets from user_tab_col_statistics where table_name = 'HISTESTNEW';
COLUMN_NAME NUM_DISTINCT NUM_BUCKETS
------------------------------------------------------------ ------------ -----------
A 50526 75
B 50903 1
已用时间: 00: 00: 00.01
2.测试cursor_sharing=similar时,A列上不同字面量的等值查询将被oracle转换为相同hash value的sql语句;但是因为柱状图的存在,无法共享child cursor而发生硬解析:
SYS@huiches>show parameter cursor_sharing;
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
cursor_sharing string SIMILAR
SYS@huiches>alter system flush shared_pool;
系统已更改。
已用时间: 00: 00: 00.23
SYS@huiches>select * from histestnew where a=1;
A B
---------- ----------
1 1
已用时间: 00: 00: 00.03
SYS@huiches>select sql_text,version_count,optimizer_mode,hash_value from v$sqlarea where sql_text like '%select * from histestnew where a=%';
SQL_TEXT VERSION_COUNT OPTIMIZER_MODE HASH_VALUE
------------------------------------------------------------ ------------- -------------------- ----------
select * from histestnew where a=:"SYS_B_0" 1 ALL_ROWS 2855577372
已用时间: 00: 00: 00.03
SYS@huiches>select sql_text,loaded_versions,parse_calls,child_number from v$sql where sql_text like '%select * from histestnew where a=%';
SQL_TEXT LOADED_VERSIONS PARSE_CALLS CHILD_NUMBER
------------------------------------------------------------ --------------- ----------- ------------
select * from histestnew where a=:"SYS_B_0" 1 1 0
已用时间: 00: 00: 00.04
SYS@huiches>select * from v$mystat m,v$statname s where s.statistic#=m.statistic# and s.name='parse count (hard)';
SID STATISTIC# VALUE STATISTIC# NAME CLASS STAT_ID
---------- ---------- ---------- ---------- ------------------------------------------------------------ ---------- ----------
158 339 528 339 parse count (hard) 64 143509059
已用时间: 00: 00: 00.01
SYS@huiches>select * from histestnew where a=2; 使用2,3,4这三个不同的字面量,做等值查询
A B
---------- ----------
2 2
已用时间: 00: 00: 00.00
SYS@huiches>select * from histestnew where a=3;
A B
---------- ----------
3 3
已用时间: 00: 00: 00.01
SYS@huiches>select * from histestnew where a=4;
A B
---------- ----------
4 4
已用时间: 00: 00: 00.00
SYS@huiches>select sql_text,version_count,optimizer_mode,hash_value from v$sqlarea where sql_text like '%select * from histestnew where a=%';
SQL_TEXT VERSION_COUNT OPTIMIZER_MODE HASH_VALUE
------------------------------------------------------------ ------------- -------------------- ----------
select * from histestnew where a=:"SYS_B_0" 4 ALL_ROWS 2855577372
已用时间: 00: 00: 00.03
SYS@huiches>select sql_text,loaded_versions,parse_calls,child_number from v$sql where sql_text like '%select * from histestnew where a=%';
SQL_TEXT LOADED_VERSIONS PARSE_CALLS CHILD_NUMBER
------------------------------------------------------------ --------------- ----------- ------------
select * from histestnew where a=:"SYS_B_0" 1 1 0
select * from histestnew where a=:"SYS_B_0" 1 1 1
select * from histestnew where a=:"SYS_B_0" 1 1 2
select * from histestnew where a=:"SYS_B_0" 1 1 3
已用时间: 00: 00: 00.04
硬解析次数也相应的增加了3(531-528)次:
SYS@huiches>select * from v$mystat m,v$statname s where s.statistic#=m.statistic# and s.name='parse count (hard)';
SID STATISTIC# VALUE STATISTIC# NAME CLASS STAT_ID
---------- ---------- ---------- ---------- ------------------------------------------------------------ ---------- ----------
158 339 531 339 parse count (hard) 64 143509059
已用时间: 00: 00: 00.01
3.测试使用相同值做等值查询:
SYS@huiches>select * from histestnew where a=2;
A B
---------- ----------
2 2
已用时间: 00: 00: 00.01
SYS@huiches>select * from histestnew where a=2;
A B
---------- ----------
2 2
已用时间: 00: 00: 00.01
SYS@huiches>select * from histestnew where a=2;
A B
---------- ----------
2 2
已用时间: 00: 00: 00.00
此时可以看到硬解析次数未增加,version_count个数也未增加,sql可以共享:
SYS@huiches>select * from v$mystat m,v$statname s where s.statistic#=m.statistic# and s.name='parse count (hard)';
SID STATISTIC# VALUE STATISTIC# NAME CLASS STAT_ID
---------- ---------- ---------- ---------- ------------------------------------------------------------ ---------- ----------
158 339 531 339 parse count (hard) 64 143509059
已用时间: 00: 00: 00.03
SYS@huiches>select sql_text,version_count,optimizer_mode,hash_value from v$sqlarea where sql_text like '%select * from histestnew where a=%';
SQL_TEXT VERSION_COUNT OPTIMIZER_MODE HASH_VALUE
------------------------------------------------------------ ------------- -------------------- ----------
select * from histestnew where a=:"SYS_B_0" 4 ALL_ROWS 2855577372
已用时间: 00: 00: 00.03
SYS@huiches>select sql_text,loaded_versions,parse_calls,child_number from v$sql where sql_text like '%select * from histestnew where a=%';
SQL_TEXT LOADED_VERSIONS PARSE_CALLS CHILD_NUMBER
------------------------------------------------------------ --------------- ----------- ------------
select * from histestnew where a=:"SYS_B_0" 1 4 1
select * from histestnew where a=:"SYS_B_0" 1 1 2
select * from histestnew where a=:"SYS_B_0" 1 1 3
已用时间: 00: 00: 00.04
4.现在来看看B列,没有柱状图.
首先执行查询,生成一个共享游标(Cursor):
SYS@huiches>alter system flush shared_pool;
系统已更改。
已用时间: 00: 00: 00.17
SYS@huiches>select * from histestnew where b=1;
A B
---------- ----------
1 1
已用时间: 00: 00: 00.01
1* select sql_text,version_count,optimizer_mode,hash_value from v$sqlarea where sql_text like '%select * from histestnew where b=%'
SYS@huiches>/
SQL_TEXT VERSION_COUNT OPTIMIZER_MODE HASH_VALUE
------------------------------------------------------------ ------------- -------------------- ----------
select * from histestnew where b=:"SYS_B_0" 1 ALL_ROWS 2699912528
已用时间: 00: 00: 00.04
1* select sql_text,loaded_versions,parse_calls,child_number from v$sql where sql_text like '%select * from histestnew where b=%'
SYS@huiches>/
SQL_TEXT LOADED_VERSIONS PARSE_CALLS CHILD_NUMBER
------------------------------------------------------------ --------------- ----------- ------------
select * from histestnew where b=:"SYS_B_0" 1 1 0
已用时间: 00: 00: 00.03
SYS@huiches>select * from v$mystat m,v$statname s where s.statistic#=m.statistic# and s.name='parse count (hard)';
SID STATISTIC# VALUE STATISTIC# NAME CLASS STAT_ID
---------- ---------- ---------- ---------- ------------------------------------------------------------ ---------- ----------
158 339 616 339 parse count (hard) 64 143509059
已用时间: 00: 00: 00.03
SYS@huiches>select * from histestnew where b=2;
A B
---------- ----------
2 2
已用时间: 00: 00: 00.01
SYS@huiches>select * from histestnew where b=3;
A B
---------- ----------
3 3
已用时间: 00: 00: 00.01
SYS@huiches>select * from histestnew where b=4;
A B
---------- ----------
4 4
已用时间: 00: 00: 00.00
SYS@huiches>select sql_text,version_count,optimizer_mode,hash_value from v$sqlarea where sql_text like '%select * from histestnew where b=%';
SQL_TEXT VERSION_COUNT OPTIMIZER_MODE HASH_VALUE
------------------------------------------------------------ ------------- -------------------- ----------
select * from histestnew where b=:"SYS_B_0" 1 ALL_ROWS 2699912528
已用时间: 00: 00: 00.03
可以看到这个SQL只有一个版本,解析调用4次,实现了共享:
SYS@huiches>select sql_text,loaded_versions,parse_calls,child_number from v$sql where sql_text like '%select * from histestnew where b=%';
SQL_TEXT LOADED_VERSIONS PARSE_CALLS CHILD_NUMBER
------------------------------------------------------------ --------------- ----------- ------------
select * from histestnew where b=:"SYS_B_0" 1 4 0
已用时间: 00: 00: 00.03
SYS@huiches>select * from v$mystat m,v$statname s where s.statistic#=m.statistic# and s.name='parse count (hard)';
SID STATISTIC# VALUE STATISTIC# NAME CLASS STAT_ID
---------- ---------- ---------- ---------- ------------------------------------------------------------ ---------- ----------
158 339 616 339 parse count (hard) 64 143509059
可见在cursor_sharing=similar的环境中,如果条件列上存在柱状图,不同的字面量等值查询的sql,parent cursor可以共享,但是无法共享child cursor(VERSION_COUNT),因而造成硬解析.每一次sql被执行前都先要到library cache中根据hash value 查找parent cursor,然后查找是否有可以共享的child cursor,如果有就发生软解析,没有就要硬解析.在这个过程中,要使用library cache latch.如果发生硬解析,就要多次获得library cache latch,并且随着child cursor数量的增多,library cache latch 被持有的时间也会变长.由于latch是串行机制,多个进程同时申请获得一个latch就会产生竞争.等待获得latch的过程就是latch free,在等待latch free的时候,进程将持续占有CPU,这可能引起latch free导致CUP使用率过高.
发表评论
-
sys.dbms_transaction.local_transaction_id出现的问题
2012-07-20 11:54 3409何時會觸發DBMS_TRANSACTION.LOCAL_TRA ... -
ORACLE 11GR2 OEM配置出错解决
2012-07-14 19:21 5112错误描述如下: 2012-7-14 18:23:11 ... -
ORA11G ORA-00845 错误
2012-06-26 13:39 869Oracle 11g的Linux版本在修改了MEMORY_TA ... -
oracle.net.common.NetGetEnv.getDNSDomain
2012-06-07 01:48 1181今天安装LINUX AS 4和ORACLE 10.2,安装成功 ... -
emctl 提示 ora-28001 口令已经实效 解决办法
2011-10-24 00:41 1874What to do when Enterprise Mana ... -
Oracle 10.2.0.4(5)EM不能启动的解决方案(Patch 8350262)
2011-05-20 17:29 6995报错信息如下: 2011-03-09 11:06:10 Th ... -
Oracle HowTo:如何在Linux上扩展SGA超过1.7G
2011-03-24 01:28 952今天一台Linux服务器扩展了一下内存,达到4G,开发的人自己 ... -
error while loading shared libraries: libclntsh.so.10.1: cannot open shared 问题解决
2011-01-21 16:23 121171.运行csscan命令显示如下错误 [oracle@rac ... -
“Error in invoking target ‘client_sharedlib’ of makefile ‘/home/oracle/oracle/pr
2011-01-13 17:35 12001今天同事在安装oracle的时候总是报这个错误: &qu ... -
如何处理Oracle中的坏块[ZT]
2010-12-19 21:56 1254一. 什么是数据库的坏 ... -
bug 7716219 hash group by显示消耗大量的temp 表空间
2010-12-07 17:47 2197SQL> set autotrace traceonly ... -
ORA-08102: TRYING TO MANIPULATE A JOB IN DBA_JOBS [ID 1036858.6]
2010-12-03 23:52 1293***Checked for relevance on 17- ... -
ORA-14074: partition bound must collate higher than that of the last partition
2010-10-09 16:26 37261. 创建分区表 create table zhanglei ... -
ora-12560问题解决
2010-09-16 11:30 16201.监听服务没有起起来 ... -
ORA-20000故障排除手记
2010-09-02 01:43 24161、发现故障。 在Oracle10.2.0.1的aler ... -
ORA-17502 与 ORA-15173 错误解决
2010-05-21 17:27 4061用rman恢复spfile时,报错误如下: RM ... -
Dropping A Disk From ASM Diskgroup Does Not Remove It From v$ASM_DISK
2010-05-21 10:42 1518Applies to: Oracle Serv ... -
ORA-19599 When backing up an archivelog that is corrupt [ID 461239.1]
2010-05-13 13:56 2705Applies to: Oracle Server - E ... -
ASMCMD fails to start on module libnnz10.so, permission denied
2010-05-13 01:14 2570ASMCMD fails to start on modu ... -
Errors ORA-00600 [kclchkblk_4] and ORA-00600 [2662] After Recovery of Datab
2010-05-12 15:45 1764Applies to: Oracle Server - E ...
相关推荐
4. **用户交互**:Labview的图形用户界面(GUI)设计强大,可以添加控件和指示器,让用户能直接与柱状图互动,比如通过滑动条改变bin大小,点击柱子查看具体数据等。 5. **数据可视化**:Labview允许自定义颜色、...
柱状图通常使用BarSeries或者ColumnSeries,两者的主要区别在于显示方式——前者为横向,后者为纵向。 3. **自定义样式**:每个柱子都可以独立设置颜色、透明度、图案和边框等样式。通过修改Series的Items属性,...
在VB(Visual Basic)开发环境中,创建一个窗体显示柱状图是一项常见的任务,尤其在数据分析和可视化领域。本文将详细讲解如何利用VB来实现这一功能,并结合数据库数据进行展示。 首先,我们要明白柱状图是一种图形...
在MATLAB中,柱状图是一种常用的数据可视化工具,它能直观地展示各类别数据的大小。当柱状图结合渐变色时,可以更好地突出数据的差异和趋势,增加图表的美观性和可读性。本教程将详细介绍如何在MATLAB中创建具有渐变...
标题中的“柱状图_companyyza_图形_”暗示了我们即将探讨的是关于柱状图这一数据可视化工具,以及可能与“companyyza”相关的应用。柱状图是一种常用的数据表示方式,它通过竖直的条形长度来展示各类别数据的大小或...
【标题】"柱状图的Demo_安卓源码.zip"是一个专门为Android平台设计的应用源码示例,它展示了如何在Android应用中实现柱状图的功能。这个Demo是开发者学习和理解如何在Android应用中集成柱状图图表的一个理想资源。 ...
首先,XY Bar Graph与传统的柱状图相似,但其独特之处在于它允许用户通过X轴和Y轴定义数据的分类和值。这种图表类型可以清晰地显示两个变量之间的关系,对于数据分析和结果展示非常有用。在"xy_bar_graph.vi"这个VI...
2. **图像柱状图**: 柱状图是数据可视化的一种常见方法,常用于表示数量或比例的关系。在图像处理中,柱状图分析可能用于统计图像的像素分布、颜色频率等信息,帮助用户理解和分析图像特征。 3. **ImageStone**: ...
在这个例子中,我们创建了一个名为"DataSeries"的系列,设置了它的类型为柱状图,并为每个类别添加了相应的值。`IsValueShownAsLabel`属性使柱子顶部自动显示数据值。 为了显示汇总数据,你需要先对数据进行处理,...
堆叠柱状图在业务分析、市场研究等领域有广泛的应用,比如分析不同产品的销售比例、不同地区的用户分布等。通过堆叠柱状图,我们可以直观地理解各个部分如何共同构成整体,以及各部分之间的相对大小关系。在实际应用...
总体而言,GSM软件利用C++的编程能力,为地质勘探或矿业领域的专业人员提供了一个便捷的工具,能够处理钻孔数据并生成直观的柱状图,帮助他们理解和解释地下结构。用户通过导入Excel数据,利用GSM.exe运行程序,结合...
柱状图 柱状图 柱状图 柱状图 柱状图 柱状图 柱状图 柱状图 柱状图 柱状图 柱状图 柱状图 柱状图 柱状图 柱状图 柱状图 柱状图 柱状图 柱状图 柱状图 柱状图 柱状图 柱状图 柱状图 柱状图 柱状图
它可能包含方法来设置图表的标题、轴标签、颜色和其他视觉属性,以及将JavaBean提供的数据转换为JFreeChart可以理解的数据模型。 "chart.jpg"是生成的柱状图的静态图像文件,它是由"ChartGraphics"类创建并保存在...
在给定的标题和描述中,我们主要涉及到四种图表类型:柱状图、饼状图、折线图以及立体三维图。这些图表的实现通常依赖于第三方库,如Chart.js、Highcharts、D3.js或jQuery UI等。在这里,我们将探讨如何使用jQuery来...
6. **导出图表**:生成的柱状图可以保存为图片,方便在报告或演示中使用。 **三、柱状图V3.0-112.vi分析** 这个特定的VI可能包含了一些优化或增强功能,比如自定义颜色方案、动态数据更新、多列数据处理等。由于...
在本文中,我们将深入探讨如何使用LabVIEW创建柱状图,以及如何利用提供的"柱状图V3.0-112,柱状图怎么做,LabView源码.zip"资源来学习和理解这一过程。LabVIEW(Laboratory Virtual Instrument Engineering Workbench...
Java生成柱状图是一种在Java应用程序中展示数据的可视化方式,尤其适用于数据分析和报告。柱状图能够清晰地比较不同类别的数据量,是数据可视化的常见选择。在这个项目中,开发者提供了一个可以直接运行的解决方案,...
Qt库是一种跨平台的C++图形用户界面应用程序开发框架,被广泛用于开发桌面和移动设备的应用。...如果你想要进一步提升,可以研究如何添加动画效果,或者将柱状图与其他Qt组件集成,以实现更复杂的数据分析和交互功能。
通过研究这个例子,你可以了解到 ECharts 如何处理地图数据、如何将地图与柱状图关联,以及如何实现地图和柱状图的交互效果。同时,这也展示了 ECharts 的灵活性和强大的可视化能力,使得数据的展示更加生动和直观。
总的来说,`scatterbar.zip`提供的MATLAB脚本为用户提供了绘制三维数据柱状图的便利,通过散点与柱状的结合,使得数据可视化更加直观且富有深度。无论是学术研究还是工程实践中,掌握这类数据可视化技巧都将极大地...