ব্যস্ত টেবিল শূন্য হচ্ছে না


11

আমরা কম-ফ্রিকোয়েন্সি টাইমসরিজ ডেটা সঞ্চয় করতে উইন্ডোজে পোস্টগ্রিস 9.2 ব্যবহার করছি: আমরা প্রতি সেকেন্ডে প্রায় 2000 সারি সেকেন্ডে 24 ঘন্টা, সপ্তাহে 7 দিন সন্নিবেশ করিয়ে যাচ্ছি কোনও ডাউনটাইম ছাড়াই। এমন একটি রয়েছে DELETEযা টেবিলটির দৈর্ঘ্যকে একটি নির্দিষ্ট সংখ্যক দিনের জন্য 10 মিনিট বা তার বেশি সময় ধরে টেবিলের উপরে চালিত করে। এটি মোটামুটি স্থিতিশীল 900 মিলিয়ন সারি হয়ে শেষ হয়। (যারা আগ্রহী জন্য, SELECT, INSERT, DELETEসব performant হয়)।

যেমনটি সত্ত্বেও DELETE, সারিগুলি মোছার পরে ডিস্কের স্থান খালি হয় না। তার জন্য আমাদের VACUUMচালানো দরকার ।

আমি কোয়েরি করেছি pg_stat_user_tablesএবং VACUUMপ্রদর্শিত হয়েছে বলে মনে হয় না।

আমি বিভিন্ন ডক্স থেকে কী বুঝি ( http://www.postgresql.org/docs/9.2/static/routine-vacuuming.html ):

  • আমাদের অটো-ভ্যাকুয়াম চালু আছে বলে মনে হয় এবং এটি অন্য টেবিলে চলছে।
  • অটো-শূন্যতা চলবে না FULL, এবং টেবিলে একচেটিয়া লকের প্রয়োজন হবে না।

অটো-শূন্যতা কেন চলছে না এমন কারও কি কোনও চিন্তা আছে? এটি কি খালি টেবিলে নিরন্তর ব্যস্ত থাকায়?

এবং এটি সেক্ষেত্রে প্রতিটির VACUUMপরে চলছে DELETE(যা প্রতি 10 মিনিটে চলে)?

সম্পাদনা:

নীচের এসও লিঙ্ক থেকে এসকিউএল ব্যবহার করে অনুসন্ধান করুন:

-[ RECORD 2 ]---+---------------------------
schemaname      | stats
relname         | statistic_values_by_sec
last_vacuum     |
last_autovacuum |
n_tup           |    932,315,264
dead_tup        |    940,727,818
av_threshold    |    186,463,103
expect_av       | *

এবং কাঁচা আউটপুট:

-[ RECORD 3 ]-----+---------------------------
relid             | 501908
schemaname        | stats
relname           | statistic_values_by_sec
seq_scan          | 12
seq_tup_read      | 4526762064
idx_scan          | 29643
idx_tup_fetch     | 2544206912
n_tup_ins         | 1573896877
n_tup_upd         | 0
n_tup_del         | 941176496
n_tup_hot_upd     | 0
n_live_tup        | 688858417
n_dead_tup        | 940727818
last_vacuum       |
last_autovacuum   |
last_analyze      |
last_autoanalyze  | 2014-08-09 01:36:21.703+01
vacuum_count      | 0
autovacuum_count  | 0
analyze_count     | 0
autoanalyze_count | 69

4
পোস্টগ্র্রেএসকিউএলে আগ্রাসী অটোভ্যাকুম দেখুন । এছাড়াও select * from pg_stat_user_tablesএই টেবিলটি রাখা আকর্ষণীয় হবে ( \xএকটি সুন্দর বিন্যাসিত আউটপুট জন্য পিএসকিএল ব্যবহার করুন)
ড্যানিয়েল ভ্যারিট

2
এই লিঙ্কটি সহায়ক, এবং সম্ভবত এই প্রশ্নের উত্তর দেয় - টেবিলটি স্বয়ংক্রিয় শূন্যতার কাজ করতে ব্যস্ত। @ ড্যানিয়েলভিটিé আপনার জিজ্ঞাসা আউটপুটটি দিয়ে আমি প্রশ্নটি আপডেট করেছি।
ব্যারি

3
এ তো অনেক মরা টিপল! যদি সম্ভব হয় তবে টাইমস্ট্যাম্পের সাহায্যে টেবিলটি বিভাজন করা এবং মোছার পরিবর্তে পুরাতন পার্টিশনগুলি বাদ দেওয়ার কথা বিবেচনা করুন। পার্টিশন জুড়ে অনন্য সূচকটি হ'ল প্রধান সতর্কতা সমর্থিত নয়।
ড্যানিয়েল ভ্যারিট

1
এই টেবিলের অটোভ্যাকুয়াম সম্পর্কে লগ ফাইলটির বার্তা রয়েছে কি বাতিল?
jjanes

@ জাজানেস না - অটোভ্যাকুয়াম কখনও শুরু হওয়া লগগুলিতে কোনও ইঙ্গিত পাওয়া যায়নি।
ব্যারি

উত্তর:


2

আমি বিভাজন দেখতে হবে । যদি দিনের বেলা বিভক্ত হয়ে যায় তবে একবার খুব পুরানো হয়ে গেলে আপনি পুরো পার্টিশনটি ফেলে দিতে পারেন। আপনার আর শূন্যতা থাকতে হবে না।

এছাড়াও, সামগ্রিক কর্মক্ষমতা বাড়তে পারে, যেহেতু আপনি যেখানে মুছে ফেলছেন সেখানে notোকানো হচ্ছে না not নতুন পার্টিশন তৈরি করতে এবং পুরানোগুলি মুছতে আপনার কোডটি লিখতে হবে।

পার্টিশনের জন্য ঠিক এটিই।

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