মাইএসকিউএল InnoDB বাফার পুল উদাহরণগুলির অনুকূল নম্বর


13

সার্ভারের বৈশিষ্ট্য

  • মোট সিস্টেম র‌্যাম: 8 জিবি (এটিতে মাইএসকিউএল ব্যতীত মাইএসকিউএল + অন্যান্য স্টাফগুলি চলছে অর্থাৎ মাইএসকিউএলকে উত্সর্গীকৃত নয়)
  • সিপিইউ কোরগুলির সংখ্যা: 6
  • আমার কাছে প্রায় 2 জিবি পরিমাণ ডিবিতে ডেটা রয়েছে
  • আমার কাছে ইনোডিবি বাফার পুল সাইজ 4 জিবি সেট করা আছে

কোনটা ভাল:

  • ইনোডব বাফার পুলের ইনস্ট্যান্সস 1 সেট?
  • ইনোডব বাফার পুল ইনস্ট্যান্সগুলি 2 (প্রতিটিতে 2 জিবি) সেট?
  • ইনোডব বাফার পুল ইনস্ট্যান্সস 4 (প্রতিটিতে 1 জিবি) সেট?
  • ইনোডব বাফার পুল ইনস্টলস 8 এ সেট করা হয়েছে (ডিফল্ট সেটিংস)

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


এত বড় ইনোডিবি বাফার পুলের আকার রাখার সময় আপনি কোথায় "উদাহরণস্বরূপ ব্যবহারগুলি পেয়েছেন বা ওএস সোয়াপ ভোগ করেছেন"?
রিক জেমস

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

আমি এ পর্যন্ত সমস্ত উত্তরকে "হিপ থেকে গুলি" হিসাবে গণ্য করার পরে আমি কোনও উত্তরই সেট করতে পারি না। যদি কারও অবাক হয়, আমি 4 জি বাফার পুলের আকার এবং 2 টি দৃষ্টান্ত সহ গিয়েছিলাম এবং এটি ডেবিয়ান 8.1-তে খুব ভালভাবে কাজ করে মোট মেমরির 8 জি পিএইচপি-এফপিএম + এনজিন্সের সাথে প্রায় 60 টি ক্যারি / সেকেন্ডে প্রায় মাইএসকিএল চালিত হয় machine
অ্যাডারগার্ড

উত্তর:


7

আমি যখন মাইএসকিউএল 5.5 এ ফিরে যাই, আমি এই একই জিনিসটি সম্পর্কে ভাবব।

এই বছরগুলিতে আমি যা শিখেছি তা নিম্নলিখিতগুলি ছিল: যদি বাফার পুলটি ইনস্টল করা র‌্যামের অর্ধেকের চেয়ে বড় এবং ইনোডাব_বফার_পুল_সামগ্রী 1 (5.5 এর জন্য ডিফল্ট) হত তবে অদলবদলের হুমকি সবসময় আসন্ন ছিল।

আমি এটি নিয়ে আগে আলোচনা করেছি: বাফার পুলের উদাহরণগুলির আকার এবং সংখ্যা সম্পর্কে কি থাম্বের নিয়ম আছে? । সেই পোস্টে, আমি একজন ক্লায়েন্টের উদাহরণ উল্লেখ করেছি যার 162 গিগাবাইট বাফার পুল সহ সার্ভারে 192 গিগাবাইট র‌্যাম ছিল। যখন ইনোডাব_বফার_পুল_সামগ্রী 1 ছিল, তখন অদলবদল হয়েছিল। আমি যখন ইন্নাডব_বফার_পুল_সামগ্রীগুলিকে 2 এ সেট করি তখন বিষয়গুলি আরও ভাল হয়।

আপনার ক্ষেত্রে, বাফার পুলটি যেহেতু অর্ধেক, তাই 1 টির মান ঠিক হতে পারে। আমি এটা চান না। আমি এটি 2 সেট করা হবে।

যেহেতু মাইএসকিউএল 5.6 এর 8 টি ডিফল্ট রয়েছে, আপনার আর এটি নিয়ে ভাবার দরকার নেই।

আমি এটি বলব: আকুজিনস্কির উত্তরটির সর্বোচ্চ নীতি রয়েছে । আমার উত্তরটি কেবল অতীতের অভিজ্ঞতার ভিত্তিতে হিপ থেকে শুটিং করছে (ভাল এবং খারাপ)।


কোনভাবেই না! অদলবদল বরাদ্দ মেমরির পরিমাণের উপর নির্ভর করে, পুলের দৃষ্টান্তগুলিতে নয়।
রিক জেমস

ডিফল্টটি 8 হ'ল জেনে রাখা ভাল ... তবে এটি 4 টি কেটে বা 16 এ বৃদ্ধি করা হলে তফাত কী? কোন মেমরি / স্টোরেজ জরিমানা বা সুবিধা আছে? আমি এখানে আসার একমাত্র কারণ, মাইএসকিউটিউনার ইনোডাব_বুফার_পুল_ইন্টসগুলি (= 1) এর প্রস্তাব দেয় তবে আমি সর্বদা এর সুপারিশগুলিতে বিশ্বাস করি না। মঞ্জুর, আমার সমস্যা হচ্ছে না, কেবল কৌতূহলী।
পিজে ব্রুনেট 19

@ পিজে ব্রুননেট যদি ইনোডিবি বাফার পুলটি র্যামের অর্ধেকেরও কম হয়, তবে
ইনোডিবি

6

বাফার পুল মুটেক্স বিতর্ক এড়াতে বাফার পুলের উদাহরণগুলির সংখ্যা বাড়াতে হবে।

বাফার পুল আকারের 8 জিবি নিয়ে আমি সন্দেহ করি আপনি কখনই বাফার পুলটি মিউটেক্স যুক্তি দেখতে পাবেন।

আপডেট 0 :

আমি উত্তরে 8 গিগাবাইটের বাফার পুলটি উল্লেখ করেছি যখন মূল প্রশ্নের মধ্যে মোট স্মৃতি ছিল 8 জিবি। অবশ্যই, বাফার পুলটি অবশ্যই 8 গিগাবাইটের চেয়ে কম হওয়া উচিত। 4 জিবি শুনতে শুরু করার মতো শোনাচ্ছে তবে কোনও অদলবদল না ঘটে তা নিশ্চিত করুন।

আপডেট 1 :

// ইয়াসুফুমির স্লাইডগুলি (সাম্প্রতিক মাইএসকিউএল সংস্করণে আউটপুট কিছুটা আলাদা হতে পারে)

বাফার পুল মুটেক্সে কোনও বিতর্ক রয়েছে কিনা তা নির্ধারণ করার SHOW ENGINE INNODB STATUSজন্য শিখর সময় কয়েক ডজন নমুনা সংগ্রহ করুন ।

তারপরে শেল স্নিপেট ব্যবহার করে এটি একত্র করুন:

#!/bin/sh
cat $1.innodb | grep "Mutex at " | cut -d"," -f1 | sort | uniq -c > /tmp/tmp1.txt 
cat $1.innodb | grep "lock on " | cut -d"-"
-f2- | sort | uniq -c > /tmp/tmp2.txt
cat /tmp/tmp1.txt /tmp/tmp2.txt | sort -n > $1.contention rm /tmp/tmp1.txt /tmp/tmp2.txt

যা এই জাতীয় ফলাফল দেয়:

.....
4 lock on RW-latch at 0x7fb86b2c9138 created in file dict/dict0dict.c line 1356
6 lock on RW-latch at 0x7fb86b2c4138 created in file dict/dict0dict.c line 1356
12 lock on RW-latch at 0x7fb86b2d9538 created in file dict/dict0dict.c line 1356
20 lock on RW-latch at 0x7fb86b2db138 created in file dict/dict0dict.c line 1356
22 Mutex at 0x7fb86b28f0e0 created file btr/btr0sea.c line 139
30 lock on RW-latch at 0x7fb86b2ba938 created in file dict/dict0dict.c line 1356
36 lock on RW-latch at 0x7fb86b2bad38 created in file dict/dict0dict.c line 1356
71 Mutex at 0x7fb86b28ecb8 created file buf/buf0buf.c line 597
164 lock on RW-latch at 0x7fb86b28f0b8 created in file btr/btr0sea.c line 139

আপনি যদি দেখেন যে উচ্চ পরিমাণে বাফার পুল মুটেক্স অপেক্ষা করে, তবে একাধিক বাফার পুলের দৃষ্টান্ত বিবেচনা করার সময় এসেছে। ~ 48G এর চেয়ে কম বাফার পুলটিতে বিতর্ক হওয়ার সম্ভাবনা নেই।


1
কিন্তু না না র্যাম মাত্র 8 গিগাবাইট একটি 8G buffer_pool আছে!
রিক জেমস

আপনি কি উদাহরণস্বরূপ চিন্তা করতে শুরু করবেন কোন ডিবিএসে অর্থাৎ ইনোডাব বাফার পুল আকারে ? আমি আপনার জবাবটি ব্যাখ্যা করি যে এই তুলনামূলকভাবে ছোট স্তরে, একের বেশি হওয়ার কোনও কারণ নেই। সঠিক? আপনি কি এইরকম একটি উত্স পেয়েছেন? মাইএসকিউএল ডকুমেন্টেশনটি "মাল্টি গিগাবাইট" বলেছে যা - আমার কাছে - বিষয়গুলি প্রকাশ করার জন্য একটি অত্যন্ত ঝাপসা উপায়। আসলে 2 জিবি একাধিক তবে আমি মনে করি তারা এর থেকেও বড় ডেটাসেটটি উল্লেখ করেছে ...
অ্যাডারগার্ড

2

আপনার ওএসের যদি এমন থাকে তবে "অদলবদল" 1 এ সেট করুন। সমস্যাটি অত্যধিক আক্রমণাত্মক OOM হতে পারে।


0

আপনি একসাথে চালাতে চান এমন সর্বাধিক সংখ্যক মাইএসকিউএল থ্রেডের সাথে মেলে এই পরামর্শ দেওয়ার পরামর্শ দেব। আমি কোর সংখ্যা ব্যবহার করি।

আমিও সেট innodb_read_io_threadsএবং innodb_write_io_threadsএই সংখ্যা মেলে।

যদি innodb_buffer_pool_instancesখুব কম হয় তবে আপনার থ্রেডগুলি সেমফোরের অপেক্ষাতে আটকে যাওয়ার সম্ভাবনা রয়েছে। এটি সিস্টেমের ব্যস্ত থাকা সত্ত্বেও সিপিইউ এবং আই / ও উভয়ই অলস হয়ে উঠেছে - এবং আপনার প্রয়োগের বিলম্বটি ছাদের মধ্য দিয়ে যাবে।

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