& চারপাশের শব্দার্থবিজ্ঞানের দুর্বল বোঝার কারণে আমি অনেক ধীর কোড Statement
ব্যবহার করে একটি সমাধানে - (তবে এসকিউএল ইনজেকশন থাকা) ব্যবহার করে একটি ওয়ার্কিং লেগ্যাসি কোড পরিবর্তন করতে এই প্রশ্নের সমস্ত উত্তর অনুসরণ করেছি ।PreparedStatement
Statement.addBatch(String sql)
PreparedStatement.addBatch()
তাই আমি এখানে আমার দৃশ্যের তালিকা দিচ্ছি যাতে অন্যরা যাতে ভুল না করে।
আমার অবস্থা ছিল
Statement statement = connection.createStatement();
for (Object object : objectList) {
//Create a query which would be different for each object
// Add this query to statement for batch using - statement.addBatch(query);
}
statement.executeBatch();
সুতরাং উপরের কোডে, আমার হাজার হাজার বিভিন্ন প্রশ্ন ছিল, সমস্ত একই বিবৃতিতে যুক্ত হয়েছিল এবং এই কোডটি দ্রুত কাজ করেছিল কারণ বিবৃতি ক্যাশে করা হয়নি ভাল ছিল এবং এই কোডটি অ্যাপ্লিকেশনটিতে খুব কমই কার্যকর করা হয়েছিল।
এসকিউএল ইনজেকশনগুলি ঠিক করার জন্য, আমি এই কোডটি পরিবর্তিত করেছি,
List<PreparedStatement> pStatements = new ArrayList<>();
for (Object object : objectList) {
//Create a query which would be different for each object
PreparedStatement pStatement =connection.prepareStatement(query);
// This query can't be added to batch because its a different query so I used list.
//Set parameter to pStatement using object
pStatements.add(pStatement);
}// Object loop
// In place of statement.executeBatch(); , I had to loop around the list & execute each update separately
for (PreparedStatement ps : pStatements) {
ps.executeUpdate();
}
সুতরাং আপনি দেখুন, আমি কয়েক হাজার PreparedStatement
অবজেক্ট তৈরি করা শুরু করেছি এবং শেষ পর্যন্ত ব্যাচিংকে কাজে লাগাতে পারছি না কারণ আমার দৃশ্যের দাবি there এখানে হাজার হাজার আপডেট বা ইনসার্ট অনুসন্ধান রয়েছে এবং এই সমস্ত কোয়েরি আলাদা happen
পারফরম্যান্স অবক্ষয়ের কোনও মূল্য ছাড়াই এসকিউএল ইঞ্জেকশন স্থির করা বাধ্যতামূলক ছিল এবং আমি মনে করি না যে PreparedStatement
এই পরিস্থিতিতে এটি সম্ভব হয়েছে।
এছাড়াও, আপনি যখন ইনবিল্ট ব্যাচিং সুবিধা ব্যবহার করেন, কেবলমাত্র একটি বিবৃতি বন্ধ করার বিষয়ে আপনাকে চিন্তা করতে হবে তবে এই তালিকা পদ্ধতির সাথে আপনাকে পুনরায় ব্যবহারের আগে বিবৃতি বন্ধ করতে হবে, একটি প্রস্তুতিমূলক স্ট্যাটমেন্ট পুনরায় ব্যবহার করা উচিত