sql >> Database >  >> RDS >> Oracle

SQL voor update Vergrendelde query en Java Multi Threading overslaan - Hoe dit op te lossen?

Ik zou zoiets als dit gebruiken:een cursor om de rijen te selecteren die moeten worden bijgewerkt en de LIMIT-clausule gebruiken om de eerste tien beschikbaar te krijgen.

create table gm_temp
as select rownum id, table_name obj_name, date '2011-01-01' + rownum create_date 
from all_tables where rownum < 500;

CREATE TYPE tab_number IS TABLE OF NUMBER;

DECLARE
  cursor c_table IS 
    SELECT id FROM gm_temp ORDER BY create_date DESC FOR UPDATE OF id SKIP LOCKED;
  t_table_src tab_number := tab_number();
BEGIN
  OPEN c_table;
  FETCH c_table BULK COLLECT INTO t_table_src LIMIT 10;
  CLOSE c_table;
  dbms_output.put_line(':'||t_table_src.count||':'||t_table_src(1));
END;

Eigenlijk zou ik eerst kijken of het verwerken van ALLE openstaande rijen als een set beter zou zijn dan multi-threading.

Als ik dan zou besluiten dat ik een of andere vorm van multi-threading nodig had, zou ik kijken naar pijplijnfuncties met parallel ingeschakeld (ervan uitgaande dat ik op Enterprise Edition zat).



  1. Hoe een groot aantal records op te slaan in de MySql-database?

  2. Retourwaarde ophalen van opgeslagen procedure in asp.net

  3. 10 problemen met Common Access 2019 oplossen

  4. Selecteer aparte rijen uit twee tabellen, sorteer op datum