ইনোডাব_বফার_পুল কী সেট করবেন এবং কেন ..?


20

আমার কাছে 170 গিগাবাইট InnoDBসূচক এবং ডেটা রয়েছে।

আরও ভাল পারফরম্যান্সের জন্য আমাকে ইনোডাব_বফার_পুল আকারটি সমন্বয় করতে হবে In একটি ইনোডিবি টেবিলের সর্বোচ্চ সারণির আকার (সূচক + ডেটা) 28 জিবি।

সুতরাং ইনোডাব_বফার_পুলের সর্বোত্তম আকারটি কী হওয়া উচিত।

হালনাগাদ

আমরা আমাদের এই স্থানীয় ডাটাবেসটিকে ই 2 তে স্থানান্তরিত করতে যাচ্ছি তাই ইনোডাবের বর্তমান পরিসংখ্যান অনুসারে র‌্যামটি সেট করব তাই আমার বাফার পুলের আকার প্রয়োজন যাতে আমরা সেখানে র‌্যাম উপলব্ধ রাখতে পারি।

প্রতি টেবিল ফাইল সক্ষম করা আছে।

আমি লিনাক্স মেশিন ব্যবহার করছি।


অন্যান্য প্রক্রিয়া দ্বারা মেশিনে উপলব্ধ র‌্যাম কী ব্যবহার করা হচ্ছে না? আপনি কি উইন্ডোজ, লিনাক্স বা অন্য কিছু ব্যবহার করছেন? আপনি মাইএসকিউএল এর কোন সংস্করণ ব্যবহার করছেন? কেন টেবিলের আকারটি 28 গিগাবাইটের মধ্যে সীমাবদ্ধ?
ক্রেগ এফ্রেইন

টেবিলের আকারটি সীমাবদ্ধ নয় ... আমি এক পয়েন্ট পর্যন্ত টেবিলের আকার দিয়েছি future ভবিষ্যতে serোকানো হবে বলে এটি বাড়বে ..
আব্দুল মানাফ

উত্তর:


25

আপনার কাছে থাকা বৃহত্তম সারণীটি মোট ডেটা থেকে 16.47% (28/170) করে up এমনকি যদি টেবিলটি উচ্চ লিখিত এবং উচ্চ পঠিত ছিল, তবে টেবিলের সমস্ত 28 জি কোনও নির্দিষ্ট মুহুর্তে বাফার পুলে লোড হয় না। আপনার যা গণনা করা দরকার তা হ'ল বর্তমান ডিবি সার্ভারে যে কোনও মুহুর্তে ইনোডিবি বাফার পুলটি কতটা লোড হয়

বর্তমান ডিবি সার্ভারের ইনোডিবি বাফার পুলে ডেটাসেটটি বর্তমানে লোড হওয়া নতুন ডিবি সার্ভারের জন্য ইনোডাব_ফুফার_পুল_সাইজ নির্ধারণের আরও একটি দানাদার উপায়।

আপনার বর্তমান মাইএসকিউএল ইনস্ট্যান্সে নিম্নলিখিতটি চালান (আপনি যে সার্ভার থেকে স্থানান্তর করছেন)

SHOW GLOBAL STATUS LIKE 'Innodb_buffer_pool_pages_data';  -- IBPDataPages 
SHOW GLOBAL STATUS LIKE 'Innodb_buffer_pool_pages_total'; -- IBPTotalPages
SHOW GLOBAL STATUS LIKE 'Innodb_page_size'; -- IPS

সূত্রটি চালান IBPPctFull = IBPDataPages * 100.0 / IBPTotalPages

SET @IBPDataPages = (SELECT VARIABLE_VALUE FROM information_schema.global_status WHERE VARIABLE_NAME = 'Innodb_buffer_pool_pages_data'); -- SELECT @IBPDataPages;
SET @IBPTotalPages = (SELECT VARIABLE_VALUE FROM information_schema.global_status WHERE VARIABLE_NAME = 'Innodb_buffer_pool_pages_total'); -- SELECT @IBPTotalPages;
SET @IBPPctFull = CAST(@IBPDataPages * 100.0 / @IBPTotalPages AS DECIMAL(5,2));
SELECT @IBPPctFull;

আইবিপিপ্যাক্টফুল যদি 95% বা তার বেশি হয় তবে আপনার ডিএন সার্ভারের র‌্যামের 75% ইনোডাব_বফার_পুল_সাইজ সেট করা উচিত।

IBPPctFull কম 95% হয়, তাহলে এই সূত্র সঞ্চালন করুন: IBPSize = IPS X IBPDataPages / (1024*1024*1024) X 1.05

SET @IBPSize = (SELECT VARIABLE_VALUE FROM information_schema.global_status WHERE VARIABLE_NAME = 'Innodb_page_size'); -- SELECT @IBPSize;
SET @IBPDataPages = (SELECT VARIABLE_VALUE FROM information_schema.global_status WHERE VARIABLE_NAME = 'Innodb_buffer_pool_pages_data'); -- SELECT @IBPDataPages;
SET @IBPSize = concat(ROUND(@IBPSize * @IBPDataPages / (1024*1024*1024) * 1.05, 2), ' GB' );
SELECT @IBPSize;

আইবিপিএসাইজের জন্য নম্বর (জিবিতে) এমন নম্বরটি যা আপনার প্রকৃত কার্যকারী ডেটাসেটকে আরও ঘনিষ্ঠভাবে ফিট করে।

এখন, যদি আইবিপিএসাইজ এখনও বৃহত্তম অ্যামাজন ইসি 2 র‌্যাম কনফিগারেশনের জন্য খুব বড় হয়, তবে আমাজন ইসি 2 ডিবি সার্ভারের জন্য 75% র‌্যাম ব্যবহার করুন।


এটি সত্যিই দুর্দান্ত তথ্য..আর আরও জানতে হবে যে, মাইএসকিউএল সার্ভার কীভাবে ডেফারেশন দিয়ে গেছে বাফার পুলের ডেটা এবং সূচীগুলি লোড করে এবং পেয়েছে যে এটি এলআরইউ ব্যবহার করে তবে এটি কীভাবে মেমোরিতে তাদের লোড করে যদি আমার কাছে 2 জিবি থাকে বাফার পুল তবে টেবিলের আকার যা প্রশ্নের সাথে অনুরোধ করা হয়েছে তার চেয়ে অনেক বেশি .. ??
আব্দুল মানাফ

ক্যোয়ারীটি পূরণের জন্য প্রয়োজনীয় ডেটা এবং সূচী পৃষ্ঠাগুলি পুরো টেবিলটিতে নয়, বাফার পুলে লোড করা হবে। পুরানো ডেটা এবং সূচী পৃষ্ঠাগুলি dev.mysql.com/doc/refman/5.5/en/innodb-buffer-pool.html
রোল্যান্ডোমাইএসকিউএলডিবিএ

আবদুল, আপনার উচিত রোল্যান্ডোর জবাব, যা আমার প্রশ্নের চেয়ে আপনার প্রশ্নের উত্তর দেয় with আমি আমার নিজের উত্তরটি আবার লিখতে যাচ্ছি কারণ আমাকে আরও পরিষ্কার করা দরকার।
ক্রেগ ইফ্রেইন

13

নীচে রোল্যান্ডোর উত্তরের পরিপূরক তথ্য হিসাবে আমি এই উত্তরটি সরবরাহ করছি।

সার্ভার উত্পাদনের আগে

সর্বাধিক মাইএসকিউএল দ্বারা ব্যবহৃত সবচেয়ে বড় টেবিলের উপর ভিত্তি করে ইনোডাব_বফার_পুল_সাইজ গণনা করুন। ডাটাবেসে তাদের আকারের ভিত্তিতে বৃহত্তম সারণীগুলি সনাক্ত করতে আপনি এই স্ক্রিপ্টটি ব্যবহার করতে পারেন:

select table_schema, table_name, round(data_length/1024/1024,2) as size_mb 
from information_schema.tables where table_schema like 'my_database' 
order by size_mb desc;


+--------------+-------------------------+---------+
| table_schema | table_name              | size_mb |
+--------------+-------------------------+---------+
| heavybidder     | user                 |   522.55|
| heavybidder     | bid                  |   121.52|
| heavybidder     | item_for_sale        |    10.52|
| heavybidder     | account_user         |    5.02 |
| heavybidder     | txn_log              |    4.02 |
| heavybidder     | category             |    0.02 |
+--------------+-------------------------+---------+

এখন আমরা যে টেবিলগুলি আমাদের ডাটাবেসে সবচেয়ে বড় তা জানি, কোনটি সর্বাধিক ঘন ঘন ব্যবহৃত হয় তা আমাদের নির্ধারণ করতে হবে। এটি করতে, আমি কোন টেবিলটি সর্বাধিক ব্যবহার করা হচ্ছে তা দেখার জন্য জেট প্রোফাইলার (জেপি) এর মতো একটি প্রোফাইলিং প্রোগ্রাম ব্যবহার করব। সবচেয়ে বেশি ঘন ঘন কোন টেবিলে অ্যাক্সেস করা হচ্ছে তা জে পি আপনাকে দেখায়। এখানে জেপিতে সেই বিভাগের একটি স্ক্রিনশট রয়েছে

এখানে চিত্র বর্ণনা লিখুন

সুতরাং এটি মনে রেখে, আমি এখন জানি যে ব্যবহারকারী এবং বিড টেবিলগুলি প্রায় 640MB ডিস্ক স্পেস নেয়, তারা জেপি অনুসারে খুব ঘন ঘন ব্যবহৃত হয় এবং যার অর্থ মাইএসকিউএল তাদের সূচী এবং ডেটা রোল্যান্ডো হিসাবে সংরক্ষণ করতে চলেছে নীচে তার মন্তব্যে উল্লেখ করুন।

আমার বৃহত্তম এবং সর্বাধিক ঘন ঘন ব্যবহৃত টেবিলগুলির জন্য ডেটা সঞ্চয় করার জন্য মাইএসকিউএলের পর্যাপ্ত মেমরি ছিল তা নিশ্চিত করার জন্য, আমি তখন 640 এমবিতে ইনোডাব_বফার_পুল_সাইজটি সংজ্ঞায়িত করব।

কিছু অতিরিক্ত বিবেচনা রয়েছে, তবে সেগুলি ইনডোড_বফার_পুল_সাইজে প্রয়োগ হয় না।

এটি কি 32 বিট বা 64 বিট সিস্টেম? 32 বিট সিস্টেমে আপনি PAE সক্রিয় না করলে আপনি 4GB এর মধ্যে সীমাবদ্ধ। উইন্ডোজে, এর অর্থ উইন্ডোজ এন্টারপ্রাইজ বা ডেটাসেন্টার সংস্করণগুলি চালানো।

আপনার সিস্টেমে চলমান অন্যান্য প্রক্রিয়াগুলির কতটুকু স্মৃতি দরকার? ডেডিকেটেড মাইএসকিউএল সার্ভারে, আমি ওএসের জন্য 5% থেকে 10% এর মধ্যে চলে যাব। উইন্ডোজে আপনি মেমরির ব্যবহার বিশ্লেষণ করতে প্রক্রিয়া এক্সপ্লোরার ব্যবহার করতে পারেন। লিনাক্সে আপনার সিস্টেস্টাট, ফ্রি, এইচটোপ, শীর্ষ এবং ভিএমস্ট্যাট রয়েছে।

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

সার্ভার পরে উত্পাদন হয়

ইনোডাবের বর্তমান হিট অনুপাত কত?

1 - (ইনোডাব_বফার_পুল_প্রেড / ইনানোডব_বাফলার_পুল_প্রেম_প্রয়োজনসমূহ)।

কী ক্যাশে হিট অনুপাত

1 - (কী_প্রাণ / কী_প্রেম_আবেদনগুলি)

আমি সাধারণত অনুপাতটি যতটা সম্ভব 100% এর কাছাকাছি পাওয়ার চেষ্টা করি।

আপনার টেবিলগুলি বাফার পুলে কতটা ফিট করে

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

http://www.mysqlperformanceblog.com/2010/12/09/how-well-does-your-table-fits-in-innodb-buffer-pool/

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