- 浏览: 255641 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
郑涵魁:
这才是好文啊
一次使用Eclipse Memory Analyzer分析Tomcat内存溢出 -
silvia016:
很有用,非常感谢
一次使用Eclipse Memory Analyzer分析Tomcat内存溢出 -
chengcwn:
好文章,多谢分享!
一次使用Eclipse Memory Analyzer分析Tomcat内存溢出 -
young7:
不错,特别是那个参考文章
JAVA调用Shell脚本--及阻塞的解决办法 -
zhujianbogo:
什么邮件列表,能说下解决方案吗? 谢谢 。 我也遇到这个问题了 ...
Tomcat与apache2集群的问题
【转载】查询计划中集的势(Cardinality)的计算
原文:http://www.hellodba.com/reader.php?ID=124&lang=cn
当使用CBO模式的优化器时,oracle在生成查询计划时,会计算各个访问路径的代价,选择代价最小的访问路径作为查询计划。这个选择过程我们可以通过做一个10053的trace来观察。
在做代价估算时,有一个很重要的参数作为代价计算的因数,这就扫描字段的集的势(cardinality)。那么这个值是如何计算的呢?这个值的计算根据索引情况及查询条件不同而不同,因而它的计算也比较复杂。下面我们只讨论在使用绑定变量的情况下集的势的计算。
集的势总的计算公式是:
集的势 = MAX(集的势因子 * 记录数, 1)
可以看出,影响集的势的值的主要因素是集的势因子。在不同情况下,这个因子的计算公式不同,下面我们就讨论不同情况下的集的势因子的计算。
索引字段
对于建立了索引(可以是复合索引)的字段,如果查询条件是“=”,字段的集的势计算公式如下:
集的势因子 = 1 / 字段上的唯一值数
让我们做个测试看,
SQL> create table T_PEEKING3 (a NUMBER, b char(1), c char(5));
Table created.
SQL>
SQL> create index T_PEEKING3_IDX1 on T_PEEKING3(b, c);
Index created.
SQL>
SQL> begin
2 for i in 1..1000 loop
3 insert into T_PEEKING3 values (i, mod(i, 10), mod(i, 13));
4 end loop;
5 commit;
6 end;
7 /
PL/SQL procedure successfully completed.
SQL>
SQL> analyze table T_PEEKING3 compute statistics for table for all indexes for all indexed columns;
Table analyzed.
表的记录数为1000,字段(B, C)上建立了索引,它们的唯一值数分别为:
SQL> select count(distinct b) from T_PEEKING3;
COUNT(DISTINCTB)
----------------
10
SQL>
SQL> select count(distinct c) from T_PEEKING3;
COUNT(DISTINCTC)
----------------
13
SQL>
SQL> select count(*) from
2 (
3 select distinct b, c from T_PEEKING3
4 );
COUNT(*)
----------
130
因此,B字段的集的势为round(1/10 * 1000) = 100,
select /*+index(a T_PEEKING3_IDX1)*/ * from T_PEEKING3 a where b=:V;
SELECT STATEMENT, GOAL = CHOOSE Cost=55 Cardinality=100 Bytes=1500
TABLE ACCESS BY INDEX ROWID Object name=T_PEEKING3 Cost=55 Cardinality=100 Bytes=1500
INDEX RANGE SCAN Object name=T_PEEKING3_IDX1 Cost=1 Cardinality=100
因此,C字段的集的势为round(1/13 * 1000) = 77,
select /*+index(a T_PEEKING3_IDX1)*/ * from T_PEEKING3 a where c=:V;
SELECT STATEMENT, GOAL = CHOOSE Cost=21 Cardinality=77 Bytes=1386
TABLE ACCESS BY INDEX ROWID Object name=T_PEEKING3 Cost=21 Cardinality=77 Bytes=1386
INDEX FULL SCAN Object name=T_PEEKING3_IDX1 Cost=3 Cardinality=77
如果索引字段查询条件是“<”“>”“<=”“>=”,则计算公式为,
集的势因子 = (1 / 字段上的唯一值数) + (1/记录数)
例:当查询条件为c > :1,它的集的势为round((1/13 + 1/1000)*1000) = 78
select /*+index(a T_PEEKING3_IDX1)*/* from T_PEEKING3 a where c > :1
SELECT STATEMENT, GOAL = CHOOSE Cost=22 Cardinality=78 Bytes=1404
TABLE ACCESS BY INDEX ROWID Object name=T_PEEKING3 Cost=22 Cardinality=78 Bytes=1404
INDEX FULL SCAN Object name=T_PEEKING3_IDX1 Cost=3 Cardinality=78
如果索引字段查询条件是in,则计算公式为,
集的势因子 = in条件中的变量数 / 字段上的唯一值数
例:当查询条件为c in (:1, :2, :3),它的集的势为round(3/13 * 1000) = 231
select /*+index(a T_PEEKING3_IDX1)*/* from T_PEEKING3 a where c in (:1, :2, :3);
SELECT STATEMENT, GOAL = CHOOSE Cost=57 Cardinality=231 Bytes=4158
TABLE ACCESS BY INDEX ROWID Object name=T_PEEKING3 Cost=57 Cardinality=231 Bytes=4158
INDEX FULL SCAN Object name=T_PEEKING3_IDX1 Cost=3 Cardinality=231
如果索引字段查询条件是“<>”,则计算公式为,
这时的集的势值也是这个字段上可以达到的最大集的势值。
例:当查询条件为c <> :1,它的集的势为round((1 – 1/13) * 1000) = 923
select /*+index(a T_PEEKING3_IDX1)*/* from T_PEEKING3 a where c <> :1
SELECT STATEMENT, GOAL = CHOOSE Cost=219 Cardinality=923 Bytes=16614
TABLE ACCESS BY INDEX ROWID Object name=T_PEEKING3 Cost=219 Cardinality=923 Bytes=16614
INDEX FULL SCAN Object name=T_PEEKING3_IDX1 Cost=3 Cardinality=923
当查询条件为not in时,计算就更为复杂了。它是根据not in中的变量值按阶计算的。
集的势因子 = (1 – (1/字段上的唯一值数))^(not in中变量数)
例:当查询条件为c not in (:1, :2, :3),它的集的势为round((1 – 1/13)^3 * 1000) = 787
select /*+index(a T_PEEKING3_IDX1)*/* from T_PEEKING3 a where c not in (:1, :2, :3)
SELECT STATEMENT, GOAL = CHOOSE Cost=187 Cardinality=787 Bytes=14166
TABLE ACCESS BY INDEX ROWID Object name=T_PEEKING3 Cost=187 Cardinality=787 Bytes=14166
INDEX FULL SCAN Object name=T_PEEKING3_IDX1 Cost=3 Cardinality=787
非索引字段
当查询条件为 “=”、“in” 时,非索引字段的集的势因子是,
集的势因子 = 1/100
例:以下集的势为 1/100 * 1000 = 10
select * from T_PEEKING3 where a = :1;
SELECT STATEMENT, GOAL = CHOOSE Cost=2 Cardinality=10 Bytes=180
TABLE ACCESS FULL Object name=T_PEEKING3 Cost=2 Cardinality=10 Bytes=180
当查询条件为“<”、“>”、“<=”、“>=”、“<>”、“not in” 时,非索引字段的集的势因子是,
集的势因子 = 1/20
例:以下集的势为 1/100 * 1000 = 10
select * from T_PEEKING3 where a < :1;
SELECT STATEMENT, GOAL = CHOOSE Cost=2 Cardinality=10 Bytes=180
TABLE ACCESS FULL Object name=T_PEEKING3 Cost=2 Cardinality=50 Bytes=180
多字段
对于多个字段同时在查询条件中,集的势因子计算公式如下,
集的势因子 = 字段1的集的势因子 * 字段2的集的势因子 * … *字段n的集的势因子
例:以下两个字段的复合集的势为round(((1/10 + 1/1000)*(1/13)) * 1000) = 8,
select /*+index(a T_PEEKING3_IDX1)*/* from T_PEEKING3 a where b > :1 and c = :2;
SELECT STATEMENT, GOAL = CHOOSE Cost=4 Cardinality=8 Bytes=144
TABLE ACCESS BY INDEX ROWID Object name=T_PEEKING3 Cost=4 Cardinality=8 Bytes=144
INDEX RANGE SCAN Object name=T_PEEKING3_IDX1 Cost=1 Cardinality=8
例:以下查询的集的势为round(((3/10) * 1/13) * 1000) = 23
select /*+index(a T_PEEKING3_IDX1)*/* from T_PEEKING3 a where b in (:1, :2, :3) and c = :2;
SELECT STATEMENT, GOAL = CHOOSE Cost=7 Cardinality=23 Bytes=414
INLIST ITERATOR
TABLE ACCESS BY INDEX ROWID Object name=T_PEEKING3 Cost=7 Cardinality=23 Bytes=414
INDEX RANGE SCAN Object name=T_PEEKING3_IDX1 Cost=1 Cardinality=23
例:以下查询的集的势为round((2/10) * (1/13 + 1/1000) * 1000) = 16
select /*+index(a T_PEEKING3_IDX1)*/* from T_PEEKING3 a where b in (:1, :2) and c > :2;
SELECT STATEMENT, GOAL = CHOOSE Cost=5 Cardinality=16 Bytes=288
INLIST ITERATOR
TABLE ACCESS BY INDEX ROWID Object name=T_PEEKING3 Cost=5 Cardinality=16 Bytes=288
INDEX RANGE SCAN Object name=T_PEEKING3_IDX1 Cost=1 Cardinality=16
例:以下查询的集的势为round((2/10) * (3/13) * 1000) = 46
select /*+index(a T_PEEKING3_IDX1)*/* from T_PEEKING3 a where b in (:1, :2) and c in (:1, :2, :3);
SELECT STATEMENT, GOAL = CHOOSE Cost=12 Cardinality=46 Bytes=828
INLIST ITERATOR
TABLE ACCESS BY INDEX ROWID Object name=T_PEEKING3 Cost=12 Cardinality=46 Bytes=828
INDEX RANGE SCAN Object name=T_PEEKING3_IDX1 Cost=1 Cardinality=46
例:以下查询的集的势为round((1-1/10) * ((1- 1/13)^2) * 1000) = 767
select /*+index(a T_PEEKING3_IDX1)*/* from T_PEEKING3 a where b <>:1 and c not in (:2, :3)
SELECT STATEMENT, GOAL = CHOOSE Cost=183 Cardinality=767 Bytes=13806
TABLE ACCESS BY INDEX ROWID Object name=T_PEEKING3 Cost=183 Cardinality=767 Bytes=13806
INDEX FULL SCAN Object name=T_PEEKING3_IDX1 Cost=3 Cardinality=767
例:以下查询的集的势为round((1/20) * (1/13 + 1/1000) * 1000) = 4
select * from T_PEEKING3 where a not in (:1) and c > :2;
SELECT STATEMENT, GOAL = CHOOSE Cost=68 Cardinality=4 Bytes=732
TABLE ACCESS FULL Object name=T_PEEKING3 Cost=2 Cardinality=4 Bytes=732
全表扫描
对于全表扫描,如果没有查询条件时,
集的势因子 = 1
例:以下集的势为 1 * 1000 = 1000
select * from T_PEEKING3;
SELECT STATEMENT, GOAL = CHOOSE Cost=2 Cardinality=1000 Bytes=18000
TABLE ACCESS FULL Object name=T_PEEKING3 Cost=2 Cardinality=1000 Bytes=18000
【转载】查询计划中集的势(Cardinality)的计算
发表评论
-
oracle 利用闪回 查看记录的历史信息
2012-02-07 09:15 1361利用闪回查看oracle的记录的历史记录, 通过历史时 ... -
ORA-00600: internal error code, arguments: [13310]
2012-01-15 21:21 1974前几天Java应用程序调用AIX下的Oracle时,报O ... -
Gather SCHEMA STATS
2011-12-21 11:07 0Gather SCHEMA STATS 2009-02- ... -
关于impdp时,的ora-39125异常
2011-12-20 10:27 3953处理对象类型 SCHEMA_EXPORT/TABLE/S ... -
删除oracle表空间
2011-12-19 16:30 1271drop tablespace tbname; --将 ... -
oracle外键引起的死锁
2011-09-30 21:10 3715今天系统测试的时候 ... -
impdp导入错误-版本问题
2011-09-09 13:02 6090今天帮同事用impdp导入数据库是发现错误, ... -
Oracle 删除外键约束、禁用约束、启用约束
2011-08-06 15:42 1612禁用所有外键约束 select 'alter t ... -
oracle 9i中imp导入另外一个表空间
2011-05-16 13:29 2110版本:oracle 9i 有关具 ... -
oracle 导出表结构到sql文件
2011-03-02 14:46 1817SQL> set serveroutput ... -
【转】Oracle 10g DBMS_SCHEDULER的中度解析
2011-02-18 00:10 1419DBMS_SCHEDULER是Oracle 10G中新增的一个 ... -
LAG和LEAD函数统计
2010-12-03 20:02 2024Lag和Lead函数可以在一次查询中取出同一字段 ... -
Oracle SPOOL总结
2010-11-12 19:20 9267spool常用的设置 set colsep' ' ... -
SQLLDR简单应用
2010-11-11 14:10 1135参数说明: userid -- ORAC ... -
Oracle 10g 备份与恢复之(expdp与impdp)
2010-11-08 20:01 3529expdb/impdb工具 1)在服务端使用 ... -
oracle flashback 闪回
2010-10-19 22:44 12181、必须设定undo保留 ... -
sql loader
2010-09-29 12:42 0sql loader可以把一些以文本格式存放的数据顺利的 ... -
Oracle时间戳类型
2010-09-26 17:27 9397Oracle Databse 9i数据库引 ... -
Oracle与时间戳有关的函数
2010-09-26 17:00 18059有很多函数可以用来查 ... -
ORACLE上下文 context
2010-09-21 16:00 2819今天做一个安全审计上下文对象,使用了 sys_ ...
相关推荐
内容概要:文章探讨了互联网时代的背景下开发一个实用的家庭理财系统的重要性。文中分析了国内外家庭理财的现状及存在的问题,阐述了开发此系统的目的——对家庭财产进行一体化管理,提供统计、预测功能。系统涵盖了家庭成员管理、用户认证管理、账单管理等六大功能模块,能够满足用户多方面查询及统计需求,并保证数据的安全性与完整性。设计中运用了先进的技术栈如SSM框架(Spring、SpringMVC、Mybatis),并采用MVC设计模式确保软件结构合理高效。 适用人群:对于希望科学地管理和规划个人或家庭财务的普通民众;从事财务管理相关专业的学生;有兴趣于家政学、经济学等领域研究的专业人士。 使用场景及目标:适用于日常家庭财务管理的各个场景,帮助用户更好地了解自己的消费习惯和资金状况;为目标客户提供一套稳定可靠的解决方案,助力家庭财富增长。 其他说明:文章还包括系统设计的具体方法与技术选型的理由,以及项目实施过程中的难点讨论。对于开发者而言,不仅提供了详尽的技术指南,还强调了用户体验的重要性。
弹性盒子Flexbox布局.docx
网络财务系统 SSM毕业设计 附带论文 启动教程:https://www.bilibili.com/video/BV1GK1iYyE2B
联想电脑的bios设置、图文都有
1_教务处关于云南师范大学2024年大学生科研训练基金项目立项申报工作的通知 (1).zip
<项目介绍> 基于Python实现的自然语言处理大作业——方面情感分析+源代码+文档说明+实验报告 - 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途
内容概要:本文探讨了使用Python语言构建一个集成漏洞扫描系统的可能性,旨在解决中小型网络运维人员面临的网络安全挑战。系统采用B/S架构,使用Django框架实现快速开发,Docker容器承载扫描工具Nmap。文中介绍了项目的背景、国内外研究现状、需求分析、系统设计、实现过程和测试结果。 适合人群:初级运维人员和网络安全研究者。 使用场景及目标:系统平台用于检测Web应用程序的安全漏洞,提供轻量级、学习成本低的解决方案,提升网络安全管理水平。 其他说明:虽然系统实现了预期功能,但仍存在一些不足,如架构相对简单、功能单一等问题,未来可以进一步优化。
功能说明: 功能:个人中心、公告信息管理、学院管理、学生管理、教师管理、督导管理、教师信息管理、学生评教管理、督导评教管理等功能模块。 环境说明: 开发语言:java 框架:ssm jdk版本:jdk1.8 数据库:mysql 5.7+ 数据库工具:Navicat11+ 管理工具:maven 开发工具:idea/eclipse 部署容器:tomcat7+
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手
功能大概包括:商品管理,商品多规格属性管理,商品分类,商品类型,商品品牌,商品订单,会员信息,优惠券,订单管理,加入进货车,立即下单,我的收藏等等 第一:商城后台,功能大概包括:商品管理,商品多规格属性管理,商品分类,商品品牌,商品订单,会员信息等等。 涉及到技术: springboot+Thymeleaf+mybatis 第二:小程序API,涉及到技术: springboot+mybatis-plus+jwt+mapstruct+lombok+redis+swagger 第三:mpvue小程序,小程序主要是用 mpvue 框架开发 mpvue 小程序运行步骤: 1、安装node环境 node 是8版本,这边开发版本是8.12.0,由于mpvue属于老牌小程序框架了,目前这边验证的只是这个node版本, 当然新的小程序UNIAPP发布之后没用此限制拉 2、设置npm淘宝镜像 npm set registry https://registry.npm.taobao.org/ 3、npm install 4、npm run dev
内容概要:本文详细介绍了基于 Java 和 Spring 框架的校园物品维修管理系统的开发与设计。该系统采用 B/S 架构,主要包括管理员、使用者和维修者三类用户的权限管理。系统提供了用户管理、设备管理和维修管理等功能,通过数据库操作确保数据安全性和系统扩展性。开发中采用了面向对象的设计思想和技术手段,提高了系统的可靠性和用户体验。 适合人群:具有一定 Java 基础的软件开发人员和项目管理者。 使用场景及目标:主要用于高校或研究机构中,对校园内各类设备的使用和维修情况进行高效管理,提升设备使用率和维修效率。 其他说明:系统的设计与实现详细描述了需求分析、总体设计、详细设计以及测试过程,为后续的开发和优化提供了全面的参考。
该MATLAB代码使用两步加权最小二乘法通过TDOA技术实现了二维目标定位。它通过随机生成的锚点和目标位置进行模拟,展示了如何通过迭代优化算法来提高位置估计的准确性。代码结构清晰,适合用于理解和实现基于TDOA的定位算法。
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手
本代码是基于python pytorch环境安装的。 下载本代码后,有个环境安装的requirement.txt文本 首先是代码的整体介绍 总共是3个py文件,十分的简便 本代码是不含数据集图片的,下载本代码后需要自行搜集图片放到对应的文件夹下即可 需要我们往每个文件夹下搜集来图片放到对应文件夹下,每个对应的文件夹里面也有一张提示图,提示图片放的位置 然后我们需要将搜集来的图片,直接放到对应的文件夹下,就可以对代码进行训练了。 运行01生成txt.py,是将数据集文件夹下的图片路径和对应的标签生成txt格式,划分了训练集和验证集 运行02CNN训练数据集.py,会自动读取txt文本内的内容进行训练,这里是适配了数据集的分类文件夹个数,即使增加了分类文件夹,也不需要修改代码即可训练 训练过程中会有训练进度条,可以查看大概训练的时长,每个epoch训练完后会显示准确率和损失值 训练结束后,会保存log日志,记录每个epoch的准确率和损失值 最后训练的模型会保存在本地名称为model.ckpt 运行03pyqt界面.py,就可以实现自己训练好的模型去识别图片了
基于“分治法”的排序算法
目录 • 一、微信小程序简介 • 二、微信小程序开发准备 • 三、微信小程序开发框架 • 四、微信小程序开发实例 • 六、微信小程序开发进阶 6.1 组件化开发 6.2 API调用 6.3 云开发 • 七、微信小程序开发注意事项 7.1 遵守规范 7.2 注意性能 7.3 保护用户隐私 • 八、总结 大家好,今天将为大家介绍一下微信小程序的开发。微信小程序是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或者搜一下即可打开应用。本文将从浅入深,以轻松易懂的方式为大家介绍微信小程序的开发。 一、微信小程序简介 微信小程序是一种全新的连接用户与服务的方式,它可以在微信内被便捷地获取和传播,同时具备出色的使用体验。简单来说,微信小程序就是一种可以在微信内运行的应用程序,它的开发成本较低,运行速度快,用户体验良好。 二、微信小程序开发准备 1. 注册微信小程序账号:首先需要在微信公众平台(https://mp.weixin.qq.com/)注册一个小程序账号,完成相关信息的填写和实名认证。 2. 下载安装微信开发者工具:访问微信公众平台,
在Gazebo上运行基于ROS1寻路算法
数据可视化驾驶舱,包含地图,页面可以直接运行
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手