INNODB বাফার পুলের পরিসংখ্যানকে উপলব্ধি করা


20

এই পৃষ্ঠাটি মাইএসকিএল ডকুমেন্টেশনে পড়ার পরে , আমরা আমাদের বর্তমান ইনোডিবি ব্যবহার অনুধাবন করার চেষ্টা করেছি। বর্তমানে, আমরা বাফার পুলের জন্য 6 গিগাবাইট র‍্যাম বরাদ্দ করি। আমাদের ডাটাবেস আকার প্রায় একই। এখানে থেকে আউটপুট show engine innodb status\G(আমরা v5.5 চালিয়ে যাচ্ছি)

----------------------
BUFFER POOL AND MEMORY
----------------------
Total memory allocated 6593445888; in additional pool allocated 0
Dictionary memory allocated 1758417
Buffer pool size   393215
Free buffers       853
Database pages     360515
Old database pages 133060
Modified db pages  300
Pending reads 0
Pending writes: LRU 0, flush list 0, single page 0
Pages made young 7365790, not young 23099457
0.00 youngs/s, 0.00 non-youngs/s
Pages read 1094342, created 185628, written 543182148
0.00 reads/s, 0.00 creates/s, 37.32 writes/s
Buffer pool hit rate 1000 / 1000, young-making rate 0 / 1000 not 0 / 1000
Pages read ahead 0.00/s, evicted without access 0.00/s, Random read ahead 0.00/s
LRU len: 360515, unzip_LRU len: 0
I/O sum[2571]:cur[0], unzip sum[0]:cur[0]

আমি জানতে চেয়েছিলাম যে আমরা বাফার ক্যাশেটি কতটা ভালভাবে ব্যবহার করছি। আউটপুটটিতে প্রাথমিকভাবে ঝাঁকুনির পরে, এটি উপস্থিত হয়েছিল যে আমরা প্রকৃতপক্ষে এটি ব্যবহার করছি, এর ভিত্তিতে Pages made youngএবং এর not youngমধ্যে সংখ্যা রয়েছে এবং Buffer pool hit rate is 1000 / 10000(যা আমি ওয়েবে অন্য কোথাও দেখেছি যে এর অর্থ এটি বেশ ভারীভাবে ব্যবহৃত হচ্ছে True সত্য?)

লুপের মাধ্যমে আমাকে কী ছুঁড়েছে তা হল কেন young-making rateএবং notউভয়ই 0/1000 এ young/sএবং non-young/sঅ্যাক্সেসগুলি উভয়ই 0 তে থাকে Those এগুলি সমস্তই ইঙ্গিত করে যে এটি আদৌ ব্যবহৃত হচ্ছে না, তাই না?

কেউ কি এটি বোঝাতে সহায়তা করতে পারে?

উত্তর:


18
 Buffer pool hit rate is 1000 / 1000

আপনি যে পরিস্থিতিতে রয়েছেন তার মধ্যে এটিই কেবলমাত্র অর্থবহ মান and এবং সেই পরিস্থিতিটি হ'ল আপনি নিখুঁত 100% হিট রেট সহ একটি বাফার পুল পাওয়ার জন্য যথেষ্ট ভাগ্যবান। এটির বাকী অংশগুলি অতিরিক্ত-বিশ্লেষণ করবেন না, কারণ সার্ভার ওএসের স্মৃতিশক্তি কম না থাকলে, অদলবদল না করে আপনার পরিবর্তন করার দরকার নেই।

বাফার পুলের উপর শূন্য চাপ আছে এমন ক্ষেত্রে যুবক / যুবতী মানগুলি আকর্ষণীয় নয়। ইনোডিবি এটি ব্যবহার করছে, এটি ছাড়া কিছুই করে না। যদি পুলটি খুব ছোট হয়, পৃষ্ঠাগুলি উচ্ছেদ হয়ে যায় এবং নতুন পৃষ্ঠাগুলি পড়তে পারা যায় এবং অন্যান্য পরিসংখ্যানগুলি আপনাকে এটি বুঝতে সহায়তা করে ... তবে এটি এমন সমস্যা যা আপনার মনে হয় না।

পুলটিতে বিনামূল্যে "অব্যবহৃত" স্থানটি কখনই উপেক্ষিত হবে না বা InnoDB দ্বারা নিষ্ক্রিয় থাকতে হবে না, যদি এটি কোনও কারণেই প্রয়োজন হয়, সুতরাং এটির নিখরচায় অর্থ এই যে আপনার কাজের আকার হিসাবে প্রসারিত হওয়ার জন্য আপনার কিছু শ্বাসকষ্ট রয়েছে that ডেটাসেট বৃদ্ধি পায়।

এটাই এর অর্থ, যদি না আপনি অবশ্যই সার্ভারটি পুনরায় চালু করেছিলেন, তবে এটি অসম্পূর্ণ .. পরিসংখ্যানগুলি পুরো গল্পটি বলার আগে সার্ভারকে "স্বাভাবিক" ব্যবহারের পুরো সময়কালে (সম্পূর্ণ ব্যাকআপ সহ) চালানো দরকার needs ... তা এক ঘন্টা, এক দিন, সপ্তাহ, মাস, বা বছর, আপনার আবেদনের উপর নির্ভর করে।


28

The Buffer pool size 393215 এটি পৃষ্ঠাগুলিতে বাইট নয়।

জিবিতে বাফার পুলের আকারটি দেখতে এটি চালান:

SELECT FORMAT(BufferPoolPages*PageSize/POWER(1024,3),2) BufferPoolDataGB FROM
(SELECT variable_value BufferPoolPages FROM information_schema.global_status
WHERE variable_name = 'Innodb_buffer_pool_pages_total') A,
(SELECT variable_value PageSize FROM information_schema.global_status
WHERE variable_name = 'Innodb_page_size') B;

Database pages 360515 এটি বাফার পুলের ভিতরে ডেটা সহ পৃষ্ঠাগুলির সংখ্যা

জিবিতে বাফার পুল আকারের ডেটা পরিমাণ দেখতে এটি চালান:

SELECT FORMAT(BufferPoolPages*PageSize/POWER(1024,3),2) BufferPoolDataGB FROM
(SELECT variable_value BufferPoolPages FROM information_schema.global_status
WHERE variable_name = 'Innodb_buffer_pool_pages_data') A,
(SELECT variable_value PageSize FROM information_schema.global_status
WHERE variable_name = 'Innodb_page_size') B;

ব্যবহৃত বাফার পুলের শতাংশ দেখতে, এটি চালান:

SELECT CONCAT(FORMAT(DataPages*100.0/TotalPages,2),' %') BufferPoolDataPercentage FROM
(SELECT variable_value DataPages FROM information_schema.global_status
WHERE variable_name = 'Innodb_buffer_pool_pages_data') A,
(SELECT variable_value TotalPages FROM information_schema.global_status
WHERE variable_name = 'Innodb_buffer_pool_pages_total') B;

Modified db pages 300এটি বাফার পুলের পৃষ্ঠাগুলির সংখ্যা যা ডাটাবেসে ফিরে লিখতে হবে। এগুলিকে নোংরা পৃষ্ঠা হিসাবেও উল্লেখ করা হয়।

নোংরা পৃষ্ঠাগুলি দ্বারা নেওয়া স্থান দেখার জন্য এটি চালান:

SELECT FORMAT(DirtyPages*PageSize/POWER(1024,3),2) BufferPoolDirtyGB FROM
(SELECT variable_value DirtyPages FROM information_schema.global_status
WHERE variable_name = 'Innodb_buffer_pool_pages_dirty') A,
(SELECT variable_value PageSize FROM information_schema.global_status
WHERE variable_name = 'Innodb_page_size') B;

নোংরা পৃষ্ঠাগুলির শতাংশ দেখতে, এটি চালান:

SELECT CONCAT(FORMAT(DirtyPages*100.0/TotalPages,2),' %') BufferPoolDirtyPercentage FROM
(SELECT variable_value DirtyPages FROM information_schema.global_status
WHERE variable_name = 'Innodb_buffer_pool_pages_dirty') A,
(SELECT variable_value TotalPages FROM information_schema.global_status
WHERE variable_name = 'Innodb_buffer_pool_pages_total') B;

ডিসপ্লেতে অন্যান্য জিনিস হিসাবে, এটি চালান:

SHOW GLOBAL STATUS LIKE 'Innodb_buffer_pool%';

আপনি বাফার পুলের জন্য সমস্ত স্থিতি ভেরিয়েবলগুলি দেখতে পাবেন। আপনার যা যা পরীক্ষা করা দরকার তার বিরুদ্ধে আপনি একই প্রশ্নগুলি প্রয়োগ করতে পারেন।


ধন্যবাদ! সুতরাং এ থেকে, আমি সংগ্রহ করি যে আমাদের বাফার ক্যাশেটি সত্যই ব্যবহৃত হচ্ছে, তবে আমি যা জানতে চাই তা যদি আমরা কার্যকরভাবে এটি ব্যবহার করি। আমি যদি তরুণ এবং পুরানো পৃষ্ঠাগুলির ধারণাটি বুঝতে পারি তবে আমার ধারণাটি হ'ল যে বাফার ক্যাশে সম্পূর্ণরূপে ব্যবহৃত হচ্ছে এটির একটি ভাল সূচকটি তরুণ পৃষ্ঠাগুলিতে তরুণ এবং অ্যাক্সেসগুলি তৈরি করা সংখ্যার মধ্যে সঠিক হবে? আমরা প্রতি 3 ঘন্টা ব্যাকআপগুলি করতে মাইএসকিএলডাম্প ব্যবহার করি, যা এটি পূর্ণ কেন তা ব্যাখ্যা করবে। তবে young-making rate 0 / 1000এবং এর সাথে 0.00 youngs/sএটি আমাদের জানায় আমরা সত্যই এটি ব্যবহার করছি না। আমি কি এই ঠিক পড়ছি?
সাফাদো

2
0/1000-এর যুব তৈরির হার আপনাকে বলছে যে আপনি যে প্রশ্নগুলি চালাচ্ছেন তার ডেটা পৃষ্ঠাগুলি কেবল ক্যাশে নয়, এগুলি তরুণ ক্যাশে-এর আকারের ছোট (3/8) আকারে ফিট করে। এটি হ'ল, অনুসন্ধানগুলি পৃষ্ঠাগুলির কিছুটা বড়-তরুণ নয় এমন ক্যাশে বয়সের জন্য পর্যাপ্ত ডেটা ব্যবহার করছে না।
টমাস জোন্স-লো

বাকি ইনডোড_বফার_পুলের স্থিতি ভেরিয়েবল সম্পর্কে একটি সংক্ষিপ্ত ব্যাখ্যা খুব কার্যকর হবে। আপনি দয়া করে এটি আপনার উত্তরে যুক্ত করতে পারেন
বিদ্যুৎধর

5

আমি এই মূল্যায়ণের সাথে একমত নই যে "আপনি সঠিক 100% হিট রেট সহ একটি বাফার পুল পাওয়ার পক্ষে যথেষ্ট ভাগ্যবান"

আউটপুটটির শীর্ষে (যা কাটা কাটা) এটি একটি লাইনের মতো:

Per second averages calculated from the last 16 seconds

এটি আমাকে বলে যে শেষ ১ 16 সেকেন্ডে কোনও পাঠ হয়নি , যার ফলে (কৃত্রিমভাবে) আপনাকে নিখুঁত '1000/1000' স্কোর দেয়।

0.00 reads/s, 0.00 creates/s, 37.32 writes/s
Buffer pool hit rate 1000 / 1000, young-making rate 0 / 1000 not 0 / 1000

ইতিমধ্যে কিছু লেখক ছিল। এগুলি সম্ভবত 'নোংরা' পৃষ্ঠাগুলি ফ্লাশ করার জন্য বা 'চেঞ্জ বাফার' থেকে সূচকগুলি পরিষ্কার করার জন্য পিছিয়ে দেওয়া লেখাগুলি ছিল।

সম্ভবত শেষ / 16 সেকেন্ডে তরুণ / গরম অঞ্চলে কোনও কার্যকলাপ ছিল না।


ঠিক আছে, আমরা গড় 6k-10k এর মধ্যে এক সেকেন্ড নির্বাচন করি এবং একই সাথে আমি সার্ভারে প্রায় 0 ডিস্ক পড়ার ক্রিয়াকলাপ দেখতে পাই, তাই আমি মনে করি না এটি
কেসটি

"ক্যোয়ারী ক্যাশে" কি বেশিরভাগ প্রশ্নের সন্তুষ্ট? SHOW VARIABLES LIKE 'query%';এবং SHOW GLOBAL STATUS LIKE 'Qc%';এবং SHOW GLOBAL VARIABLES LIKE 'Com_SELECT';
রিক জেমস

0

বাফার পুলটি দুটি ভাগে বিভক্ত, একটি তরুণ তালিকা এবং একটি অল্প বয়সী তালিকা। তৈরির হারটি দেখায় যে দুটি তালিকার মধ্যে বাফার পুলগুলিতে কত পৃষ্ঠাগুলি স্থানান্তরিত হচ্ছে।

যুবক তৈরি পৃষ্ঠাগুলি অল্প বয়সী পৃষ্ঠা তৈরি হচ্ছে না (অর্থাত্ ক্যাশে থেকে পঠন করা হচ্ছে। তরুণ নয় এমন পৃষ্ঠাগুলি তরুণদের তালিকা থেকে সরানো হয়েছে কারণ হয় তারা খুব পুরানো, বা তরুণ তালিকা পূর্ণ।

পৃষ্ঠাগুলির হার দুটির মধ্যে স্থানান্তরিত হয় তার উপর নির্ভর করে বর্তমানে তরুণ পুলের আকারের তুলনায় বাফার পুলটি কত ব্যবহৃত হচ্ছে। শূন্যে সেট মানে আপনার সক্রিয় সেট (আপনি যে পৃষ্ঠাগুলি ব্যবহার করছেন) তরুণ পুলের চেয়ে ছোট।

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