আমি কীভাবে একটি নিষ্ক্রিয় অনুসন্ধান ডিবাগ করব?


13

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

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

প্রাদান

  1. আমি স্কাইলচেমি ব্যবহার করে একটি অজগর স্ক্রিপ্টের ভিতরে এটি চালাচ্ছি। যাইহোক, আমি অটোমোমিকেটে লেনদেনের স্তরটি সেট করে রেখেছি, তাই আমার মনে হয় না যে কোনও লেনদেনের মধ্যে জিনিস গুটিয়ে যাচ্ছে। অন্যদিকে, আমি যখন স্কয়ার টার্মিনালে ম্যানুয়ালি এটি চালাচ্ছি তখন আমি কোয়েরিটি হ্যাং করতে দেখি না।

  2. অনুসন্ধান করার দ্বারা pg_stat_activity, ক্যোয়ারী প্রাথমিকভাবে যেমন ডাটাবেসের আসে state='active'। হয়তো পরে 15 সেকেন্ড, 'অলস' এবং অতিরিক্ত রাজ্যের পরিবর্তন, xact_startসেট করা হয় NULL। অপেক্ষার পতাকাটি কখনও সত্যে সেট করা হয় না।

  3. আমি sqlalchemy জন্য লেনদেনের স্তর autocommit মূর্ত আউট, এটি পরিবর্তে রাজ্যের স্তব্ধ হবে 'idle in transaction'বরং 'idle'। এবং এটি সম্ভবত যে পরিবর্তনটি করার পরে কিছুটা কম ঘন হয়ে যায়?

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


2
যদি রাষ্ট্রটি নিষ্ক্রিয় থাকে এবং এটি অপেক্ষা না করে, তবে কোয়েরিটি সম্পূর্ণ হলেও ডিবিটির সাথে সংযোগটি বন্ধ নেই closed লেনদেনে অলস, এছাড়াও, এর অর্থ হল যে ক্যোয়ারী সম্পূর্ণ COMMITহয়েছে তবে লেনদেন শেষ করার জন্য কোনও জারি করা হয়নি। দেখে মনে হচ্ছে আপনার সমস্যাটি ডিবি থেকে অন্য কোথাও হতে পারে ..
জোশি বদিও

ইয়া, আমি মনে করি আপনি ঠিক বলেছেন পাইথন কীভাবে ক্যোয়ারি পরিচালনা করছে তা ইস্যুতে রয়েছে, ডাটাবেসের কোনও সমস্যা নয়।
কার্ট স্পিন্ডার

উত্তর:


6

আপনাকে এখানে প্রথমে আলাদা করতে হবে শব্দগুলি ক্যোয়ারী , লেনদেন এবং সংযোগ

  1. ক্লু: আপনার ক্যোয়ারী কার্যকর হয়েছে - এটি সক্রিয় অবস্থায় রয়েছে। এরপরে কোয়েরিটি শেষ হয় তবে সংযোগটি স্থির থাকে - নিষ্ক্রিয় অবস্থা। কোনও লেনদেন নেই (এটি প্রতিশ্রুতিবদ্ধ হয়েছে) সুতরাং এটি xact_startশূন্য। প্রশ্নটি সফল হওয়ার পরে আপনাকে সংযোগটি বন্ধ করতে হবে।

  2. ক্লু: স্বতঃপরিচালনাটি ক্যোয়ারীতে যাওয়ার আগে লেনদেনের মাঝখানে রেখে দেওয়া হয়েছিল তাই প্রথমে আপনাকে commitএবং পরে করতে হবে close connection

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