সুতরাং আমার স্টেজিং টেবিল থেকে ডেটা নেওয়ার জন্য এবং এটি আমাদের ডেটামার্টে সরাতে আমার কাছে একটি সাধারণ বাল্ক সন্নিবেশ প্রক্রিয়া রয়েছে।
প্রক্রিয়াটি "প্রতি ব্যাচ সারি" এর জন্য ডিফল্ট সেটিংস সহ একটি সহজ ডেটা ফ্লো টাস্ক এবং বিকল্পগুলি "ট্যাবলক" এবং "কোনও চেক সীমাবদ্ধতা" নয়।
টেবিলটি মোটামুটি বড়। ৫৮7,১62২,৯86 একটি ডেটা আকারের সাথে 201 গিগাবাইট এবং 49 জিবি সূচী স্পেস। টেবিলের জন্য ক্লাস্টারড ইনডেক্স।
CREATE CLUSTERED INDEX ImageData ON dbo.ImageData
(
DOC_ID ASC,
ACCT_NUM ASC,
MasterID ASC
)
এবং প্রাথমিক কীটি হ'ল:
ALTER TABLE dbo.ImageData
ADD CONSTRAINT ImageData
PRIMARY KEY NONCLUSTERED
(
ImageID ASC,
DT_CRTE_DOC ASC
)
এখন আমাদের একটা সমস্যা হচ্ছে যেখানে BULK INSERT
এসএসআইএসের মাধ্যমে অবিশ্বাস্যভাবে ধীর গতিতে চলছে। এক মিলিয়ন সারি toোকাতে 1 ঘন্টা। সারণীটি তৈরি করে এমন ক্যোয়ারী ইতিমধ্যে বাছাই করা হয়েছে এবং পপুলেট করার ক্যোয়ারী চালাতে এক মিনিটের মধ্যে সময় নেয়।
প্রক্রিয়াটি চলমান থাকাকালীন আমি বুক সন্নিবেশের অপেক্ষায় থাকা কোয়েরিটি দেখতে পাচ্ছি যা 5 থেকে 20 সেকেন্ডের মধ্যে যে কোনও সময় নেয় এবং এর অপেক্ষার প্রকারটি দেখায় PAGEIOLATCH_EX
। প্রক্রিয়াটি INSERT
একবারে প্রায় এক হাজার সারি সক্ষম ।
গতকাল আমার ইউএটি পরিবেশের বিরুদ্ধে এই প্রক্রিয়াটি পরীক্ষা করার সময় আমি একই সমস্যাটিতে চলে আসছিলাম। আমি কয়েকবার প্রক্রিয়াটি চালিয়ে যাচ্ছিলাম এবং এই ধীর সন্নিবেশের মূল কারণটি নির্ধারণ করার চেষ্টা করছি। তারপরে হঠাৎ এটি 5 মিনিটের নীচে চলতে শুরু করে। সুতরাং আমি একই ফলাফল দিয়ে আরও কয়েকবার চালিয়েছি। এছাড়াও 5 বালিক সন্নিবেশকারীদের সংখ্যা যা 5 সেকেন্ড বা তার চেয়েও বেশি অপেক্ষা করছিল তা শত শত ফর্ম থেকে নামিয়ে দেয়।
এখন এটি বিস্মিত হচ্ছে কারণ এটি কার্যকলাপের মতো আমাদের কিছুটা বিশাল ড্রপ বন্ধ করার মতো নয়।
সময়কালীন সিপিইউ কম হয়।
সময়গুলি যখন ধীর হয় ততক্ষণে ডিস্কে কম অপেক্ষা করা হয়।
5 মিনিটের মধ্যে প্রক্রিয়াটি চলমান সময়সীমার সময়ে ডিস্কের বিলম্বিতা আসলে বেড়ে যায়।
এবং এই প্রক্রিয়াটি খারাপভাবে চলতে থাকাকালীন আইও অনেক কম ছিল।
আমি ইতিমধ্যে যাচাই করেছি এবং ফাইলগুলি কেবল 70% পূর্ণ হওয়ায় কোনও ফাইলের বৃদ্ধি হয়নি। লগ ফাইল এখনও যেতে 50% আছে। ডিবি সিম্পল রিকভারি মোডে রয়েছে। ডিবিতে কেবল একটি ফাইল গ্রুপ রয়েছে তবে এটি 4 টি ফাইল জুড়ে ছড়িয়ে রয়েছে।
সুতরাং আমি কী আশ্চর্য করছি : কেন আমি এতগুলি বড় পরিমাণের সন্নিবেশগুলিতে এত বড় অপেক্ষা করার সময়টি দেখছিলাম। বি: কী ধরণের ম্যাজিক ঘটেছিল যা এটি দ্রুত চালিত করে?
সাইড নোট. এটি আজ আবার বোকাতির মতো চলে।
আপডেট করুন এটি বর্তমানে বিভাজনযুক্ত। তবে এটি এমন পদ্ধতিতে করা হয়েছে যা সেরা নির্বোধ।
CREATE PARTITION SCHEME [ps_Image] AS PARTITION [pf_Image]
TO ([FG_Image], [FG_Image], [FG_Image], [FG_Image])
CREATE PARTITION FUNCTION [pf_Image](datetime) AS
RANGE RIGHT FOR VALUES (
N'2011-12-01T00:00:00.000'
, N'2013-04-01T00:00:00.000'
, N'2013-07-01T00:00:00.000'
);
এটি মূলত 4 র্থ বিভাজনের সমস্ত ডেটা ছেড়ে দেয়। তবে যেহেতু এটি সমস্ত একই ফাইল গ্রুপে যাচ্ছে। এই ফাইলগুলিতে ডেটা বর্তমানে সমানভাবে বিভক্ত।
আপডেট 2 প্রক্রিয়াটি খারাপভাবে চলতে থাকে এগুলি সামগ্রিকভাবে অপেক্ষা করে।
আমি যে প্রক্রিয়াটি চালাতে সক্ষম হয়েছি সেই সময়কালের জন্য এটি অপেক্ষা করছে well
স্টোরেজ সাবসিস্টেমটি স্থানীয়ভাবে সংযুক্ত RAID, কোনও SAN জড়িত। লগগুলি একটি ভিন্ন ড্রাইভে রয়েছে। রাইড কন্ট্রোলারটি 1 জিবি ক্যাশে আকারের পিইআরসি এইচ 800 হয়। (ইউএটি জন্য) প্রোড একটি পিইআরসি (810)।
আমরা কোনও ব্যাকআপ না নিয়ে সাধারণ পুনরুদ্ধারটি ব্যবহার করছি। এটি একটি প্রযোজনার অনুলিপি থেকে রাতে পুনরুদ্ধার করা হয়।
IsSorted property = TRUE
ডেটা ইতোমধ্যে সাজানো থেকে আমরা এসএসআইএস এও সেট করেছি ।
PAGEIOLATCH_EX
এবং ASYNC_IO_COMPLETION
ইঙ্গিত করছে যে এটি ডিস্ক থেকে মেমরিতে ডেটা পেতে কিছুটা সময় নিয়েছে। এটি ডিস্ক সাবসিস্টেমের সমস্যার একটি সূচক হতে পারে, বা এটি মেমরির বিতর্ক হতে পারে। এসকিউএল সার্ভারে কত স্মৃতি উপলব্ধ রয়েছে?
ASYNC_NETWORK_IO
এর অর্থ এসকিউএল সার্ভার কোথাও কোনও ক্লায়েন্টকে সারি পাঠানোর অপেক্ষায় ছিল । আমি মনে করি যে এটি মঞ্চের সারণী থেকে এসএসআইএস সারি ব্যবহারের ক্রিয়াকলাপটি দেখাচ্ছে।