InnoDB অবকাঠামোগত ব্যস্ততম ফাইলটি মনে রাখবেন / var / lib / mysql / ibdata1
এই ফাইলটি সাধারণত বিভিন্ন শ্রেণীর তথ্য রাখে (যখন ইনোডোবি_ফাইলে_পিঠকটি 0 হয়)
- সারণী ডেটা
- সারণী সূচি
- এমভিসিসি (মাল্টিভিশনিং কনকুরেন্সি নিয়ন্ত্রণ) ডেটা
- রোলব্যাকস সেগমেন্টস
- টেবিলস্পেস পূর্বাবস্থায় ফেরান
- টেবিল মেটাডেটা
- চিত্রের উপস্থাপনা দেখুন
অনেকগুলি ডিস্কস্পেস পরিচালনা এবং দক্ষতার জন্য আরও একাধিক ইবদাটা ফাইল তৈরি করে। এটি সাহায্য করে না।
দুর্ভাগ্যক্রমে, ইবদাটা 1 তে সঞ্চিত ইনোডিবি টেবিলের বিরুদ্ধে টেবিলটি অপ্টিমাইজ করুন দুটি কাজ করে:
- টেবিলের ডেটা এবং সূচিগুলিকে আইবিডাটা 1-এর সাথে সামঞ্জস্যপূর্ণ করে তোলে
- এটি আইবডাটা 1টিকে বাড়তে দেয় কারণ একটানা ডেটা আইবডাটা 1-এ যুক্ত হয়
আপনি ইবদাটা 1 থেকে সারণী ডেটা এবং সারণী সূচীগুলি পৃথক করতে পারেন এবং ইনোডাব_ফিল_পিটার_সামগ্রী ব্যবহার করে স্বতন্ত্রভাবে পরিচালনা করতে পারেন । একবার এবং সকলের জন্য ইবদাতা 1 সঙ্কুচিত করতে আপনাকে নিম্নলিখিতগুলি অবশ্যই করতে হবে
পদক্ষেপ 01) মাইএসকিউএল সমস্ত ডাটাবেস একটি এসকিউএল পাঠ্য ফাইলে ফেলা (এটি এসকিউএলডাটা.এসকিউএল কল করুন) ( আরও বিশদ এখানে )
ধাপ 02) (ছাড়া সমস্ত ডাটাবেস ছাড়ুন mysql
, performance_schema
এবং information_schema
)
পদক্ষেপ 03) শাটডাউন মাইএসকিএল
পদক্ষেপ 04) /etc/my.cnf এ নিম্নলিখিত লাইনগুলি যুক্ত করুন
[mysqld]
innodb_file_per_table
innodb_flush_method=O_DIRECT
innodb_log_file_size=1G
innodb_buffer_pool_size=4G
সিডিনোট: ইনোডাব_ফুফার_পুল_সাইজের জন্য আপনার সেট যাই হোক না কেন, নিশ্চিত করুন যে ইনোডাব_লগ_ফায়াল_সাইজ ইনোডাব_বফার_পুল_সাইজের 25%।
পদক্ষেপ 05) ibdata1, ib_logfile0 এবং ib_logfile1 মুছুন
এই মুহুর্তে, কেবলমাত্র / var / lib / mysql তে মাইএসকিএল স্কিমা থাকা উচিত
পদক্ষেপ 06) মাইএসকিএল পুনরায় চালু করুন
এটি আইবিডেটা 1 10 এমবিতে, ইব_লগফাইল 0 এবং আইবি_লগফাইল 1 প্রতিটি 1 জি তে পুনরায় তৈরি করবে
পদক্ষেপ 07) এসকিউএলডেটা.এসকিউএলকে মাইএসকিএলে পুনরায় লোড করুন
আইবডাটা 1 বৃদ্ধি পাবে তবে কেবল টেবিল মেটাডেটা থাকে
প্রতিটি InnoDB টেবিল ইবদাটা 1 এর বাইরে থাকবে
ধরুন আপনার কাছে একটি আইএনডিবিবি টেবিল আছে যার নাম mydb.mytable। আপনি যদি / var / lib / mysql / mydb এ যান, আপনি টেবিলের প্রতিনিধিত্বকারী দুটি ফাইল দেখতে পাবেন
- mytable.frm (স্টোরেজ ইঞ্জিন শিরোনাম)
- mytable.ibd (টেবিল ডেটা এবং mydb.mytable জন্য সারণী সূচীর হোম)
আইবডাটা 1-এ আর কখনও ইনোডিবি ডেটা এবং সূচি থাকবে না।
/Etc/my.cnf- এ ইনোডোবি_ফায়াল_পার_সারণযোগ্য বিকল্পের সাহায্যে আপনি চালাতে পারবেন OPTIMIZE TABLE mydb.mytable
এবং ফাইলটি /var/lib/mysql/mydb/mytable.ibd
সঙ্কুচিত হবে।
আমি আমার কেরিয়ারে মাইএসকিউএল ডিবিএ হিসাবে অনেকবার এটি করেছি
প্রকৃতপক্ষে, আমি প্রথমবার এটি করেছি, আমি একটি 50 জিবি ইবদাতা 1 ফাইলটি 500 এমবিতে ভেঙে ফেলেছি।
একবার চেষ্টা করে দেখো. আপনার যদি এই বিষয়ে আরও প্রশ্ন থাকে তবে আমাকে ইমেল করুন। আমাকে বিশ্বাস কর. এটি স্বল্প মেয়াদে এবং দীর্ঘ মেয়াদে কাজ করবে। !!!
আপনি যদি মাইআইএসএএম এবং ইনোডিবিতে প্রকৃত ডেটা সঞ্চয় করে রাখতে চান তবে দয়া করে এই কোয়েরিটি চালান:
SELECT IFNULL(B.engine,'Total') "Storage Engine",
CONCAT(LPAD(REPLACE(FORMAT(B.DSize/POWER(1024,pw),3),',',''),17,' '),' ',
SUBSTR(' KMGTP',pw+1,1),'B') "Data Size", CONCAT(LPAD(REPLACE(
FORMAT(B.ISize/POWER(1024,pw),3),',',''),17,' '),' ',
SUBSTR(' KMGTP',pw+1,1),'B') "Index Size", CONCAT(LPAD(REPLACE(
FORMAT(B.TSize/POWER(1024,pw),3),',',''),17,' '),' ',
SUBSTR(' KMGTP',pw+1,1),'B') "Table Size"
FROM (SELECT engine,SUM(data_length) DSize,SUM(index_length) ISize,
SUM(data_length+index_length) TSize FROM information_schema.tables
WHERE table_schema NOT IN ('mysql','information_schema','performance_schema')
AND engine IS NOT NULL GROUP BY engine WITH ROLLUP) B,
(SELECT 3 pw) A ORDER BY TSize;