আপনার যদি মূলত মাইআইএসএএম টেবিল থাকে তবে আপনার বাল্ক সন্নিবেশ বাফারটি বাড়ানো উচিত । এখানে মাইএসকিউএল ডকুমেন্টেশন বাল্ক_ইন্টার_বফলার_সাইজ সেট করার বিষয়ে যা বলেছে :
মাইআইএসএএম সংক্ষিপ্তসারের জন্য বাল্ক সন্নিবেশগুলি দ্রুত তৈরি করতে একটি বিশেষ বৃক্ষের মতো ক্যাশে ব্যবহার করে ... অমানবিকতায় ডেটা যুক্ত করার সময় নির্বাচন করুন, নির্বাচন করুন ... ভ্যালু (...), (...), ... এবং লোড ডেটা ইনফিল করুন টেবিল। এই পরিবর্তনশীলটি প্রতি থ্রেডে ক্যাশে গাছের আকার সীমাবদ্ধ করে। এটি 0 তে সেট করা এই অপ্টিমাইজেশনটিকে অক্ষম করে। ডিফল্ট মান 8MB।
আপনার দুটি জিনিস করতে হবে
1) এটি /etc/my.cnf এ যুক্ত করুন
[mysqld]
bulk_insert_buffer_size=512M
2) এর জন্য বিশ্ব মান নির্ধারণ করুন
SET GLOBAL bulk_insert_buffer_size = 1024 * 1024 * 512;
যদি আপনার কাছে বিশ্বব্যাপী বাল্ক_সাইন্ট_বাফলার_সাইজ সেট করার অধিকার না থাকে, তবে এটি করুন
service mysql restart
অবশ্যই, এটি InnoDB এর জন্য নয়।
অন্য একটি কোণ থেকে, সারণীগুলি InnoDB বা মাইআইএসএএম কিনা, সূচীগুলি যদি টেবিলের চেয়ে বড় হয় তবে আপনার অনেকগুলি সূচক থাকতে পারে। আমি সাধারণত অনুমান করি যে মাইএসএএমএসএলপ্ল্যাম্প তৈরি করতে যতক্ষণ সময় লাগবে ততক্ষণে মাইআইএসএএম মাইএসকিএলডাম্পের পুনরায় লোড হওয়া উচিত। আমি আরও অনুমান করেছি যে মাইএসকিএলডাম্প তৈরি করতে যতক্ষণ ইনোএনডিবি মাইএসকিলডাম্প পুনরায় লোড করা উচিত should
যদি আপনি কোনও মাইএসকিলডাম্প পুনরায় লোড করার জন্য 4: 1 অনুপাত অতিক্রম করে থাকেন তবে আপনার অবশ্যই দুটি সমস্যার একটি রয়েছে:
- অনেকগুলি সূচী
- বৃহত্তর কলামগুলির কারণে সূচকগুলি খুব বড় large
আপনি এটি দিয়ে স্টোরেজ ইঞ্জিন দ্বারা আপনার ডেটার আকার মাপতে পারবেন:
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;
সূচীগুলি ডেটার মতো প্রায় বড় বা আরও বড় কিনা তা দেখুন
আপনি বাইনারি লগিংকে এই জাতীয়করণ নিষ্ক্রিয় করতেও বিবেচনা করতে পারেন:
echo "SET SQL_LOG_BIN=0;" > footable.sql
mysqldump --databases foo >> footable.sql
স্ক্রিপ্টটি পুনরায় লোড করার আগে