Comment écrire une procédure stockée dans Oracle pour implémenter l'insertion par lots de données pour les tests de performances

Vous pouvez utiliser les étapes suivantes pour écrire une procédure stockée Oracle afin d'implémenter l'insertion de données par lots :

  1. Créez une table pour stocker les données de test, par exemple :

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

  2. Créez une procédure stockée qui accepte un paramètre n, indiquant le nombre de lignes de données à insérer. Dans la procédure stockée, utilisez la boucle FOR pour insérer des données, par exemple :

    CRÉER OU REMPLACER LA PROCÉDURE insert_test_data(n EN NOMBRE) AS
    BEGIN
    FOR i IN 1…n LOOP
    INSERT INTO test_data VALUES (i, 'Name ' || i, i * 10);
    FIN DE BOUCLE ;
    COMMETTRE;
    FIN;

  3. Appelez une procédure stockée pour insérer des données, par exemple :

    appeler insert_test_data(10000);

    Cela insèrera 10 000 lignes de données dans la table test_data.

Remarque : Dans le test de performances réel, la quantité de données et l'implémentation de la procédure stockée doivent être ajustées en fonction des exigences et de l'environnement de test spécifiques. Dans le même temps, une attention particulière doit être portée aux problèmes d'intégrité des données et de performances, tels que l'utilisation d'une indexation, d'un partitionnement et d'autres technologies appropriées pour optimiser les performances des requêtes.

Comment appeler régulièrement la procédure stockée ?
Dans Oracle, vous pouvez utiliser le package DBMS_SCHEDULER pour appeler périodiquement des procédures stockées. Les étapes spécifiques sont les suivantes :

  1. Créez une procédure stockée, par exemple :

    CRÉER OU REMPLACER LA PROCÉDURE my_proc AS
    BEGIN
    -
    FIN logique de la procédure stockée ;

  2. Pour créer un travail, utilisez la procédure DBMS_SCHEDULER.CREATE_JOB pour créer un travail, par exemple :

    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 ; PARSECOND=0;',
    activé => VRAI
    );
    FIN;

    Le nom du travail est my_job, le type est PLSQL_BLOCK, l'action d'exécution consiste à appeler la procédure stockée my_proc, l'heure de début est l'heure actuelle et l'intervalle de répétition est une fois par jour à 0:00, et le travail est activé .

  3. Pour démarrer le travail, utilisez la procédure DBMS_SCHEDULER.ENABLE pour démarrer le travail, par exemple :

    BEGIN
    DBMS_SCHEDULER.ENABLE('mon_travail');
    FIN;

    Cette instruction démarre une tâche nommée my_job.

Remarque : Lorsque vous utilisez le package DBMS_SCHEDULER, vous devez disposer d'autorisations suffisantes, telles que CREATE JOB, CREATE EXTERNAL JOB, MANAGE SCHEDULER et d'autres autorisations. Dans le même temps, vous devez faire attention au temps d'exécution et à la fréquence des tâches pour éviter d'affecter les performances du système.

Alors, comment supprimer cette tâche planifiée Oracle ?
Pour supprimer des tâches cron pour Oracle, vous pouvez suivre les étapes suivantes :

  1. Connectez-vous à l'utilisateur sys dans la base de données Oracle ou à un utilisateur disposant des droits DBA.

  2. Utilisez la commande suivante pour afficher toutes les tâches cron en cours :

    SELECT * FROM dba_scheduler_jobs ;

  3. Trouvez le nom de la tâche cron que vous souhaitez supprimer, supprimez la tâche avec la commande suivante :

    DROP JOB nom_travail ;

    Parmi eux, job_name est le nom de la tâche cron à supprimer.

  4. Confirmez que la tâche cron a été supprimée avec la commande suivante :

    SELECT * FROM dba_scheduler_jobs ;

    Si le travail a été supprimé, il n'apparaîtra pas dans les résultats.

Remarque : La suppression d'une tâche planifiée peut affecter le fonctionnement normal de la base de données, veuillez procéder avec prudence. Il est recommandé de sauvegarder les données pertinentes avant la suppression.

Écrivez un script qui ajoute au hasard 200 éléments de données à la table de données toutes les 1 seconde en 10 minutes

Question, voici un script Oracle qui fait ce que vous voulez :

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;

Notez que vous devrez remplacer "votre_table" par le nom réel de la table à laquelle vous ajoutez des données, et modifier les noms de colonne et les types de données si nécessaire. Ce script utilise le package DBMS_RANDOM pour générer des chaînes aléatoires et utilise la fonction DBMS_LOCK.SLEEP pour faire une pause d'une seconde entre chaque insertion. Enfin, utilisez l'instruction COMMIT pour vous assurer que les données sont conservées dans la base de données.

Pouvez-vous me le modifier ? J'ai maintenant seulement besoin que le champ id soit aléatoire et que les autres champs soient des valeurs fixes

DECLARE
i NOMBRE := 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;
COMMETTRE;
DBMS_LOCK.SLEEP(1);
je := je + 1;
FIN DE BOUCLE ;
FIN;


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

Je suppose que tu aimes

Origine blog.csdn.net/qq_41568648/article/details/130744331
conseillé
Classement