একটি মাইএসকিউএল পয়েন্ট অফ ভিউ থেকে কঠোরভাবে, আমার কাছে কোনও মাইএসকিউএল ইনস্ট্যান্সের জন্য ডেটা / সূচীগুলির ক্যাচিং উন্নত করার বিষয়ে পরামর্শ রয়েছে।
মনে রাখবেন যে মাইএসকিউএলের জন্য দুটি বড় স্টোরেজ ইঞ্জিন রয়েছে
তাদের ক্যাশিংয়ের পদ্ধতি আলাদা। আপনার পছন্দের স্টোরেজ ইঞ্জিনটির জন্য আপনি কিছু করতে পারেন।
MyISAM
মাইআইএসএএম কেবল সূচী পৃষ্ঠাগুলি ক্যাশে করে। এটি কখনই ডেটা ক্যাশে করে না। আপনি মাইআইএসএএম টেবিলগুলির জন্য I / O উন্নত করতে দুটি জিনিস করতে পারেন।
মাইআইএসএএম উন্নতি # 1
যে কোনও মাইআইএসএএম টেবিলটিতে ভিচারার কলাম রয়েছে প্রাথমিক নকশাকে স্পর্শ না করেই অভ্যন্তরীণভাবে CHAR এ রূপান্তরিত হতে পারে। ধরা যাক আপনার কাছে mydb.mytable নামে একটি টেবিল রয়েছে এবং আপনি এর জন্য I / O উন্নত করতে চান, এটিতে নিম্নলিখিতটি সম্পাদন করুন:
ALTER TABLE mydb.mytable ROW_FORMAT=Fixed;
এই টেবিলের 60% -100% আকার বৃদ্ধি হবে কিন্তু হে আমি একটি 20-30% কর্মক্ষমতা বৃদ্ধি সমর্পণ করা হবে / অন্য কিছু পরিবর্তন না করে । আমি এর আগে ডিবিএ স্ট্যাক এক্সচেঞ্জ এ লিখেছিলাম:
মাইআইএসএএম উন্নতি # 2
আপনাকে মাইআইএসএএম কী ক্যাশে বাড়াতে হবে ( কী_বফার_সাইজ আকারে )। এই কোয়েরিটি চালান, দয়া করে:
SELECT CONCAT(ROUND(KBS/POWER(1024,
IF(PowerOf1024<0,0,IF(PowerOf1024>3,0,PowerOf1024)))+0.4999),
SUBSTR(' KMG',IF(PowerOf1024<0,0,
IF(PowerOf1024>3,0,PowerOf1024))+1,1))
recommended_key_buffer_size FROM
(SELECT LEAST(POWER(2,32),KBS1) KBS
FROM (SELECT SUM(index_length) KBS1
FROM information_schema.tables WHERE engine='MyISAM' AND
table_schema NOT IN ('information_schema','mysql','performance_schema')) AA ) A,
(SELECT 2 PowerOf1024) B;
এটি আপনাকে আপনার বর্তমান ডেটাসেটের উপর ভিত্তি করে আদর্শ কী_বফার_সাইজ দেখাবে।
InnoDB
InnoDB ডেটা এবং সূচী উভয়ই ক্যাশে করে। আপনি যদি আপনার সমস্ত ডেটা ইনোডিবিতে রূপান্তর করেন এবং বর্তমানে একটি সমস্ত ইনোডিবি ডাটাবেস থেকে ওয়ার্ডপ্রেস চালিয়ে যাচ্ছেন তবে আপনাকে আপনার ইনোডিবি বাফার পুল ( ইনোডাব_বফার_পুল_সাইজের আকার ) আকারের প্রয়োজন । এই কোয়েরিটি চালান, দয়া করে:
SELECT CONCAT(ROUND(KBS/POWER(1024,
IF(PowerOf1024<0,0,IF(PowerOf1024>3,0,PowerOf1024)))+0.49999),
SUBSTR(' KMG',IF(PowerOf1024<0,0,
IF(PowerOf1024>3,0,PowerOf1024))+1,1)) recommended_innodb_buffer_pool_size
FROM (SELECT SUM(data_length+index_length) KBS FROM information_schema.tables
WHERE engine='InnoDB') A,
(SELECT 2 PowerOf1024) B;
এটি আপনাকে আপনার বর্তমান ডেটাসেটের উপর ভিত্তি করে আদর্শ কী_বফার_সাইজ দেখাবে।
অভিক্ষেপ
আপনি যদি প্রজেক্ট করেন যে আপনি ডেটাসেটটি 20 গুণ বাড়বে, এই কোয়েরিটি 20 এর দ্বারা যা সুপারিশ করেছে তার চেয়ে একাধিক। যদি আপনি অনুমান করেন যে আপনার কাছে 20 গুণ বেশি ডেটা থাকবে তবে কী_বফার_সাইজটি 60MB তে /etc/my.cnf এ সেট করুন:
[mysqld]
key_buffer_size=60M
তারপরে মাইএসকিউএল পুনরায় চালু করুন। একই জিনিস InnoDB বাফার পুলে প্রয়োগ করা হবে।
যদি আপনার সমস্ত ডেটা ইনোডিবি হয়, আপনার স্টোন ওভারফ্লোতে পোস্ট করা আপনার ইনোডিবি অবকাঠামোর একটি সম্পূর্ণ ক্লিনআপ করা আপনার দরকার ।