`

分区表分区时粒度太大

 
阅读更多

oracle数据库,下午发生性能问题

 

1、  检查两台服务器cpumemoryio等性能参数发现CPU使用率接近100%

2、  检查oracle session信息发现TMID_DEV_USER_DAYTMID_INCO_USER_DAYTMID_USE_USER_DAY等多个表上有等待事件,如下:

1  read by other session     package_PR_TADR_CDMA_ALL_DAY-028-201305    966:4233293320CTCNET     dsadm@dss-db31@@12542   05-07 12:48

2  read by other session     package_PR_TADR_CDMA_ALL_DAY-991-201305    823:3701837735CTCNET     dsadm@dss-db31@@20264   05-07 08:48

3  read by other session     package_PR_TADR_CDMA_ALL_DAY-771-201305    990:2304318681CTCNET     dsadm@dss-db31@@15093   05-07 15:39

4  db file sequential read   JDBC Thin Client886:1749825776CTCNET     dsadm@dss-db31@@11831   05-07 10:25

5  db file scattered read     package_PR_TAdR_3gdev_user_day-791-20131080:164352509CTCNET     dsadm@dss-db31@@26302   05-07 15:46

6  db file scattered read     package_PR_TADR_CDMA_ALL_DAY-371-201305    820:4233293320CTCNET     dsadm@dss-db31@@11817   05-07 13:05

7  db file scattered read     package_PR_TADR_CDMA_ALL_DAY-029-201305    1010:1780394967        CTCNET     dsadm@dss-db31@@1971905-07 12:52

8         PX Deq Credit: send blkd       oracle@dss-db41 (PZ99)        908:2432359197CTMB         zhanghuijun@WORKGROUP\DL580-2@1         05-07 15:56

1、  检查这些等待事件对应的sql及其执行计划如下:

UPDATE TADR_CDMA_ALL_DAY T SET T.LY_ONLINE_USER =( SELECT SUM(X.ONLINE_USER) FROM TMID_DEV_USER_DAY X

WHERE (X.DR_PROV_ID=:B1 OR :B1 ='001' ) AND X.STAT_DATE=:B3 AND T.DR_PROV_ID=X.DR_PROV_ID AND

T.REGION_ID=X.REGION_ID) WHERE T.STAT_DATE=:B2 AND (T.DR_PROV_ID=:B1 OR :B1 ='001' )

 

Plan hash value: 3471877290

 

--------------------------------------------------------------------------------------------------------------

| Id  | Operation                | Name              | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |

--------------------------------------------------------------------------------------------------------------

|   0 | UPDATE STATEMENT         |                   |       |       |  2208K(100)|          |       |       |

|   1 |  UPDATE                  | TADR_CDMA_ALL_DAY |       |       |            |          |       |       |

|   2 |   TABLE ACCESS FULL      | TADR_CDMA_ALL_DAY |    18 |   414 |  1572   (1)| 00:00:23 |       |       |

|   3 |   SORT AGGREGATE         |                   |     1 |    20 |            |          |       |       |

|   4 |    PARTITION RANGE SINGLE|                   |     5 |   100 |   122K  (1)| 00:28:37 |   KEY |   KEY |

|   5 |     TABLE ACCESS FULL    | TMID_DEV_USER_DAY |     5 |   100 |   122K  (1)| 00:28:37 |   KEY |   KEY |

从分析计划来看TMID_DEV_USER_DAYTMID_INCO_USER_DAYTMID_USE_USER_DAY等表查询效率较低。

语句如下:

UPDATE TADR_CDMA_ALL_DAY T SET T.LY_TOT_DEV_USER =( SELECT SUM(X.CM_TOT_DEV_USER) FROM
TMID_DEV_USER_DAY X WHERE (X.DR_PROV_ID=:B1 OR :B1 ='001' ) AND X.STAT_DATE=:B3 AND
T.DR_PROV_ID=X.DR_PROV_ID AND T.REGION_ID=X.REGION_ID) WHERE T.STAT_DATE=:B2 AND (T.DR_PROV_ID=:B1 OR
:B1 ='001' )

原因:

1、月初出帐期间,各种任务组合的叠加意外导致CPU的使用过载,加重了性能问题。

2、大表分区相比较数据规模颗粒偏大(比如,有表单分区达到5千万记录),由于oracle优化器本身有动态sample等机制,对大表而言内部的统计信息变化更容易导致对执行计划产生不确定影响的概率,影响SQL执行效率。

解决方法:

1、在表中创建local索引。

2、将分区粒度变小,拆分区。

最后业务恢复正常

 

分享到:
评论

相关推荐

    oracle分区表之hash分区表的使用及扩展

    例如,如果表`equity`按交易日期`trade_date`范围分区,查询特定股票ID在一年内的交易信息时,可能会涉及多个分区,导致跨分区查询,性能可能不佳。而使用Hash分区,相同的股票ID会落在同一分区,提高了查询效率,...

    分区表损坏时的数据修复 硬盘主引导记录.docx )

    分区表损坏时的数据修复 硬盘主引导记录 在计算机系统中,硬盘分区表是存储硬盘的重要组成部分,它记录了硬盘的分区信息。如果分区表遭到破坏,可能会导致硬盘分区信息损失,甚至无法访问硬盘中的数据。因此,维护...

    BLOG_如何将一个普通表转换为分区表.pdf

    在当前的IT行业,数据库管理和优化是重要的一环,尤其在处理大型数据集时,分区技术成为了提高数据管理效率的关键。分区表可以将表中的数据按特定规则分布到不同的物理区域中,从而提高查询效率、简化维护工作以及...

    oracle普通表转化为分区表的方法

    Oracle数据库中的分区表是一种高级的表组织形式,它将大表分成多个较小的部分,每个部分称为一个分区,以提高查询性能和管理效率。当表的大小超过2GB时,官方推荐使用分区表,因为它们在处理大量数据时具有显著优势...

    分区表的修复分区表的修复分区表的修复

    分区表的修复分区表的修复分区表的修复分区表的修复

    分区表解释-深入浅出硬盘分区表

    通过理解分区表的位置、结构以及其内部字段的含义,我们可以更好地维护硬盘健康,解决因分区表损坏导致的问题,并在必要时手动修复分区表,恢复丢失的分区。对于IT专业人士来说,掌握这些基础知识至关重要,因为它们...

    易我分区表医生--重建损毁的分区表

    当分区表受损时,操作系统无法正确识别分区,导致文件无法访问。而“易我分区表医生”具备强大的分区表修复功能,能够通过深度扫描磁盘,重建损坏的分区表,使硬盘恢复正常工作。 使用“易我分区表医生”的过程相对...

    海思MTD分区表

    海思MTD分区表是针对海思半导体的HI3516C芯片设计的一种存储分区配置,主要用于管理和组织嵌入式设备的非易失性存储器(NAND Flash)。MTD,即Memory Technology Device,是Linux系统中用于驱动各种非易失性存储设备...

    硬盘分区表修改

    ### 硬盘分区表修改知识详解 硬盘分区表是存储在硬盘0面0柱1扇区上...通过上述内容,我们可以了解到硬盘分区表的结构和功能,以及如何在遭遇分区表损坏时利用专门的工具软件进行修复,从而保护硬盘内的文件系统安全。

    CW M301Hv300分区表.rar

    每个分区都有其特定的起始地址和大小,这些信息在烧录固件或更新系统时必须精确无误。 了解这个分区表后,开发者可以有效地组织和管理系统的各个组件。例如,他们可以在指定的分区上安装新的应用程序,确保数据安全...

    Oracle分区表培训

    Oracle分区表是数据库管理系统Oracle中的一个高级特性,用于将大表分成较小、更易管理的部分,从而提高查询性能,优化存储管理和数据维护。在大型企业级应用中,尤其是在处理大量数据时,分区表是不可或缺的技术手段...

    MS SQL Server分区表、分区索引详解

    ### MS SQL Server 分区表、分区索引详解 #### 一、分区表简介 使用分区表的主要目的是为了改善大型表及具有多种访问模式的表的可伸缩性和可管理性。这里的“大型表”指的是数据量巨大的表,“访问模式”是指因不同...

    用易我分区表医生恢复破坏的分区表

    在使用《易我分区表医生》时,首先需要了解MBR和DBR的基本结构。通过软件的“编辑扇区”功能,可以直接查看和分析MBR和DBR的内容。例如,MBR的分区表项中,1BE字节表示是否为主活动分区,数值80表示当前分区是活动的...

    PTDD分区表医生v3.5汉化绿色专业版【检查硬盘分区表、修复分区表错误】

    当分区表出现问题时,可能会导致系统无法识别分区,甚至丢失数据。PTDD分区表医生正是针对这类问题设计的解决方案。 该软件的主要功能包括: 1. **分区表检查**:它可以深入扫描硬盘,检测分区表中的错误或异常...

    使用winhex 操作NTFS的分区表重建

    标题中的“使用WinHex操作NTFS的分区表重建”指的是在NTFS文件系统中,当分区表损坏导致分区丢失时,使用WinHex这款强大的十六进制编辑器进行分区表的恢复过程。描述中提到,即使所有分区都消失,也可以通过WinHex来...

    硬盘分区表详解 硬盘分区表详解

    硬盘分区表详解 硬盘分区表是计算机硬盘中的一个重要组件,它负责将硬盘分区成多个逻辑驱动器,以便操作系统和应用程序可以访问和存储数据。硬盘分区表详解硬盘主引导扇区的组成部分,包括主引导记录(MBR)和硬盘...

    手动编写分区表的方法

    当硬盘分区表遭遇严重损坏时,通过手动方式重新创建分区表可以有效地恢复硬盘的可用性。本文将详细介绍如何利用`Runtime's Disk Explorer`工具进行这项工作。 #### 二、理解硬盘分区表 硬盘分区表是位于硬盘第一个...

    Oracle分区表详解

    2. **简化维护工作**:当需要修复或更新数据时,只需要关注出现问题的特定分区,而不是整个表。 3. **均衡 I/O 负载**:通过将不同的分区映射到不同的磁盘上,可以有效地分散读写负载,进而改善整体系统的性能。 4. ...

    MySQL分区表自动创建及删除存储过程

    MySQL分区表是一种优化大型数据表查询效率的技术,它将一个大表分成多个逻辑上相连但物理上独立的部分,每个部分称为一个分区。分区可以按照不同的策略进行,如范围、哈希、列表或复合分区。这样做有助于提高数据...

Global site tag (gtag.js) - Google Analytics