এসকিউএলাইট এফএকিউ থেকে আমি এটি জানি:
একাধিক প্রক্রিয়া একই সময়ে একই ডাটাবেস খোলা থাকতে পারে। একাধিক প্রক্রিয়া
SELECTএকই সময়ে একটি কাজ করতে পারে । তবে কেবলমাত্র একটি প্রক্রিয়া সময়ে যেকোন মুহুর্তে ডাটাবেসে পরিবর্তন আনতে পারে।
সুতরাং, যতদূর আমি বুঝতে হিসাবে আমি করতে: 1) একাধিক থ্রেড থেকে ডিবি পড়ুন ( SELECT) 2) একাধিক থ্রেড থেকে ডিবি পড়ুন ( SELECTএকক থ্রেড থেকে) এবং লিখন ( CREATE, INSERT, DELETE)
তবে, আমি রাইট-এহেড লগিং সম্পর্কে পড়েছিলাম যা পাঠকদের লেখকদের অবরুদ্ধ করে না এবং কোনও লেখক পাঠককে অবরুদ্ধ করে না বলে আরও সম্মতি দেয় । পড়া এবং লেখা একই সাথে অগ্রসর হতে পারে।
অবশেষে, আমি সম্পূর্ণরূপে বলার পেয়েছিলাম করেছি যখন আমি পাওয়া এটা যখন নিদিষ্ট:
এসকিউআইএলআইটি প্রতিরোধের জন্য অন্য কারণগুলি এখানে রয়েছে:
- চেষ্টা
CREATEবাDROPএকটি টেবিল বা ইনডেক্স যখন একটিSELECTবিবৃতি এখনও হয় নি।- একটি
SELECTএকই টেবিলে সক্রিয় থাকাকালীন কোনও টেবিলে লেখার চেষ্টা করছে ।SELECTস্ক্লাইটটি যদি সেট না করা থাকে তবে একটি বহুবিধ অ্যাপ্লিকেশনটিতে একই টেবিলে একই সাথে দুটি করার চেষ্টা করছেন ।- fcntl (3, FBSETLK কল DB ফাইলে ব্যর্থ হয় This এটি একটি এনএফএস লকিং সমস্যার কারণে হতে পারে, উদাহরণস্বরূপ this এই ইস্যুটির একটি সমাধান হ'ল ডিবি কে দূরে রাখা, এবং এটি আবার কপি করা যাতে এটির একটি নতুন ইনোড মান থাকে
সুতরাং, আমি নিজের জন্য পরিষ্কার করতে চাই, লকটি এড়ানো দরকার? আমি কি দুটি একই থ্রেড থেকে একই সাথে পড়তে এবং লিখতে পারি? ধন্যবাদ।
isolation_level=Noneযদিও একটি সেট না হওয়া পর্যন্ত আমার লকিংয়ের সমস্যা ছিল । ভাগ করা ক্যাশে মোড ব্যতীত আমি থ্রেডগুলির মধ্যে কীভাবে উদাহরণগুলি ভাগ করব?