sql >> Database teknologi >  >> RDS >> Oracle

SQL til opdatering Spring over låst forespørgsel og Java Multi Threading - Sådan løses dette

Jeg ville gå med noget som dette:En markør til at vælge rækkerne for at blive opdateret, og bruge LIMIT-sætningen til at få de første ti tilgængelige.

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;

Faktisk ville jeg først se, om det ville være bedre at behandle ALLE udestående rækker som et sæt end multi-threading.

Hvis jeg så besluttede, at jeg havde brug for en form for multi-threading, ville jeg se på pipelinede funktioner med parallel aktiveret (forudsat at jeg var på Enterprise Edition).



  1. Brug af xpath til at udtrække data fra en XML-kolonne i postgres

  2. CodeIgniter med Active Records og or_like

  3. Hvad er "rowversion" i SQL Server?

  4. SQL Server SHOWPLAN_ALL