পোস্টগ্র্রেস ক্যাশে / বাফারগুলি দেখুন এবং সাফ করুন?


90

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

দ্রষ্টব্য: আমি মূলত নিম্নলিখিত এসকিউএল সার্ভার কমান্ডের পোস্টগ্রিজ সংস্করণটি খুঁজছি:


DBCC FREEPROCCACHE
DBCC DROPCLEANBUFFERS

তবে আমি জানতে চাই যে কীভাবে আসলে সেই বাফারটিতে কী রয়েছে is

কোন সাহায্যের জন্য ধন্যবাদ।

উত্তর:


60

আপনি পোস্টগ্রিএসকিউএল বাফার ক্যাশে যা রয়েছে তা পিজি_বফারচে মডিউলটি ব্যবহার করে দেখতে পারেন। আমি " পোস্টগ্রাইএসকিউএল বাফার ক্যাশে ইনসাইড " নামে একটি উপস্থাপনা করেছি যা আপনি যা দেখছেন তা ব্যাখ্যা করে এবং সেই সাথে যে তথ্যটি রয়েছে সেগুলি ব্যাখ্যা করতে আমি আরও কিছু জটিল প্রশ্ন দেখি show

অপারেটিং সিস্টেমের ক্যাশে কিছু সিস্টেমেও দেখা সম্ভব, কিছুটা রুক্ষ উদাহরণের জন্য দেখুন [pg_osmem.py]।

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


29
একক সেশনের মধ্যে কেবল ক্যাচিংয়ে বাইপাস করা সম্ভব? আমাদের প্রায়শই বিভিন্ন ক্যোয়ারী পরীক্ষার প্রয়োজন হয় এবং এই ক্যাচিং একটি পদ্ধতি অন্যের চেয়ে ভাল কিনা তা নির্ধারণ করা খুব কঠিন করে তোলে (ক্যাশেড পারফরম্যান্সের সাথে তুলনা করা ছাড়া!)
এভিলপুটপাস্টার

7
ডাটাবেসের ক্যাশে বাইপাস বা ফ্লাশ করার কোনও উপায় নেই। এটি সাফ করার জন্য আপনি যা করতে পারেন তা হ'ল সার্ভারটি পুনঃসূচনা করুন।
গ্রেগ স্মিথ

4
ভবিষ্যতের বিকাশে উদাহরণস্বরূপ, এটি কী সম্ভব হয়েছিল তা অনুমেয়যোগ্য? বা এটি কি এমন কিছু যা বর্তমান সিস্টেমগুলির সাথে (পিজি এবং লিনাক্স) যদি সম্ভব হয় তবে তা সম্ভব হবে না?
কুবেরচাঁন

9
অ্যামাজন আরডিএসের মতো পরিচালিত পোস্টগ্রিসএসকিউএল ইনস্টলেশন ব্যবহার করার সময়, কোনওটির ওএসে অ্যাক্সেস থাকে না এবং পরীক্ষার উদ্দেশ্যে ওএস ক্যাশেগুলি খালি করা খুব কঠিন হতে পারে, তাই পোস্টগ্রিজ এসকিউএলে এই বৈশিষ্ট্যটি খুব উপকারী হবে।
সামুলি পাহাওজা

4
এটি একটি সমস্যা একটি ধীর ক্যোয়ারী পুনরুত্পাদন করতে পারে না, আমি কীভাবে নিশ্চিত হতে পারি যে আমার ক্যোয়ারী একটি সুরটির পরে কাজ করছে? সার্ভার পুনরায় আরম্ভ করা কোনও বিকল্প নয় আমি
প্রোডে

22

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

আপনার যা করা উচিত তা হ'ল:

  1. শাটডাউন ডাটাবেসের সার্ভার (pg_ctl, sudo service postgresql stop, sudo systemctl stop postgresql, ইত্যাদি)
  2. echo 3 > /proc/sys/vm/drop_caches এটি ওএস ফাইল / ব্লক ক্যাশেগুলি পরিষ্কার করে দেবে - যদিও আমি অন্যান্য ওএসগুলিতে এটি কীভাবে করব তা আমি জানি না খুব গুরুত্বপূর্ণ। (অনুমতি অস্বীকারের ক্ষেত্রে, সেই প্রশ্নেরsudo sh -c "echo 3 > /proc/sys/vm/drop_caches" মতো চেষ্টা করুন )
  3. ডাটাবেস সার্ভার শুরু করুন (যেমন sudo service postgresql start, sudo systemctl start postgresql)

4
ভেবেছিলেন এটি লক্ষ্য করা সহায়ক হবে: পোস্টগ্রিসের ডেটা ডিরেক্টরি যদি '/' মাউন্ট করা একই ভলিউমে না থাকে তবে উপরের অপারেশনের আগে / পরে আপনাকে প্রয়োজনীয় পরিমাণ প্রয়োজন হতে পারে (নিশ্চিত না যা সত্য)। এ ছাড়া (সম্ভবত কিছুটা ভুডু) এই ধাপগুলির আগে এবং পরে 'সিঙ্ক' চালানোর চেষ্টা করুন।
marqueed

18

ড্রপ_ক্যাচ সম্পর্কে গ্রেগ স্মিথের উত্তর খুব সহায়ক ছিল। ক্যাশে ফেলে দেওয়া ছাড়াও পোস্টগ্র্যাস্কল সার্ভিসটি থামানো এবং শুরু করা আমার পক্ষে প্রয়োজনীয় মনে হয়েছিল। এখানে একটি শেল স্ক্রিপ্ট যা কৌশলটি করে। (আমার পরিবেশটি উবুন্টু 14.04 এবং পোস্টগ্রিএসকিউএল 9.3)

#!/usr/bin/sudo bash

service postgresql stop
sync
echo 3 > /proc/sys/vm/drop_caches
service postgresql start

আমি প্রথমবারের মতো 19 সেকেন্ড এবং পরবর্তী প্রচেষ্টাতে 2 সেকেন্ডেরও কম সময় নিয়ে এমন একটি ক্যোয়ারী দিয়ে পরীক্ষা করেছি। এই স্ক্রিপ্টটি চালানোর পরে, ক্যোয়ারীটি আবার 19 সেকেন্ডে নিয়েছে।


15

আমি আমার লিনাক্স বাক্সে এই আদেশটি ব্যবহার করছি:

sync; /etc/init.d/postgresql-9.0 stop; echo 1 > /proc/sys/vm/drop_caches; /etc/init.d/postgresql-9.0 start

এটি সম্পূর্ণরূপে ক্যাশে থেকে মুক্তি পায়।


4
Postgresql সংস্করণটি যদি 9.0 নয়: সিঙ্ক হয়; sudo পরিষেবা postgresql স্টপ; প্রতিধ্বনি 1> / proc / sys / vm / ড্রপ_ক্যাচ; সুডো সার্ভিস
পোস্টগ্রেস্কল

@ আরস্লোনরইলস কেবল সেবার কাজটি করবে যদি পরিষেবাটির নাম দেওয়া হয় postgresql, যা নাও হতে পারে।
jpmc26

আমি মনে করি, syncসার্ভারটি বন্ধ করার পরে, ঠিক তার আগেই করা উচিত drop_caches, কারণ পোস্টগ্র্যাস আবার স্টপ প্রক্রিয়ার সময় কিছু লিখতে পারে।
Greatvovan

8

হ্যাঁ, পোস্টগ্র্যাস্কিলের অবশ্যই ক্যাশিং রয়েছে। আকারটি সেটেড_বফার্স দ্বারা নিয়ন্ত্রণ করা হয় । তা ছাড়া পূর্ববর্তী উত্তরের উল্লেখ হিসাবে রয়েছে, ওএস ফাইল ক্যাশে যা ব্যবহৃত হয়।

ক্যাশে কী রয়েছে তা যদি আপনি দেখতে চান তবে পিজি_বুফারচে ( একটি অবদানকারী / উত্স ট্রিতে, অবদানকারী আরপিএমে , বা আপনি এটি কীভাবে ইনস্টল করেছেন তার জন্য উপযুক্ত) নামে একটি অবদানের মডিউল রয়েছে । এটি কীভাবে ব্যবহার করতে হয় তা স্ট্যান্ডার্ড পোস্টগ্র্যাস এসকিউএল ডকুমেন্টেশনে তালিকাভুক্ত করা হয়।

সার্ভার পুনরায় চালু করা ব্যতীত বাফার ক্যাশেটি সাফ করার কোনও উপায় নেই। অন্যান্য উত্তরে উল্লিখিত কমান্ডের সাহায্যে আপনি ওএস ক্যাশে ফেলে দিতে পারেন - তবে আপনার ওএস লিনাক্স is


7

আমার এই ত্রুটি ছিল

psql: /cygdrive/e/test_insertion.sql: 9: ERROR: 53 প্যারামিটারের টাইপ (t_stat_gardien) পরিকল্পনার প্রস্তুতির সাথে মেলে না (t_stat_avant)

আমি বর্তমান পরিকল্পনাটি ফ্লাশ করার জন্য এবং এটির একটি সন্ধানের জন্য খুঁজছিলাম:

ডিস্কার্ড প্ল্যানস

আমার এটি আমার সন্নিবেশকারীদের মধ্যে ছিল এবং এটি আমার সমস্যা সমাধান করে।


4
ত্যাগ পরিকল্পনা আমার জন্য ঠিক হয়নি, কোয়েরিটি এখনও ক্যাশেড দেখাচ্ছে
deFreitas

4
ডান সিনট্যাক্স হয় DISCARD PLANS;। এবং, ডকুমেন্টেশন হিসাবে বলা হয়েছে: "ডিসকার্ড একটি ডাটাবেস সেশনের সাথে যুক্ত অভ্যন্তরীণ সংস্থানগুলি প্রকাশ করে "।
ইমেজ

6

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

অনেক লোক ইতিমধ্যে বলেছে, ভাগ করা বাফারগুলি সাফ করতে আপনি কেবল পোস্টগ্রিস পুনরায় চালু করতে পারেন (সার্ভার পুনরায় আরম্ভ করার দরকার নেই)। তবে কেবল এটি করা ওএস ক্যাশে সাফ করবে না।

পোস্টগ্রিসের ব্যবহৃত ওএস ক্যাশেটি পরিস্কার করার জন্য, পরিষেবাটি বন্ধ করার পরে, অজস্র সিসিনটার্নালস স্যুট থেকে অসাধারণ র‌্যাম্যাপ ( https://technet.microsoft.com/en-us/sysinternals/rammap ) ব্যবহার করুন । আপনি একবার রামম্যাপ কার্যকর করলে, মূল মেনুতে কেবল "খালি" -> "খালি স্ট্যান্ডবাই তালিকা" ক্লিক করুন।

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

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

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

শুভেচ্ছা, থিয়াগো এল।



5

এটি আমার শর্টকাট

echo 1 > /proc/sys/vm/drop_caches; echo 2 > /proc/sys/vm/drop_caches; echo 3 > /proc/sys/vm/drop_caches; rcpostgresql stop; rcpostgresql start;

5

নেই pg_buffercacheমডিউল মধ্যে দেখুন shared_buffersক্যাশে। এবং 'কোল্ড' ক্যাশে কিছু পারফরম্যান্স টেস্ট করার জন্য আমাকে কিছু সময় ক্যাশে ফেলে দেওয়ার দরকার পড়েছিলাম তাই আমি একটি পিজি_ড্রোপ্যাচ এক্সটেনশন লিখেছিলাম যা ঠিক এটি করে। অনুগ্রহপূর্বক এটি ভালো করে দেখুন.


0

আপনার যদি ডেডিকেটেড পরীক্ষামূলক ডাটাবেস থাকে তবে আপনি প্যারামিটারটি সেট করতে পারেন: শেয়ার্ড বাফারগুলি 16 এ That এটি সমস্ত প্রশ্নের জন্য ক্যাশে অক্ষম করা উচিত।

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