- 浏览: 95396 次
- 性别:
- 来自: 上海
-
文章分类
- 全部博客 (139)
- oracle基础 (27)
- oracle sql编程及优化 (14)
- ELK (4)
- java (11)
- java设计模式 (0)
- 互联网知识 (6)
- 安装MongoDB (1)
- MongoDB (0)
- spark (1)
- scala (1)
- spring boot (3)
- spring cloud (8)
- redis (6)
- virtualbox (3)
- docker (7)
- rabbitmq (0)
- rocketmq (2)
- k8s (8)
- ubuntu (11)
- centos (3)
- mysql (4)
- nginx (7)
- tomcat (5)
- postman (1)
- other (10)
最新评论
-
lihao312:
insert all功能好强大哦 之前都没有用到过
oracle 多表插入 insert all 用法(即列转行)
1、聚簇因子(Clustering factor)
索引行的存储顺序与表中行的存储顺序之间的相似程度。
当相似度高时,这些数据行就会密集地存储在相对较少的数据块中,这是聚簇因子比较好的情况。Oracle中,对于同一个查询语句,有时候会很快的完成,有时候却很慢,但是表结构什么的完全一致,表中的数据也完全一致,这个具体是什么原因呢,就要从Index中的细节说起了。在Oracle中的一个特殊的视图user_indexes中有一个特殊的列,名字是clustering_factor,这个值的内容就是如果访问表的整个表数据,会造成多少次数据库IO。
A:如果这个值与块数接近,则说明表相当有序,得到了很好的组织。在这种情况下,同一个叶子块中的索引条目可能指向同一个数据块中的行。(clustering_factor=blocks 好)
B:如果这个值与行数接近,表的次序可能就是非常随机的。在这种情况下,同一个叶子块上的索引条目不太可能指向同一个数据块上的行。(clustering_factor=num_rows 不好)
可以把聚簇因子看作是通过索引读取整个表时对表执行的逻辑I/O次数。也就是说聚簇因子指示了表相对于索引本身的有序程度。当oracle对索引结构执行区间扫描时,如果它发现索引中的下一行与前一行在同一个数据块上,就不会再执行另一个I/O从缓冲区缓存中获得表块。它已经有了表块的一个句柄,只需要直接使用就行了。不过,如果下一行不在同一个块上,就会释放当前的这个块,而执行另一个物理I/O在缓冲区缓存存放要处理的下一个块。
另外还要记住:对于一个表来说,一般只有一个索引能够有合适的聚簇因子!表中的行可能只以一种方式排序。
我们可以通过下面的SQL语句来查看。
select T.TABLE_NAME || '.' || I.index_name IDX_NAME, I.clustering_factor, T.BLOCKS, T.NUM_ROWS from user_indexes i, user_tables t where i.table_name = t.TABLE_NAME and t.TABLE_NAME = ? ORDER BY T.TABLE_NAME, I.table_NAME;
在这个SQL语句中,?代表的就是我们要检索的Index的名称。在表中数据有时候属于无序状态,这个时候的CLUSTERING_FACTOR比较接近NUM_ROWS,说明如果扫描整个表,每次都要根据Index来读取相应行的RowID,这个时候的IO操作很多,自然检索时间会比较长。如果数据有序的话,CLUSTERING_FACTOR比较接近BLOCKS,说明相邻的数据在一个块中,减少了IO操作数量,自然检索时间会大大降低。
2、准备实验条件
CREATE TABLE test_1 AS SELECT ROWNUM rn, a.* FROM all_objects a ORDER BY object_name DESC ; CREATE INDEX ind_test_1 ON test_1(rn); CREATE TABLE test_2 AS SELECT * FROM (SELECT ROWNUM rn, a.* FROM all_objects a) ORDER BY rn ASC ; CREATE INDEX ind_test_2 ON test_2(rn);
SQL> EXEC DBMS_STATS.gather_table_stats('USERS','TEST_1'); SQL> EXEC DBMS_STATS.gather_table_stats('USERS','TEST_2'); SQL> EXEC DBMS_STATS.gather_index_stats('USERS', 'IND_TEST_1'); SQL> EXEC DBMS_STATS.gather_index_stats('USERS', 'IND_TEST_2');
3、执行查询操作
SELECT * FROM tEST_1 WHERE rn BETWEEN 10000 AND 10200;
统计信息
----------------------------------------------------------
0 recursive calls
0 db block gets
85 consistent gets
0 physical reads
0 redo size
11897 bytes sent via SQL*Net to client
543 bytes received via SQL*Net from client
15 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
201 rows processed
SELECT * FROM tEST_2 WHERE rn BETWEEN 10000 AND 10200;
统计信息
----------------------------------------------------------
1 recursive calls
0 db block gets
35 consistent gets
0 physical reads
0 redo size
11897 bytes sent via SQL*Net to client
543 bytes received via SQL*Net from client
15 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
201 rows processed
4、观察试验结果
通过执行统计信息观察,test_1表的查询一致读是85,而test_2表的一致读只有35,竟然test_1的一致读尽然是test_2的2倍还多,是不是有点奇怪,同样的表结构,同样的数据(test_2多两条数据)
5、分析原因
select T.TABLE_NAME || '.' || I.index_name IDX_NAME, I.clustering_factor, T.BLOCKS, T.NUM_ROWS from user_indexes i, user_tables t where i.table_name = t.TABLE_NAME and t.TABLE_NAME IN( 'TEST_1','TEST_2') ORDER BY T.TABLE_NAME, I.table_NAME;
IDX_NAME
CLUSTERING_FACTOR
BLOCKS
NUM_ROWS
TEST_1.IND_TEST_1
26358
747
50490
TEST_2.IND_TEST_2
727
747
50492
发表评论
文章已被作者锁定,不允许评论。
-
oracle instr substr结合截取字符串
2014-10-11 11:44 0select substr(email, ... -
oracle is null 优化
2014-05-25 22:17 1299select * from emp where sys_op ... -
Oracle like 优化
2014-05-25 21:02 11381。尽量不要使用 like '%%' 2。对于 like ... -
SQL语句去掉重复数据
2014-03-17 16:07 648有的时候会有部分字段重复,比如ID值不一样,但EMAIL一样 ... -
in和or的性能区别
2012-11-23 16:29 0or会走索引 -
关于计划的稳定性与控制
2012-11-09 17:11 643oracle的基于成本的优化器(CBO)最令人郁闷 ... -
Oracle表与索引的分析及索引重建
2012-11-05 15:22 0转载:Oracle表与索引的分析及索引重建 ... -
ORACLE直方图学习笔记
2012-11-05 14:43 565引用:ORACLE直方图学习笔记 关于直方图的 ... -
oracle 索引介绍(二)
2012-11-05 11:31 655索引也可以像 ... -
oracle 索引介绍(一)
2012-11-05 11:31 717索引广义上可以分为3类:B-树索引、位图索引以及索引组织表。 ... -
analyze和dbms_stats函数的区别
2012-10-31 18:08 707analyze和dbms_stats函数都是收集一些统计信息, ... -
oracle 执行计划
2012-10-31 18:08 707解释计划 语句EXPLAI ... -
oracle表联结方法
2012-10-29 16:22 686联结的方法有:嵌套循环联结、散列联结、排序-合并联结 ... -
oracle数据访问途径之索引扫描
2012-10-29 16:22 696oracle总共只有两种基本 ... -
oracle数据访问途径之全扫描
2012-10-29 16:22 638oracle总共只有两种基本 ... -
autotrace 命令
2012-10-24 10:06 704在SQL*Plus中,你可以通过设置autotrace ...
相关推荐
王重东可能探讨了不同类型的索引(如位图索引、组合索引、函数索引)以及索引压缩、聚簇因子、索引与min/max函数等高级主题。 12. **系统管理工具** 王重东可能介绍了如何使用JDBC优化表连接,服务器端语句缓存,...
内容概要:本文详细介绍了基于MATLAB GUI界面和卷积神经网络(CNN)的模糊车牌识别系统。该系统旨在解决现实中车牌因模糊不清导致识别困难的问题。文中阐述了整个流程的关键步骤,包括图像的模糊还原、灰度化、阈值化、边缘检测、孔洞填充、形态学操作、滤波操作、车牌定位、字符分割以及最终的字符识别。通过使用维纳滤波或最小二乘法约束滤波进行模糊还原,再利用CNN的强大特征提取能力完成字符分类。此外,还特别强调了MATLAB GUI界面的设计,使得用户能直观便捷地操作整个系统。 适合人群:对图像处理和深度学习感兴趣的科研人员、高校学生及从事相关领域的工程师。 使用场景及目标:适用于交通管理、智能停车场等领域,用于提升车牌识别的准确性和效率,特别是在面对模糊车牌时的表现。 其他说明:文中提供了部分关键代码片段作为参考,并对实验结果进行了详细的分析,展示了系统在不同环境下的表现情况及其潜在的应用前景。
嵌入式八股文面试题库资料知识宝典-计算机专业试题.zip
嵌入式八股文面试题库资料知识宝典-C and C++ normal interview_3.zip
内容概要:本文深入探讨了一款额定功率为4kW的开关磁阻电机,详细介绍了其性能参数如额定功率、转速、效率、输出转矩和脉动率等。同时,文章还展示了利用RMxprt、Maxwell 2D和3D模型对该电机进行仿真的方法和技术,通过外电路分析进一步研究其电气性能和动态响应特性。最后,文章提供了基于RMxprt模型的MATLAB仿真代码示例,帮助读者理解电机的工作原理及其性能特点。 适合人群:从事电机设计、工业自动化领域的工程师和技术人员,尤其是对开关磁阻电机感兴趣的科研工作者。 使用场景及目标:适用于希望深入了解开关磁阻电机特性和建模技术的研究人员,在新产品开发或现有产品改进时作为参考资料。 其他说明:文中提供的代码示例仅用于演示目的,实际操作时需根据所用软件的具体情况进行适当修改。
少儿编程scratch项目源代码文件案例素材-剑客冲刺.zip
少儿编程scratch项目源代码文件案例素材-几何冲刺 转瞬即逝.zip
内容概要:本文详细介绍了基于PID控制器的四象限直流电机速度驱动控制系统仿真模型及其永磁直流电机(PMDC)转速控制模型。首先阐述了PID控制器的工作原理,即通过对系统误差的比例、积分和微分运算来调整电机的驱动信号,从而实现转速的精确控制。接着讨论了如何利用PID控制器使有刷PMDC电机在四个象限中精确跟踪参考速度,并展示了仿真模型在应对快速负载扰动时的有效性和稳定性。最后,提供了Simulink仿真模型和详细的Word模型说明文档,帮助读者理解和调整PID控制器参数,以达到最佳控制效果。 适合人群:从事电力电子与电机控制领域的研究人员和技术人员,尤其是对四象限直流电机速度驱动控制系统感兴趣的读者。 使用场景及目标:适用于需要深入了解和掌握四象限直流电机速度驱动控制系统设计与实现的研究人员和技术人员。目标是在实际项目中能够运用PID控制器实现电机转速的精确控制,并提高系统的稳定性和抗干扰能力。 其他说明:文中引用了多篇相关领域的权威文献,确保了理论依据的可靠性和实用性。此外,提供的Simulink模型和Word文档有助于读者更好地理解和实践所介绍的内容。
嵌入式八股文面试题库资料知识宝典-2013年海康威视校园招聘嵌入式开发笔试题.zip
少儿编程scratch项目源代码文件案例素材-驾驶通关.zip
小区开放对周边道路通行能力影响的研究.pdf
内容概要:本文探讨了冷链物流车辆路径优化问题,特别是如何通过NSGA-2遗传算法和软硬时间窗策略来实现高效、环保和高客户满意度的路径规划。文中介绍了冷链物流的特点及其重要性,提出了软时间窗概念,允许一定的配送时间弹性,同时考虑碳排放成本,以达到绿色物流的目的。此外,还讨论了如何将客户满意度作为路径优化的重要评价标准之一。最后,通过一段简化的Python代码展示了遗传算法的应用。 适合人群:从事物流管理、冷链物流运营的专业人士,以及对遗传算法和路径优化感兴趣的科研人员和技术开发者。 使用场景及目标:适用于冷链物流企业,旨在优化配送路线,降低运营成本,减少碳排放,提升客户满意度。目标是帮助企业实现绿色、高效的物流配送系统。 其他说明:文中提供的代码仅为示意,实际应用需根据具体情况调整参数设置和模型构建。
少儿编程scratch项目源代码文件案例素材-恐怖矿井.zip
内容概要:本文详细介绍了基于STM32F030的无刷电机控制方案,重点在于高压FOC(磁场定向控制)技术和滑膜无感FOC的应用。该方案实现了过载、过欠压、堵转等多种保护机制,并提供了完整的源码、原理图和PCB设计。文中展示了关键代码片段,如滑膜观测器和电流环处理,以及保护机制的具体实现方法。此外,还提到了方案的移植要点和实际测试效果,确保系统的稳定性和高效性。 适合人群:嵌入式系统开发者、电机控制系统工程师、硬件工程师。 使用场景及目标:适用于需要高性能无刷电机控制的应用场景,如工业自动化设备、无人机、电动工具等。目标是提供一种成熟的、经过验证的无刷电机控制方案,帮助开发者快速实现并优化电机控制性能。 其他说明:提供的资料包括详细的原理图、PCB设计文件、源码及测试视频,方便开发者进行学习和应用。
基于有限体积法Godunov格式的管道泄漏检测模型研究.pdf
嵌入式八股文面试题库资料知识宝典-CC++笔试题-深圳有为(2019.2.28)1.zip
少儿编程scratch项目源代码文件案例素材-几何冲刺 V1.5.zip
Android系统开发_Linux内核配置_USB-HID设备模拟_通过root权限将Android设备转换为全功能USB键盘的项目实现_该项目需要内核支持configFS文件系统
C# WPF - LiveCharts Project
少儿编程scratch项目源代码文件案例素材-恐怖叉子 动画.zip