技术标签: oracle 存储 数据库 delete table
Oracle表段中的高水位线HWM
在Oracle数据的存储中,可以把存储空间想象为一个水库,数据想象为水库中的水。水库中的水的位置有一条线叫做水位线,在Oracle中,这条线被称为高水位线(High-warter mark, HWM)。在数据库表刚建立的时候,由于没有任何数据,所以这个时候水位线是空的,也就是说HWM为最低值。当插入了数据以后,高水位线就会上涨,但是这里也有一个特性,就是如果你采用delete语句删除数据的话,数据虽然被删除了,但是高水位线却没有降低,还是你刚才删除数据以前那么高的水位。也就是说,这条高水位线在日常的增删操作中只会上涨,不会下跌。
下面我们来谈一下Oracle中Select语句的特性。Select语句会对表中的数据进行一次扫描,但是究竟扫描多少数据存储块呢,这个并不是说数据库中有多少数据,Oracle就扫描这么大的数据块,而是Oracle会扫描高水位线以下的数据块。现在来想象一下,如果刚才是一张刚刚建立的空表,你进行了一次Select操作,那么由于高水位线HWM在最低的0位置上,所以没有数据块需要被扫描,扫描时间会极短。而如果这个时候你首先插入了一千万条数据,然后再用delete语句删除这一千万条数据。由于插入了一千万条数据,所以这个时候的高水位线就在一千万条数据这里。后来删除这一千万条数据的时候,由于delete语句不影响高水位线,所以高水位线依然在一千万条数据这里。这个时候再一次用select语句进行扫描,虽然这个时候表中没有数据,但是由于扫描是按照高水位线来的,所以需要把一千万条数据的存储空间都要扫描一次,也就是说这次扫描所需要的时间和扫描一千万条数据所需要的时间是一样多的。所以有时候有人总是经常说,怎么我的表中没有几条数据,但是还是这么慢呢,这个时候其实奥秘就是这里的高水位线了。
那有没有办法让高水位线下降呢,其实有一种比较简单的方法,那就是采用TRUNCATE语句进行删除数据。采用TRUNCATE语句删除一个表的数据的时候,类似于重新建立了表,不仅把数据都删除了,还把HWM给清空恢复为0。所以如果需要把表清空,在有可能利用TRUNCATE语句来删除数据的时候就利用TRUNCATE语句来删除表,特别是那种数据量有可能很大的临时存储表。
修正ORACLE表的高水位线
在ORACLE中,执行对表的删除操作不会降低该表的高水位线。而全表扫描将始终读取一个段(extent)中所有低于高水位线标记的块。如果在执行删除操作后不降低高水位线标记,则将导致查询语句的性能低下。下面的方法都可以降低高水位线标记。
1.执行表重建指令 alter table table_name move;
(在线转移表空间ALTER TABLE 。。。 MOVE TABLESPACE 。。。
ALTER TABLE 。。。 MOVE 后面不跟参数也行,
不跟参数表还是在原来的表空间,move后记住重建索引
如果以后还要继续向这个表增加数据,没有必要move,
只是释放出来的空间,只能这个表用,其他的表或者segment无法使用该空间
)
2.执行alter table table_name shrink space; 注意,此命令为Oracle 10g新增功能,再执行该指令之前必须允许行移动 alter table table_name enable row movement;
3.复制要保留的数据到临时表t,drop原表,然后rename临时表t为原表
4.emp/imp
5.alter table table_name deallocate unused
6.尽量truncate 吧
今天从eclispe复制了一个js文件到idea中,出现了中文乱码,具体如下图下面说解决的办法:1.点击idea页面右下角的,然后选择GBk2.之后会弹出下面的一个窗口,这个地方一定选择Reload(不要选择错了)现在已经能够看到中文可以正常显示了,但是还不够。这个“Reload”选择后不会改变文件和内容的编码格式,而是将IDE本身的解码格式由我原先的U
目录 天空盒的实现原理 具体代码实现 效果如下今天我们学习实践天空盒,天空盒的技术本身比较简单,但是却可以做出来很多比较天空、大山、大海、以及VR看房等效果。可以作为背景动态移动,也可以跟随手势或者传感器等进行移动变换。一、立方体贴图和天空盒所谓的天空盒其实就是将一个立方体展开,然后在六个面上贴上相应的贴图天空盒的效果正如开篇动画中展示的效果一样,从一个视点,旋转视角看天空,呈现出来不同画面。我们可以想象成我们自己就位于一个三维空间的内部中心点,四周是一_天空盒
文章目录JSP:MVC:开发模式EL表达式JSTL三层架构:软件设计架构案例:用户信息列表展示JSP:1. 指令 * 作用:用于配置JSP页面,导入资源文件 * 格式: <%@ 指令名称 属性名1=属性值1 属性名2=属性值2 ... %> * 分类: 1. page : 配置JSP页面的 * contentType:等同于response.setContentType() 1. 设置响应体的mime类型以及字符集 2. 设置当前jsp页面的编码(只能是_el表达式多少层
package com.viathink;import java.math.BigDecimal;/** * 数字格式化工具类 * @author LiuJunGuang * @date 2013-1-26上午10:44:08 */public class NumberUtils { /** * 格式化为指定位小数的数字,返回未使用科学计数法表示的具有指定位数的字符串。
vs生成失败不报错问题描述:一台机子copy到另一台机子第一台用的xp系统,vs2005 framework2.0第二台win7 用的vs2011生成失败的原因:里边有的dll在win7里边没有注册 也就是出现黄叹号由于警告七百多条 呵呵重要的信息看不到,所以也不知道哪错了解决办法:项目(所有的)--》右键--》属性--》生成..._vs生成失败但不报错
Apriori算法目录一、前言二、关联分析三、Apriori原理四、利用Apriori算法来发现频繁集1、Apriori算法及实例描述2、生成候选项集2、组织完整的Apriori算法五、从频繁项集中挖掘关联规则六、示例1:发现国会投票中的模式七、示例2:发现毒蘑菇的相似特征八、总结参考文献一、前言 Apriori算法是一种用于关联规则挖掘(Association rule mining)的代..._试利用apriori关联规则挖掘算法函数进行关联规则挖掘结果说明
如何选择数据结构Array读快改慢Linked改快读慢Hash两种之间_collection属于可变量容器吗
ReenttrantLcok底层原理分析和源码分析假设t1线程过来之前还没有其他线程过来,这个时候会先进行一个判断,走一个cas比较操作,如果当前状态是0,说明自旋成功,就会把当前线程设置为独占线程,说明当前线程获取锁成功,如果失败会走else 会尝试获取锁,如果获取锁成功,执行返回,如果失败会入队,入队会先把当前线程封装成node节点,判断tail尾节点是否为null,如果不为null,说明node已经被初始化了,这个时候进行一个判断 进行cas设置,如果设置成功,就把尾节点设置为node,然后返回no_tlcok是什么意思
spring国际化_spring国际化实现原理
1. 从线性规划到二次规划LP算法主流主要是Dantzig的Simplex和Karmarkar的IPM算法:Simplex Method:大部分中小规模问题超快,大规模问题不如IPM,偶尔情况很差。Interior-point Method, IPM:大规模情况比较快, 中小规模不如Simplex, 但是不会出现最坏情况。2. Cvxpy介绍CVXPY是一种可以内置于Python中的模..._cvxpy qp问题定义
项目背景因为一个页面的功能比较多,会拆分了很多组件,但是数据却要共用同步的情况一,vuex 声明全局变量import getters from './getters'import app from './modules/app'export default new Vuex.Store({ modules: { app, }, state: { analysisJSON: {}, // 事件分析的对象json }, mutations: { setAna_vue 全局变量 监听变化
本文转载自菜鸟教程,版权归其所有。Java 泛型Java 泛型(generics)是JDK 5中引入的一个新特性,泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。 假定我们有这样一个需求:写一个排序算法,能够对整形数组、字符串数组甚至其他任何类型的数组进行排序,该如何实现? 答案是可以使用Jav_getupernumber