কার্যকর পদ্ধতিতে পেজিং কীভাবে কার্যকর করা যায়?


9

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

পেজিং বাস্তবায়নের কার্যকর উপায় কী তা প্রশ্ন। আমি নিশ্চিত করতে চাই যে এমএসকিউএল যথাসম্ভব ক্যাশে ব্যবহার করে এবং আমি যখনই পেজিং পরিবর্তন করি তখনই আবার এটি কার্যকর করা হয় না।

আরও অনেক ক্লায়েন্ট আছেন যারা একই সময়ে ডাটাবেসটি অনুসন্ধান করছেন। ব্যবহৃত এসকিউএল ইঞ্জিন: এমএস এসকিউএল 2005

আমার ধারণাগুলি ছিল:

  • এক্সিকিউশন পরিকল্পনার ভাগ করে নেওয়ার বিষয়টি নিশ্চিত করতে প্রস্তুত বর্ধিত স্কেল স্টেটম্যানস্ট ব্যবহার করুন
  • শুধুমাত্র প্রয়োজনীয় সারিগুলি পুনরুদ্ধার করতে ROW_COUNT ভেরিয়েবল ব্যবহার করুন

তবে এটি কি সবচেয়ে কার্যকর উপায়? অথবা আপনি কি মনে করেন যে পুরো ফলাফল সেটটি পুনরুদ্ধার করা এবং কোডটিতে ক্লায়েন্টের কাছে ডেটা প্রেরণ করে এমন পেজেজিং কার্যকর করা ভাল?

আপনার টিপস জন্য আপনাকে ধন্যবাদ!

শুভেচ্ছা, টমাস

উত্তর:


7

কোয়েরিটি প্রতিবার কার্যকর করা হবে। এসকিউএল সার্ভার ফলাফলগুলি ক্যাশে করে না।

এসকিউএল সার্ভার ২০১১ অবধি যথাযথ পেজিং কার্যকর করা হবে না, তবে ততক্ষণ পর্যন্ত আপনার বিকল্পগুলি (যেমন আপনি চিহ্নিত করেছেন) হ'ল:

  • ROW_NUMBER () এবং চাহিদা অনুসারে প্রশ্ন
  • ক্লায়েন্ট ক্যাশে

একটি প্রস্তুত এসকিউএল বিবৃতি প্রতিবার কার্যকর করা হবে।

আপনার যদি ফ্যাট ক্লায়েন্ট থাকে তবে ক্যাচিং ক্লায়েন্টের কাছে স্থানীয়। উদাহরণস্বরূপ আপনার কয়েক মিলিয়ন ব্লব না থাকলে এটি বেশিরভাগ ক্ষেত্রেই ঠিক থাকে।

আমাদের ওয়েব ক্লায়েন্টে আমরা সমস্ত ফলাফল রেন্ডার করি তবে কেবল শীর্ষ 100 দেখায় এবং 101+ সারি সহ একটি লুকানো ডিআইভি প্রসারিত করার চেয়ে একটি "সমস্ত দেখান" বোতামটি রাখে। আমরা ওয়েব সার্ভারে ক্যাশে করি না এবং আমরা পেজিং অফার করি না।


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

1
আমি ক্লায়েন্ট বাছাই করা হবে। তথ্য ইতিমধ্যে আছে। হ্যাঁ, একটি ডাটাবেস বাছাই করতে ভাল তবে যদি ডেটা একই থাকে এবং উপলব্ধ থাকে তবে কেন অন্য কল করা যায়? ব্রাউজারে বাছাই করতে সক্ষম করতে আমরা jQuery অ্যাড-অন ব্যবহার করি :-)
জিবিএন

4

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


ধন্যবাদ। আমার আসলে উভয়ই দরকার: ডাব্লুসিএফ-তে সার্ভার এবং ক্লায়েন্টের মধ্যে যোগাযোগ প্রয়োগ করা হয়েছে, সুতরাং কোনও বার্তার জন্য সর্বাধিক আকার রয়েছে এবং যদি ফলাফলটি সেটটি এই আকারটি ছাড়িয়ে যায় তবে ক্লায়েন্টের কাছে সম্পূর্ণ ডেটা স্থানান্তর করতে আমাকে আরও বার্তা প্রেরণ করতে হবে। ক্লায়েন্টরা দ্রুত একাধিক পৃষ্ঠাগুলির মাধ্যমে পৃষ্ঠাটিও পছন্দ করতে পারে ... :(
টমাস ওয়ালেক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.