আমি একটি ডিডাব্লু ডিজাইন করতে যাচ্ছি এবং আমি বস্তুগত দৃষ্টিভঙ্গি সম্পর্কে শুনেছি। আসলে আমি একটি ভিউ তৈরি করতে চাই এবং বেস টেবিলগুলি পরিবর্তিত হয়ে গেলে এটি স্বয়ংক্রিয়ভাবে আপডেট হওয়া উচিত। যে কেউ কোনও প্রশ্নের উদাহরণ দিয়ে ব্যাখ্যা করতে পারে ..
উত্তর:
এগুলিকে এসকিউএল সার্ভারে সূচিযুক্ত ভিউ বলা হয় - আরও পটভূমির জন্য এই সাদা কাগজপত্রটি পড়ুন:
মূলত, আপনাকে যা করতে হবে তা হ'ল:
এবং তুমি করে ফেলেছ!
জটিল অংশটি হ'ল: ভিউটিতে বেশ কয়েকটি প্রতিবন্ধকতা এবং সীমাবদ্ধতাগুলি পূরণ করতে হয় - সেগুলি সাদা কাগজে বর্ণিত। আপনি যদি এটি করেন - এটাই আছে। দৃশ্যটি স্বয়ংক্রিয়ভাবে আপডেট হচ্ছে, কোনও রক্ষণাবেক্ষণের প্রয়োজন নেই।
অতিরিক্ত সম্পদ:
যদিও প্রকৃতভাবে ইঞ্জিনিয়ারিং দৃষ্টিকোণ থেকে, সূচিযুক্ত দর্শনগুলি এমন কিছু শোনাচ্ছে যা প্রত্যেকে পারফরম্যান্স উন্নত করতে ব্যবহার করতে পারে তবে বাস্তব জীবনের দৃশ্যপটটি একেবারেই আলাদা। কোনটি সূচিবদ্ধ হতে পারে এবং কী কী করতে পারে না তার উপর অনেক বেশি বিধিনিষেধের কারণে আমি সূচিযুক্ত দৃষ্টিভঙ্গিগুলি ব্যবহার করার ক্ষেত্রে ব্যর্থ হয়েছি।
আপনার যদি ভিউগুলিতে বাইরের সাথে যোগ দেয় তবে সেগুলি ব্যবহার করা যাবে না। এছাড়াও, সাধারণ সারণী প্রকাশের অনুমতি নেই ... আসলে আপনার যদি সাবলেট বা উত্পন্ন টেবিলগুলিতে কোনও অর্ডিং থাকে (যেমন বিধি দ্বারা বিভাজন সহ), আপনিও ভাগ্যের বাইরে।
এটি সূচকযুক্ত দর্শনগুলি ব্যবহার করার জন্য কেবলমাত্র খুব সাধারণ পরিস্থিতি ছেড়ে দেয়, যাই হোক না কেন অন্তর্নিহিত সারণিতে যথাযথ সূচী তৈরি করে আমার মতে কিছু অনুকূল করা যেতে পারে।
আমি এমন কিছু বাস্তব জীবনের পরিস্থিতি শুনে শিহরিত হব যেখানে লোকেরা প্রকৃতপক্ষে তাদের উপকারের জন্য সূচী দৃষ্টিভঙ্গি ব্যবহার করেছে এবং সেগুলি ছাড়া এটি করতে পারত না
(NOEXPAND)
আপনার জিজ্ঞাসাগুলি সূচী দর্শনগুলি ব্যবহার করে এমন ইঙ্গিত যোগ করতে হবে। এবং তারপরে আপনি পার্থক্যটি লক্ষ্য করুন। "টেবিলগুলিকে যথাযথভাবে ইনডেক্সিং করা" ইনডেক্সযুক্ত ভিউগুলি ব্যবহার করার সুবিধা রেকর্ড নির্বাচনকে সীমাবদ্ধ করার মধ্যে রয়েছে, অন্যথায় আপনি সঠিক, এটি একই হবে।
ম্যাটেরিয়ালাইজড ভিউ আসলে কী তা আপনার কিছুটা পটভূমির প্রয়োজন হতে পারে। ওরাকল এ এগুলি এমন একটি বস্তু যা আপনি অন্য কোথাও এটি নির্মাণের চেষ্টা করার সময় বেশ কয়েকটি উপাদান নিয়ে গঠিত।
একটি এমভিউ মূলত অন্য উত্স থেকে প্রাপ্ত ডেটার একটি স্ন্যাপশট। দেখার মতো নয় এমন উপাত্ত খুঁজে পাওয়া যায় না যখন আপনি ভিউটি জিজ্ঞাসা করেন এটি স্থানীয়ভাবে টেবিলের আকারে সঞ্চিত হয়। নিয়মিত বিরতিতে বা উত্সের ডেটা পরিবর্তন হওয়ার পরে পটভূমি পদ্ধতি ব্যবহার করে এমভিউ রিফ্রেশ হয়। ওরাকল সম্পূর্ণ বা আংশিক রিফ্রেশ করার অনুমতি দেয়।
এসকিউএল সার্ভারে, আমি নিয়মিত রিফ্রেশ করার জন্য (সম্পূর্ণ) একটি বেসিক এমভিউ তৈরি করতে নিম্নলিখিতটি ব্যবহার করব।
প্রথম, একটি দৃশ্য। এটি বেশিরভাগের জন্য সহজ হওয়া উচিত যেহেতু, কোনও টেবিলে কোনও ডাটাবেসে ভিউগুলি বেশ সাধারণ। এটি কলাম এবং ডেটাতে দেখতে একইরকম হওয়া উচিত। এটি ভিউ ডেটার একটি স্ন্যাপশট সংরক্ষণ করবে। তারপরে, এমন একটি পদ্ধতি যা টেবিলটি ছিন্ন করে এবং ভিউয়ের বর্তমান ডেটার উপর ভিত্তি করে এটিকে পুনরায় লোড করে। অবশেষে, এমন একটি কাজ যা এটির কাজ শুরু করার প্রক্রিয়াটিকে ট্রিগার করে।
বাকি সবই পরীক্ষা-নিরীক্ষা।
যখন সূচকযুক্ত ভিউ কোনও বিকল্প নয় এবং দ্রুত আপডেটগুলি প্রয়োজন হয় না, আপনি একটি হ্যাক ক্যাশে টেবিল তৈরি করতে পারেন:
select * into cachetablename from myviewname
alter table cachetablename add primary key (columns)
-- OR alter table cachetablename add rid bigint identity primary key
create index...
তারপরে sp_rename দর্শন / সারণী বা কোনও ক্যোয়ারী বা অন্যান্য মতামত পরিবর্তন করুন যা এটি ক্যাশে টেবিলের দিকে নির্দেশ করে।
প্রতিদিন / রাত্রে / সাপ্তাহিক / কি রিফ্রেশ পছন্দ না শিডিয়ুল
begin transaction
truncate table cachetablename
insert into cachetablename select * from viewname
commit transaction
এনবি: এটি আপনার টিএক্স লগগুলিতেও স্থান খাবে। ছোট ডেটাसेटগুলির জন্য সেরা ব্যবহৃত যা গণনা করতে ধীর slow প্রথমে বাইরের দৃশ্যে "সহজ তবে বৃহত্তর" কলামগুলি অপসারণ করতে রিফ্যাক্টর হতে পারে।
এমএস টি-এসকিউএল সার্ভারের জন্য, আমি "অন্তর্ভুক্ত" বিবৃতি দিয়ে একটি সূচক তৈরি করার পরামর্শ দিচ্ছি। স্বতন্ত্রতা প্রয়োজন হয় না, না একটি ক্লাস্টার ইনডেক্সের সাথে সম্পর্কিত ডেটার শারীরিক বাছাই হয়। "সূচক ... অন্তর্ভুক্ত ()" সিস্টেম দ্বারা স্বয়ংক্রিয়ভাবে রক্ষণাবেক্ষণ করা একটি পৃথক দৈহিক ডেটা স্টোরেজ তৈরি করে। এটি একটি ওরাকল মেটেরালাইজড ভিউর সাথে ধারণাগতভাবে খুব সমান।
https://msdn.microsoft.com/en-us/library/ms190806.aspx
https://technet.microsoft.com/en-us/library/ms189607(v=sql.105).aspx