আমি যখন কনসোলে কোয়েরিগুলি (যেমন MyModel.where(...)
বা record.associated_things
) চালাচ্ছি , তখন কীভাবে ঘটছে সে সম্পর্কে আরও বুঝতে পারার জন্য আমি কীভাবে প্রকৃত ডাটাবেস প্রশ্নগুলি চালিত হতে পারি?
আমি যখন কনসোলে কোয়েরিগুলি (যেমন MyModel.where(...)
বা record.associated_things
) চালাচ্ছি , তখন কীভাবে ঘটছে সে সম্পর্কে আরও বুঝতে পারার জন্য আমি কীভাবে প্রকৃত ডাটাবেস প্রশ্নগুলি চালিত হতে পারি?
উত্তর:
কনসোলে এই লাইনটি প্রবেশ করান:
ActiveRecord::Base.logger = Logger.new(STDOUT)
কনসোলে এই লাইনটি প্রবেশ করান:
ActiveRecord::Base.connection.instance_variable_set :@logger, Logger.new(STDOUT)
ActiveRecord::Base.logger = nil
নেই .explain
পাগল পদ্ধতি 4.
( .to_sql
কাজ খুব, কিন্তু না দেখাবে অন্তর্ভুক্ত)
Category.includes(:products).explain
=> EXPLAIN for: SELECT "categories".* FROM "categories" 0|0|0|SCAN TABLE categories
EXPLAIN for: SELECT "categories_products".* FROM "categories_products" WHERE "categories_products"."category_id" IN (1, 2) 0|0|0|SCAN TABLE categories_products
EXPLAIN for: SELECT "products".* FROM "products" WHERE "products"."id" IN (1, 2, 3, 4, 5, 6, 7) 0|0|0|SEARCH TABLE products USING INTEGER PRIMARY KEY (rowid=?) 0|0|0|EXECUTE LIST SUBQUERY 1
.explain
কাজটি করবে এবং করবে না তা খুঁজে পেতে আমার এত সময় লেগেছে .to_sql
। এবং .explain
এখনও কাঁচা বিন্যাসে বর্গ কোয়েরি সরবরাহ করে না যা আমি পিজি কনসোলে চালাতে পারি। তবে বিশ্লেষণ ও বিশ্লেষণের জন্য আমার কাঁচা প্রশ্নের প্রয়োজন ছিল। আমি অনুমান করি আপাতত ব্যাখ্যা দিয়ে করতে হবে।
সাম্প্রতিক হিসাবে, আপনি এটি ব্যবহার করতে পারেন:
https://github.com/dejan/rails_panel
এটিতে ক্রোমের জন্য বিকাশকারী কনসোল প্যানেল অ্যাড-অন এবং রত্ন ফাইল রয়েছে যা আপনার অ্যাপ্লিকেশনটির জেমফাইলে এভাবে যুক্ত করা দরকার:
group :development do
gem 'meta_request'
end
তারপরে আবার চালান:
bundle install
আপনার অ্যাপ্লিকেশনটি পুনরায় চালু করুন, এটি খুলুন এবং বিকাশকারী কনসোল চালু করুন এবং আপনার এটি দেখতে হবে:
রেল 6 থেকে শুরু করে আরও সুবিধাজনক পন্থা রয়েছে: কেবল ActiveRecord::Base.verbose_query_logs = true
কনসোলে যোগ করুন এবং আপনি যে সমস্ত এসকিউএল কল এবং যেখানে এটি কল হয়েছিল সেখানে দেখতে পাবেন। আরও তথ্য https://guides.rubyonrails.org/debugging_rails_applications.html#verbose-query-logs