Oracle普通表 临时表 awr统计分析

WBOY
풀어 주다: 2016-06-07 17:09:31
원래의
1088명이 탐색했습니다.

业务需要,我在oracle中建了一个名为 t_0_mtbuf 的表,用建普通表的语句建的,其实这个表的作用是临时表的作用,即:java中每次s

业务需要,我在Oracle中建了一个名为 t_0_mtbuf 的表,用建普通表的语句建的,其实这个表的作用是临时表的作用,即:

java中每次select 1500条出来,再在循环中逐个insert 进sqlserver数据库,然后在oracle中将这条记录删掉。

但是这样运行了一段时间,今天,表里缓存了6W多条数据,之前是几十甚至100的走的,现在是2条,1条的走,数据走不动了,问题很严重。

于是,高手让我执行了一句:

[sql]

  • 执行这句话,花了一段时间,执行完后,速度神奇的起来了!

    --这条语句重新分析表的统计信息

    举个例子,

    你的表有 10 条记录,已经删除 5 条了,可是数据库并不知道你删除 5 条,他记录还10条

    这样就发生冲突了,这样数据库就容易停在那里

    这条语句是告诉 oracle,给我重新统计一下 表的信息,两边都一致了,问题也就解决了

    --问:那有没有比较好的删除记录的语句,直接删掉之后,两边都同步的

    --答:使用 truncate 删除表,,但是将表清空了, 不能像 delete 可以加 where 条件保留部分记录

    --问:记录要一条条删除

    --答:那就加 commit ,删除一定要提交。或者做一下控制,累积删除 200 条 commit 一次

    --问:我想不通,我那个表的数据,不多,才6W条。没有commit,最多的也只1500条,怎么会就走不动了

    --答:这个是把 普遍数据表 作为临时表 经常遇到的问题,频繁的增加删除 经常容易造成访问非常慢的情况。

    查看某表物理大小,分区:

    [sql]

  • 把emp 换成你的表名,单引号中表名要大写一般情况下300w 数据是300m左右。一天300m,一个月约10g 左右。可以采用按月进行分区,一年12 张表每个月一张表,每个分区表一天是一个子分区。

     

    awr统计分析

    另外,没有找到这个原因之前,要分析到底什么引起了数据走不动的问题:使用awr统计,看是什么导致wait

    [sql]

  • 看看有没有directories,没有的话 要建一个

    [sql]

    [sql]

  • 建一个,后面是路径,保证要有这个文件夹

    [sql]

    [sql]

  • 然后在d:\dump路径 找到awr.dmp

    linux

  • 원천:php.cn
    본 웹사이트의 성명
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
    인기 튜토리얼
    더>
    최신 다운로드
    더>
    웹 효과
    웹사이트 소스 코드
    웹사이트 자료
    프론트엔드 템플릿
    회사 소개 부인 성명 Sitemap
    PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!