মেটা ডেটা লকের জন্য অপেক্ষা করা দেখানোর পরে টেবিলটি ফেলে দিতে অক্ষম


11

আমরা একটি টেবিল ফেলে দেওয়ার চেষ্টা করছি তবে এটি ঝুলন্ত হয়ে যাচ্ছে, এবং যখন আমরা 'প্রসেসলিস্ট দেখান' কমান্ডটি দেখি তখন এটি 'মেটা ডেটা লকের অপেক্ষা' হিসাবে প্রদর্শিত হচ্ছে showing এমনকি আমরা নির্দিষ্ট টেবিলে কোনও অপারেশন করতে অক্ষম। কেউ কীভাবে সমাধান করতে জানেন?

উত্তর:


8

যদি একটি ইনোডিবি টেবিলটি SELECT বা DML (INSERT, UPDATE, DELETE) এর মাধ্যমে একেবারে অ্যাক্সেস করা হয়ে থাকে তবে আপনার ঠিক একটি মেটাডেটা লক আশা করা উচিত।

মেটাডেটা লকিংয়ের মাইএসকিউএল ডকুমেন্টেশন অনুসারে :

লেনদেনের সিরিয়ালাইজিবিলিটি নিশ্চিত করার জন্য, সার্ভারকে অবশ্যই একটি সেশনে কোনও টেবিলে ডেটা ডেফিনিশন ল্যাঙ্গুয়েজ (ডিডিএল) বিবরণী সঞ্চালনের অনুমতি দিতে হবে না যা অন্য সেশনে একটি অপূর্ণিত লেনদেনে ব্যবহৃত হয়। কোনও লেনদেনের মধ্যে ব্যবহৃত টেবিলগুলিতে মেটাডেটা লকগুলি অর্জন করে এবং লেনদেন শেষ না হওয়া অবধি এই লকগুলির মুলতবি স্থগিত করে সার্ভার এটি অর্জন করে। কোনও টেবিলের একটি মেটাডেটা লক টেবিলের কাঠামোর পরিবর্তনে বাধা দেয়। এই লকিং পদ্ধতির অন্তর্ভুক্ত রয়েছে যে কোনও সারণীর মধ্যে লেনদেন দ্বারা ব্যবহৃত একটি টেবিল লেনদেন শেষ না হওয়া অবধি অন্য সেশনের দ্বারা ডিডিএল স্টেটমেন্টে ব্যবহার করা যাবে না।

বলা হচ্ছে, অন্য ডিবি অধিবেশন টেবিলে তালা ঝুলছে কিনা তা আপনার নির্ধারণ করা উচিত। যদি এই জাতীয় অধিবেশনটি একটি অপূর্ণবিহিত লেনদেন হয় তবে সেখানেই হোল্ড আপ থাকতে পারে।

আপনি কেবল ফিরে দ্রুত diskspace প্রয়োজন হয়, আপনি চালাতে পারে TRUNCATE TABLE

পরামর্শ

টেবিলটিকে নিম্নে নামানোর চেষ্টা করার আগে এর নামকরণের চেষ্টা করুন:

ALTER TABLE mydb.mytable RENAME mydb.mytabletodrop;
TRUNCATE TABLE mydb.mytabletodrop;
DROP TABLE mydb.mytabletodrop;

পরামর্শটি আমাদের পক্ষে কার্যকর হয়নি। পরিবর্তে আমরা টেবিলের fooপুনরায় নামকরণে "টেবিল মেটাডেটা লকের অপেক্ষা করছি" পেয়েছিfootodrop
মতিন

@ ম্যাটিন এর সমস্ত অর্থ হ'ল এক বা একাধিক ডিবি সংযোগগুলি এখনও টেবিলটি অ্যাক্সেস করছে foo। একবার এই সমস্ত সংযোগগুলি হয়ে গেলে, তারপর ALTER TABLEএগিয়ে যেতে পারে।
রোল্যান্ডোমাইএসকিউএলডিবিএ

7

কোন ক্যোয়ারী কার্যকর করে একটি লেনদেন লক তৈরি করে তা আপনার খুঁজে পাওয়া উচিত:

SHOW ENGINE INNODB STATUS

এবং একটি বিভাগ দেখুন TRANSACTION। পরবর্তীতে আপনার একটি ক্যোয়ারীটি ডেটাবেস ছাড়ার জন্য হত্যা করা উচিত।

তথ্যসূত্র: আমি কীভাবে খুঁজে পাব যে কোনও লেনদেনের ফলে "টেবিল মেটাডেটা লকের অপেক্ষা করা হচ্ছে"?

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.