ভার্চুয়াল মেশিনের ক্যাশে সাফ করুন


2

আমি এটি ইতিমধ্যে স্ট্যাক ওভারফ্লোতে পোস্ট করেছি, তবে এটি অফ-টপিক হিসাবে পতাকাঙ্কিত হয়েছিল। সম্ভবত আপনি ছেলেরা আমাকে সাহায্য করতে সক্ষম।

আমি বর্তমানে উবুন্টু 12.04 চলমান ভার্চুয়াল মেশিনে কিছু ডাটাবেস বেঞ্চমার্কিং করছি। আমি লক্ষ্য করেছি যে দ্বিতীয়বার যখন আমি একটি ক্যোয়ারী কার্যকর করি তখন তা দ্রুত গতিতে চলে। এটি সম্ভবত ওএস ক্যাশিংয়ের কারণে সম্ভবত সমস্ত ডেটা মূল স্মৃতিতে রাখে। আমার পরিমাপ স্ক্রু করা থেকে ক্যাশে রাখতে আমি এইভাবে পরবর্তী রানগুলির মধ্যে এটি সাফ করতে চাই।

গুগলে এটি অর্জনের জন্য আমি নিম্নলিখিত আদেশগুলি পেয়েছি:

sync;echo 3 > /proc/sys/vm/drop_caches

এবং

sysctl -w vm.drop_caches=3

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

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

দ্বিতীয় ধারণাটি হ'ল কেবল অন্য ডেটা সহ স্মৃতি প্লাবন করা। যেহেতু আমার মেশিনটিতে বেশ কিছুটা র‍্যাম রয়েছে আমি উদাহরণস্বরূপ কয়েকটি বড় ফাইল এলোমেলো ডেটা তৈরি করতে চাইছি কেবল এটি / ডিভ / নাল এ পড়ুন।

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

আগাম আপনাকে অনেক ধন্যবাদ, অ্যান্টিগো


আপনি কি ধরনের ডাটাবেস ব্যবহার করছেন? যদি আপনি না চান যে আপনার ক্যোয়ারী ওএস দ্বারা ক্যাশে হয়েছে, IODIRECT ব্যবহার করুন
c4f4t0r

উত্তর:


1

এই প্রশ্নটি এই প্রতিবেদনের ভিত্তিতে দেখা যাচ্ছে যে দ্বিতীয়বারের মতো গতি বৃদ্ধি "ওএস ক্যাশিংয়ের কারণে যা সমস্ত তথ্যকে মূল স্মৃতিতে রাখে" on আমি এতটা নিশ্চিত হতে পারি না যে প্রথম এবং পরবর্তী রানগুলির মধ্যে এটিই একমাত্র পার্থক্য। যদি পারফরম্যান্সের পার্থক্যটি হোস্টের ক্যাচিং ভিএম র‌্যাম ছিল, তবে ভিএম-এর পুনরায় বুট করার পার্থক্যটি নগণ্য হওয়া উচিত এবং কোনও পার্থক্য দেখার জন্য আপনাকে হোস্টটিকে পুনরায় বুট করতে হবে।

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

আপনার যদি পর্যাপ্ত পরিমাণে র‍্যাম করে থাকেন তবে ক্যাচিংয়ের আশেপাশের কাজ করার একটি উপায় হ'ল আপনার পরীক্ষার সময়কালের জন্য ডাটাবেস ফাইলগুলি কেবল একটি বড় র্যাম ডিস্কে সরিয়ে নেওয়া । I / O পরিসংখ্যানগুলি পর্যবেক্ষণ করে, আপনি কোয়েরি দ্বারা নেওয়া I / O এর পরিমাণ এবং অতএব বিভিন্ন অপ্টিমাইজেশান কৌশলগুলির কার্যকারিতার উপর প্রভাবগুলি, ডেটা ক্যাশিংয়ের প্রভাবগুলি সম্পর্কে চিন্তা করার প্রয়োজন ছাড়াই অনুমান করতে পারেন কারণ সমস্ত ডেটা ইতিমধ্যে র্যামে রয়েছে ।

আপনি কোন ডাটাবেস ইঞ্জিনটি চালাচ্ছেন তা বলবেন না, সুতরাং নির্দিষ্ট পরামর্শ দেওয়া শক্ত hard মাইক্রোসফ্ট এসকিউএল সার্ভারে, আপনার কোয়েরিটি কার্যকর করার আগে SET STATISTICS IO,TIME ONএবং / অথবা SET STATISTICS PROFILEপ্রশ্নটির ক্যোয়ারী কার্যকর করতে ডেটাবেস সার্ভারকে কতটা কঠোরভাবে কাজ করতে হবে তার ডেটা পাওয়ার জন্য আপনি কিছু করতে চাইবেন ; অন্যান্য ডাটাবেস ইঞ্জিনগুলির প্রায় একই ধরণের বৈশিষ্ট্য রয়েছে (এটি ক্যোয়ারী পারফরম্যান্স টিউনিংয়ের জন্য একটি পূর্ব শর্ত)। মনে রাখবেন যে, এই ধরনের পরিসংখ্যান প্রায়ই প্রকৃত ইনপুট / আউটপুট অনুরোধের সংখ্যা অন্তর্ভুক্ত করুন, এবং যে যেহেতু ঐ I / O অনুরোধ করতে পারেন কিন্তু অগত্যা হবেকোনও ওএস-স্তরের ক্যাশে থেকে সন্তুষ্ট থাকুন, এই সংখ্যাগুলি কোয়েরি প্রয়োগে কতটা ডেটা জড়িত তার একটি কার্যকর সূচক হতে পারে। ক্যোয়ারী প্ল্যান এবং প্রকৃত ফলাফলের মধ্যে বড় পার্থক্য, বিশেষত I / O এর পরিমাণ বা বিভিন্ন প্রান্তে সারি সংখ্যা, পারফরম্যান্সের সাথে জড়িত থাকতে পারে কারণ এর অর্থ হল ডেটাবেস ইঞ্জিনটি কোন অ্যালগরিদম ব্যবহার করতে হবে সে সম্পর্কে দুর্বল সিদ্ধান্ত নিচ্ছে। ইনপুট / আউটপুট বিশাল পরিমাণ যে কোন জায়গায় খুব ভাল এর অর্থ হতে পারে ডিস্ক প্রয়োজনীয় তুলনায় আরো যা আঘাত করছে করবে একটি কার্যকারিতা খরচে আসা।


ডাটাবেসটিকে র‌্যামে স্থানান্তর করা কোনও সমাধান নয়। আমি ডিস্কে ডাটাবেসের কার্যকারিতা পরিমাপ করতে চাই। সবকিছু যদি র‌্যাম ডিস্কে থাকে তবে আমি এটি করতে পারি না। এবং আমি কেবল রিলেশনালই নয়, নোএসকিউএল ডাটাবেসগুলিও ব্যবহার করছি, যার বেশিরভাগই কোনও কোয়েরি প্ল্যানার নেই।
এন্টিগো

@ এন্টিগো তাই "এক্সিকিউশন প্ল্যান" শব্দটি উপেক্ষা করুন, তারপরে। যেহেতু আপনি কি আপনার সাথে কাজ নির্দিষ্ট করে নি, কোনো উত্তর হবে খুব জেনেরিক হতে; আপনি যদি সুনির্দিষ্ট উত্তর চান তবে আপনার অবশ্যই প্রশ্নের নির্দিষ্ট বিবরণ সরবরাহ করতে হবে। এবং যেহেতু আপনার লক্ষ্য ক্যোয়ারী পারফরম্যান্সে ওএস-লেভেল ক্যাশিংয়ের প্রভাবগুলি সরিয়ে ফেলা হয়, তাই ডেটা র‍্যামে রাখলে এটি সম্পাদন করা উচিত। ক্যোয়ারি কার্যকর হওয়ার সময় কতটা ডেটা অ্যাক্সেস করা হবে তা দেখুন এবং কোডটি হ্রাস করার জন্য কোডটি অনুকূলিত করুন এবং আপনি স্বয়ংক্রিয়ভাবে ডিস্ক আই / ওকে হ্রাস করবেন , ফলস্বরূপ উন্নত কর্মক্ষমতা তৈরি হবে।
সিভিএন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.