এসএসআইএস ডেটা ফ্লো ডেটা অ্যাক্সেস মোড - দ্রুত লোড বনাম 'টেবিল বা দেখুন' এর বিন্দুটি কী?


9

এসকিউএল সার্ভার বিজনেস ইন্টেলিজেন্স ডেভেলপমেন্ট স্টুডিও ব্যবহার করে, আমি আমার এসকিউএল সার্ভার টেবিলগুলিতে ডেটা আমদানি করতে ওএলডি ডিবি গন্তব্য ডেটাতে প্রচুর ফ্ল্যাট ফাইল করি। OLE DB গন্তব্য সম্পাদকের "ডেটা অ্যাক্সেস মোড" এর অধীনে, এটি "টেবিল বা দেখুন - দ্রুত লোড" এর পরিবর্তে "টেবিল বা দেখুন" এর ডিফল্ট হয়। পার্থক্য কি; কেবলমাত্র স্বতঃস্ফূর্ত পার্থক্য যা আমি বুঝতে পারি তা হ'ল দ্রুত লোড ডেটা খুব দ্রুত স্থানান্তর করে।

উত্তর:


13

ওএল ডিবি গন্তব্য উপাদানগুলির ডেটা অ্যাক্সেস মোড দুটি স্বাদে আসে - দ্রুত এবং অ-দ্রুত।

দ্রুত, হয় "টেবিল বা দেখুন - দ্রুত লোড" বা "টেবিল বা দেখুন নাম ভেরিয়েবল - দ্রুত লোড" মানে ডেটা সেট-ভিত্তিক ফ্যাশনে লোড হবে।

ধীরে ধীরে - হয় "টেবিল বা দেখুন" বা "টেবিল বা দেখুন নাম ভেরিয়েবল" এর ফলে এসএসআইএস ডাটাবেসে সিঙ্গেলটন প্রবেশ বিবরণী জারি করবে। আপনি যদি 10, 100, এমনকি 10000 সারি লোড করে থাকেন তবে দুটি পদ্ধতির মধ্যে সম্ভবত প্রশংসনীয় পারফরম্যান্সের পার্থক্য নেই। যাইহোক, এক পর্যায়ে আপনি আপনার এসকিউএল সার্ভারের উদাহরণটি এই সমস্ত ছোট্ট অনুরোধের সাথে পরিপূর্ণ করতে চলেছেন। অতিরিক্তভাবে, আপনি আপনার লেনদেনের লগ থেকে হ্যাককে অপব্যবহার করতে চলেছেন।

আপনি কখনই নন-ফাস্ট পদ্ধতি চাইবেন? খারাপ ডেটা। যদি আমি 10000 সারি ডেটাতে প্রেরণ করি এবং 9999 তম সারিতে 2015-02-29 তারিখ থাকে, আপনার কাছে 10 কে পরমাণু প্রবেশ এবং চুক্তি / রোলব্যাক থাকবে। যদি আমি দ্রুত পদ্ধতিটি ব্যবহার করতাম তবে 10 কে সারিগুলির পুরো ব্যাচটি হয় সবই বাঁচিয়ে রাখবে বা তাদের কোনওটিই সংরক্ষণ করবে না। এবং যদি আপনি জানতে চান যে কোন সারি (গুলি) কে ভুল করে আউট করা হয়েছে, তবে আপনার গ্রানুলারিটির সর্বনিম্ন স্তর হবে 10 কে সারি।

এখন, যত তাড়াতাড়ি সম্ভব ডেটা লোড হওয়ার এবং এখনও নোংরা ডেটা হ্যান্ডেল করার পন্থা রয়েছে। এটি একটি ক্যাসকেডিং ব্যর্থতা পদ্ধতির এবং দেখতে এটির মতো কিছু লাগে

ক্যাসকেডিং ব্যর্থতা .োকান

ধারণাটি হ'ল যে আপনি একটি শটে যথাসম্ভব সন্নিবেশ করার জন্য সঠিক আকারটি খুঁজে পেয়েছেন তবে যদি আপনি খারাপ ডেটা পান তবে আপনি খারাপ সারিগুলিতে যাওয়ার জন্য ক্রমাগতভাবে ছোট ছোট ব্যাচে ডেটা পুনরুদ্ধার করার চেষ্টা করতে যাচ্ছেন। এখানে আমি 10000 এর সর্বাধিক সন্নিবেশ প্রতিশ্রুতি আকার (ফাস্টল্ডএডম্যাক্সইনসেটকমিট) দিয়ে শুরু করেছি the ত্রুটি সারি স্বরূপ, আমি এটিকে এ Redirect Rowথেকে পরিবর্তন করি Fail Component

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

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

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


5

দ্রুত লোড বিকল্পগুলির অধীনে দ্রুত লোডটি নথিবদ্ধ হয় is

  • আমদানি করা ডেটা ফাইল থেকে পরিচয় মান রাখুন বা এসকিউএল সার্ভার দ্বারা নির্ধারিত অনন্য মানগুলি ব্যবহার করুন।

  • বাল্ক লোড অপারেশনের সময় একটি নাল মান ধরে রাখুন।

  • বাল্ক আমদানি ক্রিয়াকলাপের সময় লক্ষ্য টেবিলের উপর সীমাবদ্ধতাগুলি দেখুন বা দেখুন।

  • বাল্ক লোড ক্রিয়াকলাপের সময়কালের জন্য একটি টেবিল-স্তরের লক অর্জন করুন। ব্যাচে সারিগুলির সংখ্যা এবং প্রতিশ্রুতিবদ্ধ আকার নির্দিষ্ট করুন।


পার্থক্য কি; কেবলমাত্র স্বতঃস্ফূর্ত পার্থক্য যা আমি বুঝতে পারি তা হ'ল দ্রুত লোড ডেটা খুব দ্রুত স্থানান্তর করে।

হুডের অধীনে, table or viewপ্রতিটি সারিতে বনাম সন্নিবেশ করানোর জন্য পৃথক এসকিউএল কমান্ড table or view - with fast loadব্যবহার করবে বাল্ক ইনসার্ট কমান্ডটি ব্যবহার করবে।

আপনি যদি উপরের বিকল্পগুলি দেখতে পান যা বাল্ক ইনসার্টে উপলভ্য যেমন number of rows in the batch= ROWS_PER_BATCHএবং commit size=BATCHSIZE

আর একটি দৃশ্য হবে ..

ডিফল্ট সর্বোচ্চ সন্নিবেশ প্রতিশ্রুতি আকার (2147483647) খুব বেশি too সুতরাং উদাহরণস্বরূপ আপনি 500K সারি সন্নিবেশ করছেন এবং পিকে লঙ্ঘনের কারণে ব্যাচ ব্যর্থ হয়েছে। এই দৃশ্যে, আপনি যখন খুব দ্রুত লোড বিকল্পটি ব্যবহার করেন তখন পুরো ব্যাচটি ব্যর্থ হবে। আপনি ত্রুটির বিবরণও পেতে সক্ষম হবেন না।

আপনার table or viewগন্তব্য ত্রুটি আউটপুট হিসাবে এটি থাকতে পারে । 500K এর মধ্যে, আপনি 5K এর সন্নিবেশ প্রতিশ্রুতি দিয়ে শুরু করতে দ্রুত লোড ব্যবহার করেন। যদি সেই ব্যাচের 1 টি সারি ব্যর্থ হয়, আপনি সেই 5 কে ব্যাচটি table or viewলোড করতে পুনর্নির্দেশ করবেন - যা সারি সারি ব্যবহার করে 5K সারিগুলির জন্য সন্নিবেশ করান এবং আপনি ত্রুটিটি table or viewএকটি সমতল ফাইলে পুনর্নির্দেশ করতে পারেন .. যাতে কোনও সারি যদি ব্যাচ ব্যর্থ হয় তবে যদি 5 কে, আপনি ব্যর্থতার কারণ কী তা চিহ্নিত করতে সক্ষম হবেন।

উপরের পদ্ধতির সুবিধাটি হ'ল যদি সারিগুলির মধ্যে কোনওটি ব্যর্থ হয়, তবে এটি পুরো ব্যাচের জন্য বাল্ক ইনসার্ট (দ্রুত লোড) ব্যবহার করবে।

এসএসআইএস আফিকানোডো বিলিংক স্ট্যাকওভারফ্লোতে একই জাতীয় প্রশ্নের উত্তর দিয়েছেন

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