মাইএসকিউএল - কোয়েরি পরীক্ষার গতির জন্য ক্যাশে ব্যবহার না করার জন্য জোর করুন


343

আমি মাইএসকিউএলে কিছু প্রশ্নের গতি পরীক্ষা করছি। এই প্রশ্নাগুলি কত দ্রুত হয় তা পরীক্ষা করার সময় নির্ভরযোগ্য ফলাফল পেতে আমার পক্ষে কষ্টসাধ্য করে তোলে ডেটাবেস এই কোয়েরিগুলিকে ক্যাশে করছে।

কোনও প্রশ্নের জন্য ক্যাশে অক্ষম করার কোনও উপায় আছে?

সিস্টেম: লিনাক্স ওয়েবহোস্টিংয়ের মাইএসকিউএল 4, আমার পিএইচপিএমইএডমিন অ্যাক্সেস রয়েছে।

ধন্যবাদ

mysql 

উত্তর:


527

আপনার ক্যোয়ারিতে SQL_NO_CACHE (মাইএসকিউএল 5.7) বিকল্পটি ব্যবহার করে দেখুন । (মাইএসকিউএল 5.6 ব্যবহারকারীরা এখানে ক্লিক করুন )

যেমন।

SELECT SQL_NO_CACHE * FROM TABLE

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



4
মাইএসকিএল ক্যোয়ারী ক্যাশে সম্পর্কে একটি দুর্দান্ত নিবন্ধ। কীভাবে সেটআপ করবেন এবং ক্যাশেটি অ্যাকশনে দেখতে পাবেন! পড়া মূল্যবান। ডাটাবেস
অ্যাড্রিয়ান পি।

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

2
এটি ফলাফলগুলি ক্যাচ করা থেকে বিরত করে তবে এটি কি ক্যাশে ব্যবহার করা থেকে বিরত রাখে ?
ব্রেট

3
@ ব্রেট '11-এ ফিরে সালমানপিকে-র মন্তব্য দেখুন। এই ডক পৃষ্ঠাটি আক্ষরিক অর্থে 4 টি বাক্য এবং আপনার প্রশ্নের সরাসরি উত্তর দেয়। ভবিষ্যতে পৃষ্ঠাটি মুছে ফেলা হলে: "ফলাফলটি ইতিমধ্যে ক্যাশে হয়েছে কিনা তা অনুসন্ধানের ক্যাশেটি পরীক্ষা করে না এবং এটি কোয়েরির ফলাফলকেও ক্যাশে করে না"।
মরিস

121

আর একটি বিকল্প যা কেবলমাত্র বর্তমান সংযোগকে প্রভাবিত করে:

SET SESSION query_cache_type=0;

আমার খারাপ। এটা query_cache_sizeআমি তাকিয়ে ছিল, না query_cache_type। আমি আপনার এবং সিনিয়রদেবের উত্তর মিশ্রণ করছিলাম।
মাইকে

56

বর্তমান তারিখ / সময় সম্পর্কিত যে কোনও রেফারেন্স সেই নির্বাচনের জন্য ক্যোয়ারী ক্যাশে অক্ষম করবে:

SELECT *,NOW() FROM TABLE

"মাইএসকিউএল ক্যোয়ারী ক্যাশে ব্যবহার করুন জন্য পূর্বশর্ত এবং নোট" দেখ @ http://dev.mysql.com/tech-resources/articles/mysql-query-cache.html


30

কনফিগারেশন বিকল্পটিও রয়েছে: ক্যোরি_ক্যাচি_সাইজ = 0

সার্ভার শুরুর সময় ক্যোয়ারী ক্যাশে অক্ষম করতে, ক্যোরি_ক্যাচি_সাইজ সিস্টেম ভেরিয়েবল 0 এ সেট করুন the কোয়েরি ক্যাশে কোডটি অক্ষম করে কোনও ওভারহেড লক্ষ্য করা যায় না। আপনি যদি উত্স থেকে মাইএসকিউএল তৈরি করেন তবে --without-ক্যোয়ারী-ক্যাশে বিকল্পের সাহায্যে কনফিগার করার মাধ্যমে ক্যোয়ারী ক্যাশে সক্ষমতাগুলি পুরোপুরি সার্ভার থেকে বাদ দেওয়া যেতে পারে।

Http://dev.mysql.com/doc/refman/5.1/en/query-cache.html দেখুন


24

আপনি ক্যোয়ারী ক্যাশে পুনরায় সেট করতে অনুসরণ কমান্ডও চালাতে পারেন।

RESET QUERY CACHE

9
এটি সম্ভবত ওভারকিল ... আদর্শভাবে, আপনি কেবল মাইএসকিউএল সাময়িকভাবে ক্যাশে উপেক্ষা করতে চান।
বিমিনিয়ার

3
এর জন্য আপনার বিশেষ অনুমতিও দরকার।
এরিক রবার্টসন

19

একটি সমস্যা

SELECT SQL_NO_CACHE * FROM TABLE

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


1
তবে আপনার ক্যাশে যদি অন্যদের দ্বারা পূর্ণ হয় তবে আপনি দ্রুত হওয়ার মায়া পাবেন। কিন্তু কখনও কখনও না।
কারাতেডোগ


3

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

SELECT t.*
FROM thetable t, (SELECT @a:=NULL) as init;

3
"আমি এটি ব্যবহারের চেয়ে অনেক বেশি ভাল সূচক পেয়েছি SQL_NO_CACHE।" তা কিভাবে? সুস্পষ্ট কীওয়ার্ডের উপর অস্পষ্ট হ্যাক ব্যবহারের জন্য আপনার সুন্দর একটি শক্তিশালী কেস লাগবে, যদি না স্পষ্টত কীওয়ার্ড দাবি না করে তবে তা করে না।
এয়ার

1
@ অ্যার এসকিউএল_এনও_সিএইচই এর চেয়ে আরও ভাল কাজ করার জন্য এই সমাধানটি পেয়েছি। এসকিউএল_এনও_সিএইচই প্রথমবারের জন্য ক্যোয়ারি চালানোর জন্য কাজ করেছিল, কিন্তু তারপরে এটি আর কাজ করে না। আমি ধরে নিচ্ছি এটি ক্যাশিংয়ের অন্যান্য প্রক্রিয়াগুলির কারণে। আমি মনে করি এটি আরও ভাল কাজ করে কারণ কোনও ভেরিয়েবলের উপর নির্ভর করে এমন কোনও অনুসন্ধান কোনও স্তর বা প্রক্রিয়া দ্বারা ক্যাশে করা যায় না - কমপক্ষে, এটি আমার সেরা অনুমান।
ক্লিক

2

আপনি যদি ক্যোয়ারী ক্যাশে অক্ষম করতে চান তবে আপনার মাইএসকিএল কনফিগারেশন ফাইলটিতে 'ক্যোয়ারী_ক্যাচি_সাইজ' 0 তে সেট করুন। যদি এটির সেট 0 মাইএসকিএল কোয়েরি ক্যাশে ব্যবহার করবে না।

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