频繁用delete删除容易造成高水位,delete之后数据虽然没有了,但占用的空间还在
如果删除临时数据时是全表删除的话,建议使用truncate进行清除,这样直接就能把水位降到0了
如果删除临时数据时是全表删除的话,建议使用truncate进行清除,这样直接就能把水位降到0了
解决方案 »
- 急!怎么将Oracel中全角的数字(nvarchar2)转为int类型的数字。
- 请教一个SQL优化问题
- 这种SQL连接方式很怪异没见过啊,谁能帮我解释下吗
- 请教orale数据查询的一条命令
- 请问此SQL应该怎么写(逆推问题)
- 高手留步,在Insert一条语句后,如何得到刚插入后的RowID值.在线等.
- oracle安装问题
- 备份、恢复oracle8数据库中的一个表(能不能用一句话就能实现)
- SOS:如何将一段SQL语句放入ORACLE数据库中,并定时自动执行?
- 为什么Exists不能用于条件语句(sqlserver通过阿)
- powerdesigner 多对多 建表 外键关联
- 【oracle】查询sendTime字段大于当前系统时间20分钟,小于3天的数据,求帮助。
2. 手动收集一下统计信息。
3. 版主所言极是。 1#
tt_vehicle_t v 这个表很大,是整个数据库 最大的一个表。
tt_device_t 这个表不是特别大,什么办法才能解决 提高 DML tmp_query_car 这个表的速度 的目前问题啊。。
删除临时数据时是全表删除的话,改为使用truncate进行清除表
如果不是全表删除的话,就需要定期执行下面的操作定期降低水位
1、将DML tmp_query_car表的数据导出
2、执行truncate table DML tmp_query_car
3、将数据导回
删除tmp_query_car 这个表时 都是删除里面的全部数据, 它本身就是用来临时存放 P_QUERY_CAR 这个存储过程执行完后 传过去的数据。明白了,是不是解决现在这个高水位问题 先定期执行下truncate table DML tmp_query_car 以后 再删除 tmp_query_car这个表的数据时 只要使用truncate 就可以了?
再请教个问题:
还是上面 这一个存储过程 和 这两个表, 之前也遇到过 DML操作cph_tmp,tmp_query_car这两个表的速度可以,但exec P_QUERY_CAR时执行速度很慢,平时在数据据量大的时候,执行这个存储时也都在60秒之内,突然exec P_QUERY_CAR时达到了40分钟左右,还出现过一直exec P_QUERY_CAR 停止不了这种状态,,像这样的情况,一般是什么原因啊?
再请教一个问题:
还是上面 那一个存储过程 和 两个表,还出现这样的情况:DML操作cph_tmp,tmp_query_car这两个表的速度很快,但exec P_QUERY_CAR时却很慢,一般数据量大的时候执行速度也都在60秒之内,后来 exec P_QUERY_CAR这个存储过程的速度高达40多分种,而且还出现过一直exec P_QUERY_CAR停止不了,只能杀这个存储过程的会话才能结束这种状态,这种情况一般是什么原因啊?
1、P_QUERY_CAR操作的数据量很大吗?是否当时数据库undo空间紧张,造成io等待
2、是否其他用户正在操作表中的数据,造成执行P_QUERY_CAR过程时需要等待其他用户提交之后才能继续执行
cph_tmp表中的记录多时,P_QUERY_CAR操作就会很大, 它读取cph_tmp中的hphm数据,然后再去找 tt_vehicle_t这个表中的相应的记录, tt_vehicle_t 表是整个数据库记录最多的一个表。