Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

SQL Untuk Pembaruan Lewati Kueri Terkunci dan Java Multi Threading - Cara memperbaikinya

Saya akan menggunakan sesuatu seperti ini:Kursor untuk memilih baris agar pembaruan, dan menggunakan klausa LIMIT untuk mendapatkan sepuluh pertama yang tersedia.

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;

Sebenarnya, pertama-tama saya akan melihat apakah memproses SEMUA baris yang beredar sebagai satu set akan lebih baik daripada multi-threading.

Kemudian jika saya memutuskan bahwa saya memerlukan beberapa bentuk multi-threading, saya akan melihat fungsi pipelined dengan paralel diaktifkan (dengan asumsi saya menggunakan Enterprise Edition).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Masukkan jika tidak ada Oracle

  2. Masalah saat mengalihkan proyek .NET dari rakitan ODP.NET yang tidak dikelola ke yang dikelola

  3. Oracle:Operasi aritmatika menghasilkan overflow

  4. Tampilkan waktu akses terakhir dari tabel di Oracle DB

  5. Halaman beranda Oracle 10g express tidak muncul