mysql লকের অপেক্ষার সময়সীমা অতিক্রম করে; লেনদেন পুনরায় চালু করার চেষ্টা করুন


26

আমরা জাভা অ্যাপ্লিকেশনটি চালাচ্ছি, যুগ যুগ ধরে চলছি, পিছনের দিকের ডিবি হ'ল মাইএসকিউএল, সম্প্রতি মাইএসকিএল 5.6 এ আপডেট হয়েছে। সবকিছু ঠিকঠাক চলছিল, গত সপ্তাহে এই ত্রুটি পাওয়া শুরু হয়েছিল লক অপেক্ষার সময়সীমা অতিক্রম করে; পুনরায় আরম্ভ করার চেষ্টা করুন যা দেখে মনে হচ্ছে কখনই শেষ হওয়া বন্ধ হবে না থামার জন্য এই ত্রুটিটি দিয়ে কী করবেন তা জানেন না। কেন এটি হঠাৎ ঘটছে

উত্তর:


29

লক টাইমের জন্য আপনি 100 সেকেন্ডে পরিবর্তনশীল আনোডব_লক_উইট_টাইমআউট = 100 সেট করতে পারেন।

mysql> set innodb_lock_wait_timeout=100;

Query OK, 0 rows affected (0.02 sec)

mysql> show variables like 'innodb_lock_wait_timeout';
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| innodb_lock_wait_timeout | 100   |
+--------------------------+-------+

সময়সীমা শেষ হওয়া লেনদেন, অন্য প্রক্রিয়াতে থাকা টেবিলটিকে লক করার চেষ্টা করুন। এবং আপনার টাইমআউট ভেরিয়েবলটি অল্প সংখ্যক সেকেন্ডের সাথে সেট করুন। সুতরাং এটি ত্রুটি দেখায়। আপনি কমান্ড দ্বারা আরও স্থিতি দেখতে পারেন।

SHOW ENGINE INNODB STATUS\G 

আপনি লক টেবিলগুলির তালিকা দেখতে পারেন-

 show open tables where in_use>0;

এখন থ্রেডটি দেখুন যা এই টেবিলটি ব্যবহার করছে

  show full processlist;

এখন আপনি এই থ্রেডটি মেরে ফেলতে পারেন বা এটি সম্পন্ন করার জন্য অপেক্ষা করতে পারেন।



এই তথ্যের জন্য ধন্যবাদ, তবে যখন লকগুলি ঘটতে থাকে তখন কীভাবে কেউ এই সমস্যার মূলে যেতে পারে, এমনকি ছোট ছোট আপডেটের (এমনকি কোনও একক ক্ষেত্রের বৃদ্ধি বা আপডেট করার মতো) সাধারণ টেবিলগুলিতেও।
ওয়াউটার

-1

মাইএসকিউএল সংস্করণটি যদি 5.0 এর কম ব্যবহার করে থাকে তবে আপনি সেশন বা বৈশ্বিক সুযোগের জন্যও পরিবর্তনশীল পরিবর্তন করতে পারবেন না। ট্র্যাফিক ধীর হয়ে যাওয়ার পরে ক্যোয়ারী ক্যাপচার করা এবং এটি সম্পাদন করা সর্বোত্তম সমাধান।


2
ওপি বলছে তারা 5.6 ব্যবহার করছে, যা (আমি ধরে নিই) 5.0 বা তার বেশি।
আরডিফোজ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.