এসকিউএল সার্ভার - প্রাথমিক কী ছাড়াই বড় টেবিলটি রফতানি করুন


9

এসকিউএল সার্ভার এবং মাইএসকিউএল এর মধ্যে একটি প্রাথমিক কী ছাড়াই আমাকে একটি বৃহত টেবিল ~ 500 মিলিয়ন সারি সিঙ্ক করতে হবে। সারণীতে কেবল একটি ক্লাস্টারযুক্ত যৌগিক অ-অনন্য সূচক রয়েছে।

সার্ভারগুলির মধ্যে আমার একটি ওডিবিসি সংযোগ রয়েছে, তবে ~ 8 মিলিয়ন সারিগুলির একটি আমদানি প্রায় 45 মিনিট সময় নিয়েছিল, তাই আমি বিশ্বাস করি যে কোনও সময়ে বাধা সৃষ্টি হতে পারে বলে আরও বড় একক আমদানি অযৌক্তিক হবে। আমি বিদ্যমান টেবিলের কাঠামো পরিবর্তন করতে পারি না, আমি অন্যান্য টেবিলগুলি যুক্ত করতে পারি। আরও পড়ার পরে, অফসেট / আনতে বড় টেবিলের জন্য বিকল্প নয়। "নির্বাচন করুন ... যেখানে x এবং ... এর মধ্যে ..." কোনও বিকল্প নয় কারণ আমার কাছে কোনও অনন্য কী নেই।

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


এটি পুনরাবৃত্তি হবে (ব্যবহারযোগ্য অপারেশন) বা এক সময়ের অপারেশন?
বোগদান বোগদানভ

প্রাথমিক রফতানি হবে এক সময়ের ক্রিয়াকলাপ, নতুন রেকর্ড বা আপডেটের মতো সিঙ্ক পরিবর্তনগুলি পুনরাবৃত্তি হওয়া উচিত। সিডিসি কোনও বিকল্প নয়, তবে প্রাথমিক স্থানান্তরের পরে আরও তদন্ত করবে।
কেউ নেই

আমি মনে করি এই সম্পর্কে আপনাকে সহায়তা পেতে পুরো প্রক্রিয়াটি আরও বিশদে ব্যাখ্যা করতে হবে (মনে হচ্ছে আপনার খুব জটিল সমস্যা আছে)
বোগদান বোগদানভ

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

হ্যাঁ, আরএলএফ, আমি সম্মত। কলামগুলি সমস্ত অন্তর্নির্মিত, A, B, C, D, E. ক্লাস্টার্ড কীটি এবিসিতে রয়েছে। একটি সংমিশ্রণ এবিসি অনন্য নয়, একটি সংমিশ্রণও এবিসিডি নয়। একটি অ-অনন্য কলাম (গুলি) দ্বারা "অর্ডার" করা কি আমাকে ব্যাচগুলিতে পুরো টেবিলটি রফতানি করার অনুমতি দেবে? এবং বোগদান বোদগানভ, স্ট্যাক প্ল্যাটফর্ম জটিল সমস্যাগুলিকে নিরুৎসাহিত করে, কেবল প্রশ্নের সমাধান করা আরও ভাল। সারিগুলির ক্ষতি ছাড়াই কীভাবে সম্পূর্ণ বড় টেবিলটি ব্যাচগুলিতে যথাসম্ভব দ্রুত রপ্তানি করা যায়?
কেউ নেই

উত্তর:


0

ধরে
নিই যে সোর্স টেবিলের বিপরীতে আপনার কাছে আপডেট আছে বা মুছা নেই আপনি নিম্নলিখিত চেষ্টা করতে পারেন: ১. সিটিএএস সিনট্যাক্স ব্যবহার করে বিদ্যমান টেবিলের একটি অনুলিপি তৈরি করুন (এটি এসকিউএল সার্ভারের জন্য SELECT * into source_table_copy FROM source_table)। বিশাল টেবিলগুলির জন্যও এই জাতীয় অপারেশন খুব দ্রুত।
২. এতে নতুন রেকর্ড [গুলি] অনুলিপি after insertকরে ট্রিগার যুক্ত করুন । 3. এখন যখন সমস্ত নতুন রেকর্ড যান হিসাবে ভাল, এবং আপনি ব্যাচে মাইএসকিউএল অনুলিপি টেবিল থেকে তথ্য স্থানান্তর করতে পারেন। উদাহরণস্বরূপ, যদি আপনার 2 টি সার্ভারের মধ্যে একটি লিঙ্ক থাকে, তবে সমস্ত কিছু টিএসকিউএল সঞ্চিত প্রক্রিয়াটির অভ্যন্তরে করা যেতে পারে। উদাহরণস্বরূপ এমন এক টুকরো কোড যা 20 টি রেকর্ডে নতুন সার্ভারে চলেছে এমনটি দেখতে পেলsource_tablesource_table_copy
source_tablesource_table_copy

 --declare table variable to keep deleted records until they delivered to target host 
  BEGIN TRANSACTION;
  DELETE TOP (20) FROM source_table_copy OUTPUT DELETED.* INTO @Table_Var;

  --insert data into linked server , or to csv file
  COMMIT; 

ডেটা পড়তে CURSOR ব্যবহার করা এবং তারপরে দফাটি মুছে ফেলা সম্ভব where current of

** আদর্শভাবে আপনার source_tableপ্রথম ধাপের সময় অ্যাপ্লিকেশনগুলি preventোকানো থেকে আটকাতে হবে এটি যদি একেবারেই অসম্ভব, তবে আমি ট্রিগারটি নিয়ে যাব after insertযা প্রথম ধাপের আগে যুক্ত করা হবে এবং ঠিক কাজটি শেষ হওয়ার পরে মুছে ফেলা হবে যা আমি অন্য কোনও টেবিলে ডেটা অনুলিপি করতে পারি can পরে একত্রিত করুন source_table_copy


সমাধানের জন্য আপনাকে ধন্যবাদ, আমি পাশাপাশি কিছু সাধারণ চেষ্টা করছিলাম। আমি সিটিএএস সিনট্যাক্স চেষ্টা করব এটি দেখার বিষয়গুলি গতি বাড়িয়ে দেয় কিনা। ফলোআপ প্রশ্ন, যদি আপনি কিছু মনে করেন না: "inোকানোর পরে ট্রিগার" পারফরম্যান্সকে প্রভাবিত করবে?
কেউ নেই

যেহেতু ট্রিগার বডিটি খুব সাধারণ (কেবলমাত্র অন্য টেবিলে ডেটা .োকানো), পারফরম্যান্সের প্রভাব কম হবে be
a1ex07
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.