성능 테스트를 위한 데이터 일괄 삽입을 구현하기 위해 Oracle에서 저장 프로시저를 작성하는 방법

다음 단계를 사용하여 Oracle 저장 프로시저를 작성하여 데이터 일괄 삽입을 구현할 수 있습니다.

  1. 테스트 데이터를 저장할 테이블을 만듭니다. 예를 들면 다음과 같습니다.

    CREATE TABLE test_data(
    id NUMBER,
    이름 VARCHAR2(50),
    age NUMBER
    );

  2. 삽입할 데이터 행 수를 나타내는 매개변수 n을 승인하는 저장 프로시저를 작성하십시오. 저장 프로시저에서 FOR 루프를 사용하여 데이터를 삽입합니다. 예를 들면 다음과 같습니다.

    프로시저 생성 또는 교체 insert_test_data(n IN NUMBER) AS
    BEGIN
    FOR i IN 1…n LOOP
    INSERT INTO test_data VALUES (i, 'Name ' || i, i * 10);
    루프 종료;
    저지르다;
    끝;

  3. 데이터를 삽입하기 위해 저장 프로시저를 호출합니다. 예를 들면 다음과 같습니다.

    insert_test_data(10000) 호출;

    이렇게 하면 test_data 테이블에 10000행의 데이터가 삽입됩니다.

참고: 실제 성능 테스트에서 데이터의 양과 저장 프로시저의 구현은 특정 테스트 요구 사항 및 환경에 따라 조정되어야 합니다. 동시에 쿼리 성능을 최적화하기 위해 적절한 인덱싱, 파티셔닝 및 기타 기술을 사용하는 것과 같은 데이터 무결성 및 성능 문제에 주의를 기울여야 합니다.

저장 프로시저를 정기적으로 호출하는 방법은 무엇입니까?
Oracle에서는 DBMS_SCHEDULER 패키지를 사용하여 저장 프로시저를 주기적으로 호출할 수 있습니다. 구체적인 단계는 다음과 같습니다.

  1. 예를 들어 저장 프로시저를 만듭니다.

    CREATE OR REPLACE PROCEDURE my_proc AS
    BEGIN
    -
    저장 프로시저의 논리적 끝;

  2. 작업을 생성하려면 DBMS_SCHEDULER.CREATE_JOB 프로시저를 사용하여 작업을 생성합니다. 예를 들면 다음과 같습니다.

    BEGIN
    DBMS_SCHEDULER.CREATE_JOB (
    job_name => 'my_job',
    job_type => 'PLSQL_BLOCK',
    job_action => 'BEGIN my_proc; END;',
    start_date => SYSTIMESTAMP,
    repeat_interval => 'FREQ=DAILY; BYHOUR=0; BYMINUTE=0 ; BYSECOND=0;',
    활성화 => 참
    );
    끝;

    작업의 이름은 my_job, 유형은 PLSQL_BLOCK, 실행 동작은 my_proc 저장 프로시저 호출, 시작 시간은 현재 시간, 반복 간격은 매일 0시에 한 번, 작업은 가능합니다.

  3. 작업을 시작하려면 DBMS_SCHEDULER.ENABLE 프로시저를 사용하여 작업을 시작합니다. 예를 들면 다음과 같습니다.

    BEGIN
    DBMS_SCHEDULER.ENABLE('my_job');
    끝;

    이 명령문은 my_job이라는 작업을 시작합니다.

참고: DBMS_SCHEDULER 패키지를 사용하는 경우 CREATE JOB, CREATE EXTERNAL JOB, MANAGE SCHEDULER 및 기타 권한과 같은 충분한 권한이 있어야 합니다. 동시에 시스템 성능에 영향을 미치지 않도록 작업 실행 시간과 빈도에 주의를 기울여야 합니다.

그렇다면 이 Oracle 예약 작업을 삭제하는 방법은 무엇입니까?
Oracle에 대한 cron 작업을 삭제하려면 다음 단계를 사용할 수 있습니다.

  1. Oracle 데이터베이스의 sys 사용자 또는 DBA 권한이 있는 사용자로 로그인하십시오.

  2. 다음 명령을 사용하여 모든 현재 cron 작업을 봅니다.

    dba_scheduler_jobs에서 * 선택;

  3. 삭제하려는 cron 작업의 이름을 찾고 다음 명령을 사용하여 작업을 삭제합니다.

    작업 삭제 job_name;

    그 중 job_name은 삭제할 cron 작업의 이름입니다.

  4. 다음 명령을 사용하여 cron 작업이 삭제되었는지 확인합니다.

    dba_scheduler_jobs에서 * 선택;

    작업이 삭제된 경우 결과에 나타나지 않습니다.

참고: 예약된 작업을 삭제하면 데이터베이스의 정상적인 작동에 영향을 미칠 수 있으므로 주의하여 진행하십시오. 삭제하기 전에 관련 데이터를 백업하는 것이 좋습니다.

10분 이내에 1초마다 데이터 테이블에 무작위로 200개의 데이터를 추가하는 스크립트를 작성하십시오.

질문, 원하는 것을 수행하는 Oracle 스크립트는 다음과 같습니다.

DECLARE
  i NUMBER := 1;
BEGIN
  WHILE i <= 10 LOOP
    INSERT INTO your_table (column1, column2, column3)
    SELECT dbms_random.string('U', 10), dbms_random.string('U', 10), dbms_random.string('U', 10)
    FROM dual
    CONNECT BY level <= 200;
    COMMIT;
    DBMS_LOCK.SLEEP(1);
    i := i + 1;
  END LOOP;
END;

"your_table"을 데이터를 추가할 실제 테이블 이름으로 바꾸고 필요에 따라 열 이름과 데이터 유형을 변경해야 합니다. 이 스크립트는 DBMS_RANDOM 패키지를 사용하여 임의의 문자열을 생성하고 DBMS_LOCK.SLEEP 함수를 사용하여 각 삽입 사이에 1초 동안 일시 중지합니다. 마지막으로 COMMIT 문을 사용하여 데이터가 데이터베이스에 유지되도록 합니다.

나를 위해 수정할 수 있습니까? 이제 id 필드만 임의로 지정하고 다른 필드는 고정 값으로 지정하면 됩니다.

선언
i NUMBER := 1;
BEGIN
WHILE i <= 10 LOOP
INSERT INTO your_table(id, column1, column2, column3)
SELECT dbms_random.value(1, 1000), 'fixed_value1', 'fixed_value2', 'fixed_value3'
FROM dual
CONNECT BY level <= 200;
저지르다;
DBMS_LOCK.SLEEP(1);
나는 := 나는 + 1;
루프 종료;
끝;


请注意,您需要将“your_table”替换为您要向其中添加数据的实际表名,并根据需要更改列名和数据类型。此脚本使用DBMS_RANDOM包生成随机数,并使用DBMS_LOCK.SLEEP函数在每次插入之间暂停1秒钟。最后,使用COMMIT语句确保数据被持久化到数据库中。

Supongo que te gusta

Origin blog.csdn.net/qq_41568648/article/details/130744331
Recomendado
Clasificación