মাইএসকিউএলে টেবিল_ক্যাচ টিউনিং (এবং বোঝা)


18

আমি দুর্দান্ত মাইএসকিউএল পারফরম্যান্স টিউনিং স্ক্রিপ্টটি চালিয়েছি এবং পরামর্শগুলির মাধ্যমে কাজ শুরু করেছি। আমি যে দৌড়ে এসেছি

টেবিল
ক্যাচ বর্তমান টেবিল_ক্যাশ মান = 4096 সারণী আপনার মোট 1073 টি টেবিল রয়েছে। আপনার 3900 টি খোলা টেবিল রয়েছে। আপনার সারণী ক্যাশের 95% ব্যবহারের সময় বর্তমান টেবিল_ক্যাচের হিট রেট 2%। আপনার সম্ভবত টেবিল_ক্যাচি বাড়ানো উচিত

আমি টেবিল_ক্যাশে পড়তে শুরু করেছি তবে মাইএসকিউএল ডকুমেন্টেশনটি বেশ অভাব পেয়েছি । তারা বলছেন table_cache, "যদি আপনার স্মৃতি থাকে" increase দুর্ভাগ্যক্রমে table_cacheচলকটি "সমস্ত থ্রেডের জন্য উন্মুক্ত টেবিলের সংখ্যা" হিসাবে সংজ্ঞায়িত করা হয়।

মাইএসকিউএল দ্বারা ব্যবহৃত স্মৃতি কীভাবে পরিবর্তিত হবে, যদি আমি এই পরিবর্তনশীলটি বাড়িয়ে দেব? এটির জন্য একটি ভাল মান কী?

উত্তর:


16

থেকে মাইএসকিউএল ডকুমেন্টেশন

উদাহরণস্বরূপ, 200 একযোগে চলমান সংযোগগুলির জন্য, আপনার কমপক্ষে 200 × N এর একটি টেবিল ক্যাশে আকার থাকা উচিত, যেখানে এন চালিয়ে যাওয়া যে কোনও প্রশ্নের মধ্যে যোগদানের জন্য সারণির সর্বাধিক সংখ্যা। অস্থায়ী সারণী এবং ফাইলগুলির জন্য আপনাকে কিছু অতিরিক্ত ফাইল বর্ণনাকারীও সংরক্ষণ করতে হবে।

সুতরাং যদি আপনার আবেদনে আপনার কাছে এমন একটি কোয়েরি রয়েছে যা 4 টি টেবিলগুলিতে যোগ দেয় এবং আপনি 200 বিবরণী সংযোগগুলি পরিচালনা করতে সক্ষম হতে চান, সেই বিবৃতিটির ভিত্তিতে আপনার কমপক্ষে 800 এর টেবিল_ক্যাচি থাকা উচিত।

মেমোরির ব্যবহার হিসাবে আমার কাছে এই সংখ্যাগুলি নেই, আমি সন্দেহ করব যে এটি আপনার টেবিলগুলির আকারের উপর নির্ভর করবে যে এটি ক্যাশে হচ্ছে।


পয়েন্টারের জন্য ধন্যবাদ। র‌্যাম ব্যবহার কীভাবে পরিবর্তন হবে তা না জেনে আমি আমার টেবিল_ক্যাচি সংখ্যা বাড়িয়ে কিছুটা ভয় পেয়েছি। মেশিনটির র‍্যাম ইতিমধ্যে পূর্ণ।
জোতাঙ্গো

আপনি কি নিশ্চিত যে মেমরিটি আসলে ব্যবহার করা হয়েছে বা কেবল মেমরিটি বাফার / ক্যাশে গ্রহণ করেছে? "ফ্রি-এম" চালান এবং দ্বিতীয় লাইনটি দেখুন (- / + বাফার / ক্যাশে), এটি এমবিতে আপনার মেমরির ব্যবহারের আরও নিখুঁত প্রতিনিধিত্ব। সার্ভারসফল্ট / প্রশ্নগুলি
7373১9 / /

হ্যাঁ, এটি সত্যই স্মৃতি ব্যবহার করছে। গতকাল এটি অদলবদল হয়েছে, যা একটি প্রোডাকশন ডিবির পক্ষে সত্যিই খারাপ। আমি আজ এইচপি থেকে র‌্যাম আপগ্রেড করার আদেশ দিয়েছি।
জোতাঙ্গো

এখন যারা আসছেন তাদের জন্য, এই উত্তরটি মাইএসকিএল 5.1+ এর জন্য সঠিক নয়। table_open_cacheআপনি এখন ডক্সের দিকে তাকালে এটি এখন বোঝায় । @ মার্কআর এর উত্তর দেখুন যখন দেখুনtable_cache
জেসন

3

আপনার ওপেনডেবলগুলি পরিবর্তনশীল নিরীক্ষণ করা উচিত এবং এটি কত দ্রুত বৃদ্ধি পায় তা দেখুন। আপনি যদি নতুন টেবিল তৈরি করেন (অস্থায়ীগুলি সহ) এর তুলনায় এটি দ্রুততর হয় তবে আপনার টেবিল ক্যাশেটি খুব ছোট হতে পারে।

সারণী_সামগ্রী সর্বদা - বেশিরভাগ ক্ষেত্রে যাইহোক - সার্ভারে টেবিলের মোট সংখ্যার চেয়ে উল্লেখযোগ্য পরিমাণে বড় হওয়া উচিত। অন্যথায় এটি টেবিলগুলি খোলার এবং বন্ধ রাখতে থাকবে।

আমি দেখতে পাচ্ছি না আপনি কীভাবে 2% ক্যাশে হিট রেট পেতে পারেন, যদি না আপনি কোনও সার্ভার পুনরায় চালু করার ঠিক পরে বা প্রচুর ফ্ল্যাব টেবিলগুলি ব্যবহার করেন (প্রশ্নের সংখ্যার সাথে সম্পর্কিত) the সাধারণত টেবিল ক্যাশে হিট রেট 99.9% হওয়া উচিত অন্যথায় কর্মক্ষমতা স্তন্যপান হবে।

ফ্ল্যাশ ট্যাবলেটগুলি করবেন না যদি আপনি এটি এড়াতে পারেন, এটি ক্যাশেটি দূরে ফেলে।

টেবিলগুলি খোলার জন্য ব্যয়বহুল কারণ এফআরএম ফাইলটি পড়তে হবে। মাইআইএসএএম-তে এটি উল্লেখযোগ্যভাবে খারাপ (অন্যান্য ইঞ্জিনের তুলনায়), যখন এটি কোনও টেবিলটি বন্ধ করে দেয়, এটি মূল সূচকগুলি থেকে আসা কী ক্যাশে থাকা সমস্ত ব্লককেও ছুঁড়ে ফেলে। সুতরাং কোনও টেবিলটি বন্ধ করা কী-এর ক্যাচ থেকে এর সূচকগুলি ডাম্প করে == ভাল নয়! অন্যান্য ইঞ্জিনগুলি ক্যাশেড ব্লকগুলি রাখে তবে তবুও মেটাডেটা পুনরায় পড়া এবং কিছু কাঠামো বরাদ্দ করা দরকার।

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