Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

एसक्यूएल अपडेट के लिए लॉक की गई क्वेरी और जावा मल्टी थ्रेडिंग छोड़ें - इसे कैसे ठीक करें

मैं इस तरह कुछ के साथ जाऊंगा:अद्यतन के लिए पंक्तियों का चयन करने के लिए एक कर्सर, और पहले दस उपलब्ध कराने के लिए LIMIT क्लॉज का उपयोग करें।

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;

असल में, मैं सबसे पहले देखूंगा कि सभी बकाया पंक्तियों को एक सेट के रूप में संसाधित करना बहु-थ्रेडिंग से बेहतर होगा या नहीं।

फिर अगर मैंने तय किया कि मुझे मल्टी-थ्रेडिंग के किसी रूप की आवश्यकता है, तो मैं समानांतर सक्षम के साथ पाइपलाइन किए गए कार्यों को देखूंगा (मान लीजिए कि मैं एंटरप्राइज़ संस्करण पर था)।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. डिलीट/लोड डेटा स्क्रिप्ट चलाने से पहले ऑरैकल डेटाबेस को लॉक करें

  2. डेटाबेस कॉलम में बिट फ़्लैग के लिए कोई नुकसान?

  3. Oracle क्लस्टर से JDBC कनेक्शन

  4. ODP.NET कनेक्शन पूलिंग:कैसे बताएं कि क्या कनेक्शन का उपयोग किया गया है

  5. Oracle NCLOB से NVARCHAR2 (4000) मान में केवल पहले 4000 वर्णों की प्रतिलिपि कैसे करें?