"সারণী অনুকূলিতকরণ, পরিবর্তে পুনরায় তৈরি করা + বিশ্লেষণ করা" সমর্থন করে না তার অর্থ কী?


100

আমি মাইএসকিউএল 5.5 এ কাজ করছি এবং একটি OPTIMIZE TABLEক্যোয়ারী ব্যবহার করে সূচি পুনর্নির্মাণের চেষ্টা করছি । আমি নীচে ত্রুটি পাচ্ছি:

সারণী অনুকূলিতকরণ সমর্থন করে না, পরিবর্তে পুনরায় তৈরি করুন + বিশ্লেষণ করুন

এটার মানে কি? মাইএসকিউএল ইঞ্জিন কি সূচি পুনর্নির্মাণের অনুমতি দিচ্ছে না? এই বার্তাটির পিছনে কী করা হচ্ছে, মাইএসকিউএল 5.5 ইঞ্জিন স্তরে?

উত্তর:


193

এটি সত্যিই একটি তথ্য বার্তা।

সম্ভবত, আপনি একটি অন নিখুত করছেন InnoDB সারণী (টেবিল InnoDB স্টোরেজ ইঞ্জিন বদলে ব্যবহার MyISAM স্টোরেজ ইঞ্জিন নেই)।

InnoDB মাইআইএসএএম যেভাবে অপ্টিমাইজ করে না সমর্থন করে। এটি অন্যরকম কিছু করে। এটি একটি খালি টেবিল তৈরি করে এবং বিদ্যমান সারণী থেকে সারিগুলির সমস্তগুলি অনুলিপি করে এবং প্রয়োজনীয়ভাবে পুরানো টেবিলটি মুছে ফেলে নতুন টেবিলটির নাম পরিবর্তন করে এবং তারপর পরিসংখ্যান সংগ্রহ করার জন্য একটি বিশ্লেষণ চালায়। এটি অপ্টিমাইজ করার জন্য ইনোডিবি সবচেয়ে নিকটেই পেতে পারে।

আপনি যে বার্তাটি পাচ্ছেন তা হ'ল মাইএসকিউএল সার্ভারটি ইনোডিবি স্টোরেজ ইঞ্জিন মাইএসকিউএল সার্ভারকে যা বলেছে তার পুনরাবৃত্তি করছে:

টেবিলটি অপ্টিমাইজ সমর্থন করে না ইনোডিবি স্টোরেজ ইঞ্জিন বলছে ...

"আমি (InnoDB স্টোরেজ ইঞ্জিন) আমার বন্ধু (মাইএসএএম স্টোরেজ ইঞ্জিন) মতো অপ্টিমাইজ অপারেশন করি না।"

InnoDB স্টোরেজ ইঞ্জিন বলছে "পরিবর্তে পুনরায় তৈরি করা + বিশ্লেষণ করা" ...

"আমি সিদ্ধান্ত নিয়েছি একটি ভিন্ন সেট অপারেশন করবো যা সমান ফলাফল অর্জন করবে।"


14
ঠিক আছে, আপনি দয়া করে আপনি যেভাবে করছেন তা ভাগ করে নিতে পারেন?
বিক্রান্ত মোর

আমি নিশ্চিত এটি কোথাও মাইএসকিউএল রেফারেন্স ম্যানুয়ালে রয়েছে; এটি প্রত্যাশিত আচরণ, এবং উদ্বিগ্ন হওয়ার মতো কিছুই নয়। (প্রক্রিয়াটি সমাপ্তির সময় টেবিলটি "লক করা" থাকবে এবং এটি অপ্রাপ্য হবে তা ব্যতীত, HUGH JASS টেবিলের জন্য কিছুটা সময় লাগতে পারে)) তথ্যসূত্র: https://dev.mysql.com/doc/refman/5.5/ en / optize-table.html "InnoDB বিবরণ" বিভাগটি দেখুন।
spencer7593

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

4
ডিবি ওয়ার্ল্ডে যে লোকেরা উদ্যোগ নিচ্ছে তাদের জন্য দুর্দান্ত ব্যাখ্যা। আপনাকে অনেক ধন্যবাদ
tachomi

4
সাবধান - আপনার ডিস্কের জায়গা কম থাকলে এটি ব্যবহার করবেন না কারণ এটি আপনার সার্ভারকে খুব বড় টেবিলটি পুনরায় তৈরি করার চেষ্টা চালিয়ে যেতে পারে।
ড্যানি স্ট্যাপল

22

OPTIMIZE TABLEঅফিসিয়াল সাপোর্ট আর্টিকেল অনুসারে ইনোডিবি ইঞ্জিনের সাথে সূক্ষ্মভাবে কাজ করে: http://dev.mysql.com/doc/refman/5.5/en/optimize-table.html

আপনি খেয়াল করবেন যে ইনোডিবি টেবিলগুলি অপ্টিমাইজ করবে টেবিলের কাঠামোটি পুনর্নির্মাণ করবে এবং সূচকের পরিসংখ্যান আপডেট করবে (এর মতো কিছু ALTER TABLE)।

মনে রাখবেন যে এই বার্তাটি কেবল একটি তথ্যমূলক উল্লেখ হতে পারে এবং খুব গুরুত্বপূর্ণ তথ্যটি আপনার অনুসন্ধানের স্থিতি: ঠিক আছে!

mysql> OPTIMIZE TABLE foo;
+----------+----------+----------+-------------------------------------------------------------------+
| Table    | Op       | Msg_type | Msg_text                                                          |
+----------+----------+----------+-------------------------------------------------------------------+
| test.foo | optimize | note     | Table does not support optimize, doing recreate + analyze instead |
| test.foo | optimize | status   | OK                                                                |
+----------+----------+----------+-------------------------------------------------------------------+

4
সত্যই নয়, মাইএসকিউএল ব্যর্থতার কারণ দেবে: অস্থায়ী ফাইল রাইটিং ব্যর্থতা, অপারেশন ব্যর্থ।

8

সেরা বিকল্প একই বৈশিষ্ট্য সহ নতুন টেবিল তৈরি করা হয়

CREATE TABLE <NEW.NAME.TABLE> LIKE <TABLE.CRASHED>;
INSERT INTO <NEW.NAME.TABLE> SELECT * FROM <TABLE.CRASHED>;

NEW.NAME.TABLE এবং TABLE.CRASH এর নাম পরিবর্তন করুন

RENAME TABLE <TABLE.CRASHED> TO <TABLE.CRASHED.BACKUP>;
RENAME TABLE <NEW.NAME.TABLE> TO <TABLE.CRASHED>;

ভাল কাজ করার পরে, মুছুন

DROP TABLE <TABLE.CRASHED.BACKUP>;

4
এই পদ্ধতিটি কি সূচি এবং ট্রিগার রাখে?
জোয়েল মারফি

4
হ্যা অবশ্যই. তাদের সবাই! আপনি এটি চেষ্টা করতে পারেন তারপরে আবার যাচাই করার জন্য phpMyAdmin ব্যবহার করতে পারেন
মার্চ'১৯-

4
এটি বিদেশী কী পুনরায় তৈরি করে না।
ড্যানবি

1

আরও ভাল বিকল্পটি হ'ল একটি নতুন টেবিল তৈরি করুন গন্তব্য সারণিতে সারিগুলি অনুলিপি করুন, প্রকৃত টেবিলটি ফেলে দিন এবং সদ্য নির্মিত টেবিলটির নতুন নামকরণ করুন। এই পদ্ধতিটি ছোট টেবিলগুলির জন্য ভাল,


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