সিসি / বাল্ক ইনসার্ট বনাম টেবিল-মূল্যবান পরামিতিগুলির পারফরম্যান্স


84

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

কিছু ব্যাকগ্রাউন্ড তথ্য যা আমি এই প্রশ্নটি জিজ্ঞাসা করছি তা ব্যাখ্যা করতে সহায়তা করতে পারে:

  • ডেটা আসলে একটি ওয়েব পরিষেবার মাধ্যমে আসে। ওয়েব সার্ভিস ডাটাবেস সার্ভারে একটি ভাগ করা ফোল্ডারে একটি পাঠ্য ফাইল লিখে যা ফলস্বরূপ একটি সম্পাদন করে BULK INSERT। এই প্রক্রিয়াটি মূলত এসকিউএল সার্ভার 2000 এ বাস্তবায়িত হয়েছিল এবং সেই সময় INSERTসার্ভারে কয়েক শ'টি বক্তব্য চক করা ব্যতীত অন্য কোন বিকল্প ছিল না , যা আসলে আসল প্রক্রিয়া ছিল এবং কার্য সম্পাদনের বিপর্যয় ছিল।

  • ডেটাটি একটি স্থায়ী মঞ্চের টেবিলে বাল্কটি inোকানো হয় এবং তারপরে একটি আরও বড় টেবিলের সাথে একীভূত হয় (যার পরে এটি স্টেজিং টেবিল থেকে মুছে ফেলা হয়)।

  • তথ্য সন্নিবেশ করতে পরিমাণ "বড়", তবে "বিশাল" নয় - সাধারণত কয়েকশো সারি, বিরল দৃষ্টান্তে 5-10k সারি শীর্ষে থাকে। অতএব আমার অন্ত্র অনুভূতি হ'ল BULK INSERTএকটি লগ-লগ করা অপারেশন হওয়া এই বড় কোনও পার্থক্য আনবে না (তবে অবশ্যই আমি নিশ্চিত নই, সুতরাং প্রশ্ন)।

  • সন্নিবেশটি আসলে একটি বৃহত্তর পাইপলাইন ব্যাচ প্রক্রিয়াটির অংশ এবং একের পর এক বহুবার ঘটতে হবে; অতএব কর্মক্ষমতা হয় সমালোচনামূলক।

যে কারণগুলিকে আমি BULK INSERTটিভিপি দিয়ে প্রতিস্থাপন করতে চাই তা হ'ল:

  • নেটবিআইওএস-এর মাধ্যমে টেক্সট ফাইলটি লেখার জন্য ইতিমধ্যে কিছুটা সময় ব্যয় হয়েছে এবং এটি কোনও স্থাপত্যের দৃষ্টিকোণ থেকে বেশ মারাত্মক।

  • আমি বিশ্বাস করি যে মঞ্চের টেবিলটি (এবং হওয়া উচিত) নির্মূল করা যেতে পারে। এটির মূল কারণ হ'ল dataোকানো ডেটা একই সময়ে সন্নিবেশের সময় অন্যান্য কয়েকটি আপডেটের জন্য ব্যবহার করা প্রয়োজন এবং প্রায় খালি মঞ্চায়ন করার চেয়ে বিশাল উত্পাদন সারণী থেকে আপডেটটি অর্জন করা অনেক ব্যয়বহুল lier টেবিল একটি TVP সঙ্গে, পরামিতি মূলত হয় উপস্থাপনকারী টেবিল, আমি কিচ্ছু আমি আগে সাথে করতে চান / মূল সন্নিবেশ পর এটা করতে পারেন।

  • আমি ডুপ-চেকিং, ক্লিনআপ কোড এবং বাল্ক সন্নিবেশগুলির সাথে সম্পর্কিত ওভারহেডের সমস্ত কিছু সরিয়ে ফেলতে পারি।

  • যদি সার্ভারটি একবারে এই লেনদেনগুলির মধ্যে কয়েকটি পেয়ে যায় তবে স্টেজিং টেবিল বা টেম্পডিবিতে লক কনটেন্ট নিয়ে উদ্বেগের দরকার নেই (আমরা এটি এড়াতে চেষ্টা করি, তবে এটি ঘটে)।

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

সুতরাং - যে কেউ এসকিউএল সার্ভার ২০০৮ এর সাথে যথেষ্ট স্বাচ্ছন্দ্য বোধ করেন তিনি চেষ্টা করেছেন বা কমপক্ষে এটি তদন্ত করেছেন, রায় কী? Sayোকানোর জন্য, ধরা যাক, কয়েকশ থেকে কয়েক হাজার সারি, প্রায়শই ঘন ঘন ভিত্তিতে ঘটছে, টিভিপিগুলি কি সরিষা কাটবে? বাল্ক সন্নিবেশগুলির তুলনায় পারফরম্যান্সে কি উল্লেখযোগ্য পার্থক্য রয়েছে?


আপডেট: এখন 92% কম প্রশ্ন চিহ্ন সহ!

(একে: পরীক্ষার ফলাফল)

36-পর্যায়ের স্থাপনার প্রক্রিয়াটির মতো অনুভব করার পরে শেষ ফলাফলটি এখন উত্পাদনে। উভয় সমাধানের ব্যাপকভাবে পরীক্ষা করা হয়েছিল:

  • ভাগ করা-ফোল্ডার কোডটি ছড়িয়ে দেওয়া এবং ব্যবহার করে SqlBulkCopy ক্লাসটি সরাসরি করা;
  • টিভিপি সহ একটি সঞ্চিত পদ্ধতিতে স্যুইচ করা।

ঠিক তাই পাঠকরা এই তথ্যটির নির্ভরযোগ্যতা সম্পর্কে যে কোনও সন্দেহ দূর করতে, ঠিক কী পরীক্ষা করা হয়েছিল তার একটি ধারণা পেতে পারেন , এই আমদানি প্রক্রিয়াটি আসলে কী করে তার আরও বিস্তারিত ব্যাখ্যা এখানে দেওয়া হয়েছে :

  1. একটি টেম্পোরাল ডেটা সিকোয়েন্স দিয়ে শুরু করুন যা প্রায় 20-50 ডেটা পয়েন্ট (যদিও এটি কখনও কখনও কয়েকশো বেশি হতে পারে) থেকে শুরু করে;

  2. এটিতে পুরো একগুচ্ছ ক্রেজি প্রসেসিং করুন যা বেশিরভাগ ডাটাবেসের চেয়ে আলাদা। এই প্রক্রিয়াটি সমান্তরাল, সুতরাং (1) এর সিকোয়েন্সগুলির প্রায় 8-10 একই সময়ে প্রক্রিয়াজাত করা হচ্ছে। প্রতিটি সমান্তরাল প্রক্রিয়া 3 অতিরিক্ত সিকোয়েন্স তৈরি করে।

  3. সমস্ত 3 টি সিকোয়েন্স এবং আসল সিকোয়েন্স নিন এবং তাদের একটি ব্যাচে সংযুক্ত করুন।

  4. এখন 8-10-সমাপ্ত সমস্ত প্রসেসিংয়ের কাজগুলি থেকে একটি বড় সুপার ব্যাচে বিচগুলি একত্রিত করুন।

  5. BULK INSERTকৌশলটি (পরবর্তী পদক্ষেপ দেখুন), অথবা টিভিপি কৌশল (আট ধাপে এড়িয়ে যান) ব্যবহার করে এটি আমদানি করুন ।

  6. SqlBulkCopy4 টি স্থায়ী মঞ্চের টেবিলগুলিতে পুরো সুপার-ব্যাচটি ফেলার জন্য ক্লাসটি ব্যবহার করুন ।

  7. সঞ্চিত পদ্ধতি চালান যা (ক) বেশ কয়েকটি JOINশর্ত সহ টেবিলের ২ টিতে একত্রে একত্রিত করার পদক্ষেপগুলি সম্পাদন করে এবং তারপরে (খ) একটি সম্পাদন করেMERGE একত্রিত এবং অ-সংগৃহীত ডেটা উভয় ব্যবহার করে production টি উত্পাদন টেবিলের উপর করে। (সমাপ্ত)

    বা

  8. সংযুক্ত করতে ডেটাযুক্ত 4 টি DataTableঅবজেক্ট তৈরি করুন ; এর মধ্যে 3 টিতে সিএলআর প্রকার রয়েছে যা দুর্ভাগ্যক্রমে ADO.NET টিভিপিগুলি যথাযথভাবে সমর্থন করে না, তাই তারা স্ট্রিং উপস্থাপনা হিসাবে চালিত হতে হবে, যা পারফরম্যান্সকে কিছুটা ব্যথা দেয়।

  9. টিভিপিগুলিকে একটি সঞ্চিত পদ্ধতিতে ফিড দিন, যা মূলত (7) এর মতো একই প্রক্রিয়াজাতকরণ করে তবে সরাসরি প্রাপ্ত টেবিলগুলি দিয়ে। (সমাপ্ত)

ফলাফলগুলি যুক্তিসঙ্গতভাবে নিকটে ছিল, তবে টিভিপি পদ্ধতির পরিশেষে গড়ের চেয়ে আরও ভাল পারফরম্যান্স করা হয়েছিল, এমনকি যখন ডাটা অল্প পরিমাণে 1000 সারি অতিক্রম করে।

নোট করুন যে এই আমদানি প্রক্রিয়াটি পর পর কয়েক হাজার বার চালিত হয়, তাই একীভূতকরণের সমস্ত শেষ করতে কত ঘন্টা (হ্যাঁ, ঘন্টা) লেগেছিল তা গণনা করে গড় গড় পাওয়া খুব সহজ ছিল।

মূলত, একটি গড় মার্জ সম্পূর্ণ হতে প্রায় 8 সেকেন্ড সময় নেয় (সাধারণ বোঝার নীচে)। নেটবিআইওএস কলডেজ সরানো এবং SqlBulkCopyসময়টি প্রায় হ্রাস করে প্রায় 7 সেকেন্ডে স্যুইচ করা । টিভিপিগুলিতে স্যুইচ করা সময়টি প্রতি ব্যাচে সময়কে 5.2 সেকেন্ডে কমিয়ে দেয় । এটি এমন একটি প্রক্রিয়ার জন্য থ্রুপুটটিতে 35% উন্নতি যার চলমান সময়টি কয়েক ঘন্টা পরিমাপ করা হয় - তাই মোটেও খারাপ নয়। এটি একটি 25% ডলার উন্নতিও হয়েছেSqlBulkCopy

আমি প্রকৃতপক্ষে যথেষ্ট আত্মবিশ্বাসী যে এর চেয়ে প্রকৃত উন্নতি উল্লেখযোগ্যভাবে বেশি ছিল। পরীক্ষার সময় এটি স্পষ্ট হয়ে যায় যে চূড়ান্ত সংশ্লেষটি আর সমালোচনামূলক পথ নয়; পরিবর্তে, ওয়েব সার্ভিস যা ডেটা প্রসেসিংয়ের সমস্ত কাজ করে যাচ্ছিল অনুরোধের সংখ্যার আওতায় আসার শুরু হয়েছিল। কিছু ক্ষেত্রে আমরা ধারাবাহিকভাবে সংশ্লেষের মধ্যে কয়েকটি অলস সেকেন্ডের ব্যবধানটি দেখছিলাম। সামান্য ব্যবধান ছিল, তবে ব্যবহারের সময় অনেক ছোট (আধ সেকেন্ড বা তার বেশি) SqlBulkCopy। তবে আমি মনে করি এটি অন্য দিনের জন্য গল্প হয়ে উঠবে।

উপসংহার: টেবিল-মূল্যবান প্যারামিটারগুলি BULK INSERTমাঝারি আকারের ডেটা সেটগুলিতে অপারেটিং জটিল আমদানি + ট্রান্সফর্ম প্রক্রিয়াগুলির জন্য অপারেশনগুলির চেয়ে সত্যই কার্য সম্পাদন করে।


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

অন্য কথায়, আমাদের ইতিমধ্যে প্রক্রিয়াটির জন্য পর্যাপ্ত অন্তর্দৃষ্টি রয়েছে এবং একটি মঞ্চ টেবিলের সুরক্ষার প্রয়োজন নেই; আমাদের প্রথম স্থানে স্টেজিং টেবিল থাকার একমাত্র কারণ ছিল আমাদের যে বিবৃতি INSERTএবং UPDATEঅন্যথায় আমাদের অন্যথায় ব্যবহার করতে হত সেগুলি সম্পর্কে আঘাত করা এড়ানো । মূল প্রক্রিয়াতে, মঞ্চের ডেটা কেবলমাত্র দ্বিতীয় সেকেন্ডের ভগ্নাংশের জন্য মঞ্চ টেবিলে থাকত, সুতরাং এটি রক্ষণাবেক্ষণ / রক্ষণাবেক্ষণের শর্তাদির কোনও মূল্য যুক্ত করে নি।

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

তাই সেখানে যদি আপনি এটি আছে। পয়েন্টটি সর্বাধিক প্রাসঙ্গিক লিঙ্কটি অনুসন্ধানের জন্য টিটোনিতে যায় তবে আমি অন্যান্য প্রতিক্রিয়াগুলিও প্রশংসা করি। আবার ধন্যবাদ!


এটি নিজেই একটি আশ্চর্যজনক প্রশ্ন, আমি অনুভব করি আপডেটের অংশটি একটি উত্তরে হওয়া উচিত;)
মার্ক ২৩৩77

উত্তর:


10

আমি সত্যিই TVP সঙ্গে অভিজ্ঞতা না থাকে এখনো অবশ্য একটা চমৎকার পারফরম্যান্স তুলনা দুটিই MSDN মধ্যে চার্ট বনাম বাল্ক ঢোকান হয় এখানে

তারা বলে যে বাল্ক ইনসার্টের স্টার্টআপ ব্যয় বেশি, তবে এরপরে দ্রুত faster দূরবর্তী ক্লায়েন্টের দৃশ্যে তারা প্রায় 1000 টি সারিতে লাইন আঁকেন ("সরল" সার্ভার যুক্তির জন্য)। তাদের বর্ণনাটি বিচার করে আমি বলব টিভিপ ব্যবহার করে আপনার ভাল হওয়া উচিত। পারফরম্যান্স হিট - যদি কোনও হয় - সম্ভবত তা উপেক্ষিত এবং স্থাপত্য সুবিধাগুলি খুব ভাল বলে মনে হচ্ছে।

সম্পাদনা করুন: সাইড নোটে আপনি সার্ভার-লোকাল ফাইলটি এড়াতে পারবেন এবং এখনও এসকিএলবুল্ককপি অবজেক্টটি ব্যবহার করে বাল্ক কপি ব্যবহার করতে পারেন। একটি ডেটা টেবিল কেবল পপুলেট করুন এবং এটিকে একটি স্কেলবুলকপি ইনস্ট্যান্সের "WritToServer" -Modod এ খাওয়ান। ব্যবহার করা সহজ এবং খুব দ্রুত।


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

হ্যাঁ লিঙ্কটি আকর্ষণীয়। @ অ্যারোনট - এইরকম পরিস্থিতিতে, সম্ভাব্য পদ্ধতির পারফরম্যান্সটি অনুসন্ধান এবং বিশ্লেষণ করার পক্ষে এটি সর্বদাই ভাল, সুতরাং আমি আপনার অনুসন্ধানগুলি শুনতে আগ্রহী!
অ্যাডা দ্যাদেভ

7

@ টিটোনির উত্তর প্রদত্ত লিঙ্কটির সাথে সম্পর্কিত চার্টটি প্রসঙ্গে বিবেচনা করা দরকার। আমি নিশ্চিত নই যে সেই সুপারিশগুলিতে প্রকৃত গবেষণা কতখানি গেছে (এছাড়াও নোট করুন যে চার্টটি কেবলমাত্র সেই ডকুমেন্টেশনের সংস্করণ 2008এবং 2008 R2সংস্করণগুলিতে উপলব্ধ রয়েছে )।

অন্যদিকে এসকিউএল সার্ভার গ্রাহক উপদেষ্টা টিমের এই শ্বেতপত্র রয়েছে: টিভিপি দিয়ে সর্বাধিকীকরণের মাধ্যমে

আমি ২০০৯ সাল থেকে টিভিপি ব্যবহার করে আসছি এবং কমপক্ষে আমার অভিজ্ঞতাতে দেখেছি যে কোনও অতিরিক্ত যুক্তির প্রয়োজনীয়তা ছাড়াই গন্তব্য সারণিতে সহজ thanোকানো ছাড়া অন্য কোনও কিছুর জন্য (যা খুব কমই ঘটে থাকে), তবে টিভিপিগুলি সাধারণত আরও ভাল বিকল্প।

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

প্রশ্নে করা পরীক্ষার বিষয়ে, আমি মনে করি এটি মূলত যা পাওয়া গেছে তার থেকে আরও দ্রুত দেখানো যেতে পারে:

  1. আপনার অ্যাপ্লিকেশনটির জন্য টিভিপিতে মানগুলি প্রেরণের বাইরে এটি ব্যবহার না করা আপনি কোনও ডেটা টেবিল ব্যবহার করবেন না। IEnumerable<SqlDataRecord>ইন্টারফেস ব্যবহার করা দ্রুত এবং কম স্মৃতি ব্যবহার করে কারণ আপনি সংগ্রহটি কেবলমাত্র ডিবিতে প্রেরণে মেমরিতে নকল করছেন না। আমি নিম্নলিখিত জায়গায় এই নথিপত্র আছে:
  2. টিভিপিগুলি সারণী ভেরিয়েবল এবং যেমন পরিসংখ্যান বজায় রাখে না। অর্থ, তারা ক্যোরি অপটিমাইজারের কাছে কেবল 1 টি সারি রয়েছে বলে প্রতিবেদন করে। সুতরাং, আপনার প্রচারে, হয়:
    • সাধারণ নির্বাচন ছাড়া অন্য যে কোনও কিছুর জন্য টিভিপি ব্যবহার করে যে কোনও প্রশ্নের উপর বিবৃতি-স্তরের পুনরায় সংকলন ব্যবহার করুন: OPTION (RECOMPILE)
    • একটি স্থানীয় অস্থায়ী টেবিল তৈরি করুন (অর্থাত্ একক #) এবং টেম্প টেবিলটিতে টিভিপির সামগ্রীগুলি অনুলিপি করুন

4

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

আপনি নেট ব্যবহার করেন কিনা তা উল্লেখ করবেন না, তবে পূর্ববর্তী সমাধানগুলি অনুকূল করতে আমি যে পদ্ধতি গ্রহণ করেছি তা হ'ল স্ক্যালবুলকপি ক্লাসটি ব্যবহার করে প্রচুর পরিমাণে ডেটা লোড করা - আপনার আগে কোনও ফাইলে ডেটা লেখার দরকার নেই before লোডিং, কেবল স্কেলবুল্ককপি ক্লাসটি দিন (উদাহরণস্বরূপ) একটি ডেটা টেবিল - এটি ডিবিতে ডেটা to োকানোর দ্রুততম উপায়। 5-10K সারি বেশি নয়, আমি এটি 750K সারি পর্যন্ত ব্যবহার করেছি। আমার সন্দেহ হয় যে সাধারণভাবে কয়েক শ সারি এটি একটি টিভিপি ব্যবহার করে কোনও বিশাল পার্থক্য তৈরি করবে না। তবে স্কেলিং সীমিত আইএমএইচও হবে।

সম্ভবত এসকিউএল ২০০৮- এর নতুন মার্জ কার্যকারিতা আপনার উপকার করবে?

এছাড়াও, যদি আপনার বিদ্যমান স্টেজিং টেবিলটি এমন একক টেবিল যা এই প্রক্রিয়াটির প্রতিটি উদাহরণের জন্য ব্যবহৃত হয় এবং আপনি বিতর্ক ইত্যাদি সম্পর্কে উদ্বিগ্ন হন, আপনি কি প্রতিবারই একটি নতুন "অস্থায়ী" তবে শারীরিক মঞ্চের টেবিল তৈরি করার বিষয়টি বিবেচনা করেছেন, তারপরে তা ফেলে দিচ্ছেন? দিয়ে শেষ?

নোট আপনি কোনও সূচক ছাড়াই পপুলেশন করে এই স্টেজিং টেবিলের মধ্যে লোডটি অনুকূল করতে পারেন। তারপরে একবার জনবহুল হয়ে গেলে, প্রয়োজনীয় পয়েন্টগুলিতে প্রয়োজনীয় সূচিগুলি যুক্ত করুন (অনুকূল পড়ার পারফরম্যান্সের জন্য FILLFACTOR = 100, এই মুহুর্তে এটি আপডেট হবে না)।


আমি নেট ব্যবহার করি না, এবং প্রক্রিয়াটি পূর্ববর্তীতে ঘটে SqlBulkCopyএবং কেবল কখনও পরিবর্তন হয় নি। সে সম্পর্কে আমাকে স্মরণ করিয়ে দেওয়ার জন্য ধন্যবাদ, এটি পুনরায় দেখার মতো হতে পারে। MERGEইতিমধ্যে ব্যাপকভাবে ব্যবহৃত হয়, এবং অস্থায়ী সারণীগুলির আগে একবার চেষ্টা করা হয়েছিল তবে ধীর এবং পরিচালনা করা আরও কঠিন বলে মনে হয়। ইনপুট জন্য ধন্যবাদ!
অ্যারোনআউট

-2

মঞ্চ টেবিল ভাল! সত্যিই আমি এটি অন্য কোনওভাবে করতে চাই না। কেন? কারণ ডেটা আমদানি অপ্রত্যাশিতভাবে পরিবর্তিত হতে পারে (এবং প্রায়শই আপনি উপায়ে দেখতে পারবেন না, যেমন কলামগুলি এখনও প্রথম নাম এবং শেষ নাম হিসাবে ডাকা হত কিন্তু শেষ নাম কলামে প্রথম নাম ডেটা ছিল, উদাহরণস্বরূপ, উদাহরণ না বেছে নেওয়া এলোমেলোভাবে) আপনি যখন মেমরি টেবিলটিতে একটি ব্যবহার করেন তখন আমার পক্ষে মনে করা শক্ত হয়। আমি প্রচুর লোককে জানি যারা আমার জীবন যাপনের জন্য আমদানি করে এবং তাদের সকলেই স্টেজিং টেবিলগুলি ব্যবহার করার পরামর্শ দেয়। আমার সন্দেহ আছে এর কারণ রয়েছে।

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

এবং ঠিক কীভাবে আপনি সমস্ত ডেটা পরিষ্কার করার কাজগুলি সরিয়ে ফেলছেন? আপনি এগুলি অন্যভাবে করছেন, তবে তাদের এখনও করা দরকার। আবার, আপনার বর্ণনার পদ্ধতিটি পরিবর্তন করা খুব ঝুঁকিপূর্ণ।

ব্যক্তিগতভাবে আমার কাছে মনে হচ্ছে আপনি নতুন খেলনা নিয়ে খেলার সুযোগ না পেয়ে পুরানো কৌশলগুলি ব্যবহার করে কেবল ক্ষুদ্ধ হয়েছেন। আপনার কাছে বাল্ক সন্নিবেশ করা 2000 বাদে অন্য পরিবর্তন করতে চাওয়ার কোনও বাস্তব ভিত্তি নেই বলে মনে হয়।


27
এসকিউএল ২০০৮ প্রায় ২ বছর হয়ে গেছে এবং এই প্রক্রিয়াটি যুগ যুগ ধরে চলছিল এবং আমি প্রথমবার এটি পরিবর্তন করার বিষয়টি বিবেচনা করেছি । শেষে স্পর্শকাতর মন্তব্য কি সত্যিই প্রয়োজনীয় ছিল?
অ্যারোনআউট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.