programing

Oracle 10g에서 ROW_MOVEMENT를 활성화/비활성화하면 어떤 영향을 받습니까?

sourcejob 2023. 9. 6. 22:03
반응형

Oracle 10g에서 ROW_MOVEMENT를 활성화/비활성화하면 어떤 영향을 받습니까?

우리는 오라클 10G를 사용하고 있고 테이블 중 하나는 데이터를 쿼리/삭제하면 시간이 많이 걸립니다.이 표에는 약 천만 건의 기록이 수록되어 있습니다.

최근 이 테이블에서 ROW_MOVENATION이 비활성화되어 있음을 발견하여 다음 사항을 이해하고자 합니다.

  1. ROW_MOVENT를 활성화하면 어떤 성능 향상을 얻을 수 있습니까?
  2. ROW_MOVENT를 활성화하는 데 단점이 있습니까?
  3. 어떤 계기로 행이 움직였습니까?Oracle은 ROWS 이동이 필요하다고 판단하는 방법은 무엇입니까?

어떤 도움이라도 주시면 대단히 감사하겠습니다.

미리 감사드립니다!!

행 이동은 주로 파티션 테이블에 적용됩니다.파티션 간에 행을 이동할 수 있습니다.기본값인 행 이동이 비활성화된 상태에서는 업데이트가 있는 행을 이동할 수 없습니다.

SQL> CREATE TABLE part_table (ID NUMBER)
  2  PARTITION BY RANGE (ID)
  3     (PARTITION p0 VALUES LESS THAN (1),
  4      PARTITION p1 VALUES LESS THAN (MAXVALUE));

Table created

SQL> INSERT INTO part_table VALUES (0);

1 row inserted

SQL> UPDATE part_table SET ID = 2;

UPDATE part_table SET ID = 2

ORA-14402: updating partition key column would cause a partition change

행 이동을 허용할 경우 업데이트와 함께 행을 이동할 수 있습니다.

SQL> ALTER TABLE part_table ENABLE ROW MOVEMENT;

Table altered

SQL> UPDATE part_table SET ID = 2;

1 row updated

이 기능은 대부분의 경우 성능에 영향을 주지 않습니다. 기능이 활성화되었는지 여부와 상관없이 행이 정확히 동일한 방식으로 저장되고 쿼리됩니다.그러나 행 이동을 활성화하면 예를 들어 행이 물리적으로 이동(삭제+삽입과 유사)될 수 있습니다.예를 들어 인덱스 클러스터 요인에 영향을 미쳐 일부 쿼리의 성능에 영향을 줄 수 있습니다.

은 을 하므로 으로 됩니다 으로 됩니다 을 의미하므로 기본적으로 사용할 수 .rowid행이 변경될 수 있습니다. 이것은 Oracle에서 일반적인 동작이 아닙니다.

은 의 은 은 의 ROWIDs는 변경될 수 있습니다.그래서 만약 당신이 다음을 기반으로 한 질문이 있다면.ROWID그들은 잘못된 결과를 반환할지도 모릅니다.

http://www.dba-oracle.com/t_callan_oracle_row_movement.htm 도 참조하십시오.

다음 작업을 수행하려면 ROW MOVEN(행 이동)이 필요합니다.

  • 파티션 간에 행 이동(파티션 테이블)
  • 테이블 플래시백
  • 축소 테이블(Compact, Cascade, Normal)

질문에 대한 답: 행 이동을 활성화하면 성능이 향상되지 않지만 테이블을 축소할 수 있으므로 전체 테이블 쿼리에 대한 성능이 향상됩니다.

또한 ASKTOM은 다음과 같은 질문에 매우 좋은 답변을 제공합니다.

https://asktom.oracle.com/pls/asktom/f?p=100:11:0 ::::P11_QUESTION_ID:35203106066718

축소(ROW Movement가 필요한) 관련:

작업 수행 전후의 테이블에 대한 성능 지표를 수집하는 벤치마킹을 제안합니다.전체 검색이 이후 더 효율적으로 작동할 것으로 예상할 수 있으며, 블록당 행 수가 더 많기 때문에 인덱스 범위 검색이 변경되지 않거나 "더 나은" 것으로 예상할 수 있습니다(데이터 확산 감소).statspack 또는 dbconsole에서 사용 가능한 도구가 이를 측정하는 데 유용할 것입니다(시간이 지남에 따라 쿼리가 수행하는 작업의 양).

언급URL : https://stackoverflow.com/questions/19430145/what-is-the-impact-of-enabling-disabling-row-movement-in-oracle-10g

반응형