sql >> Databáze >  >> RDS >> Oracle

SQL pro aktualizaci Přeskočte zamčený dotaz a Java Multi Threading – jak to opravit

Použil bych něco takového:Kurzor pro výběr řádků pro aktualizaci a použití klauzule LIMIT pro získání prvních deseti dostupných.

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;

Ve skutečnosti bych nejprve viděl, zda by zpracování VŠECH zbývajících řádků jako sady bylo lepší než vícevláknové zpracování.

Pokud bych se pak rozhodl, že potřebuji nějakou formu multi-threadingu, podíval bych se na zřetězené funkce s povoleným paralelním (za předpokladu, že jsem na Enterprise Edition).



  1. Použití mySql přes proxy hází Způsobeno:java.sql.SQLException:Volatelné příkazy nejsou podporovány. po opětovném připojení

  2. Bezpečná/rychlá metoda pro předání seznamů parametrů proměnných do uložené procedury SqlServer2008

  3. pandasql nelze importovat:Chyba importu:nelze importovat název do_sql

  4. Udělte oprávnění SELECT k pohledu, ale ne k podkladovým objektům