আমি নিম্নলিখিত পরীক্ষার চেষ্টা করেছি এবং অনুরূপ ফলাফল পেয়েছি। উভয় ক্ষেত্রেই, fn_dblog () রোলব্যাক সংঘটিত দেখায় এবং পরিস্থিতি 1 এর তুলনায় পরিস্থিতি 2 এ এটি দ্রুত ঘটবে বলে মনে হয়।
যাইহোক, আমি উভয় এমডিএফ এবং এলডিএফ একই একক বহিরাগত (ইউএসবি ২.০) ডিস্কে রেখেছি।
আমার প্রাথমিক উপসংহারটি হল যে এই ক্ষেত্রে রোলব্যাকের ক্রিয়াকলাপে কোনও পার্থক্য নেই এবং সম্ভবত কোনও স্পষ্ট গতির পার্থক্য I / O সাবসিস্টেম সম্পর্কিত। এই মুহূর্তে এটি আমার কর্ম অনুমান।
দৃশ্যপট 1:
- লগ ফাইল দিয়ে একটি ডেটাবেস তৈরি করুন যা 1MB থেকে শুরু হয়, 4MB খণ্ডে বৃদ্ধি পায় এবং সর্বোচ্চ আকার 100MB থাকে।
- একটি স্পষ্ট লেনদেন খুলুন, এটি 10 সেকেন্ডের জন্য চালান, এবং তারপরে ম্যানুয়ালি এটি এসএসএমএসের মধ্যে বাতিল করুন
- Fn_dblog () গণনা এবং লগ রিজার্ভ আকার দেখুন এবং DBCC SQLPERF (লগস্পেস) দেখুন
দৃশ্য 2:
- লগ ফাইল দিয়ে একটি ডেটাবেস তৈরি করুন যা 1MB থেকে শুরু হয়, 4MB খণ্ডে বৃদ্ধি পায় এবং সর্বোচ্চ আকার 100MB থাকে।
- একটি সুস্পষ্ট লেনদেন খুলুন, লগ সম্পূর্ণ ত্রুটি প্রদর্শিত না হওয়া পর্যন্ত এটি চালান
- Fn_dblog () গণনা এবং লগ রিজার্ভ আকার দেখুন এবং DBCC SQLPERF (লগস্পেস) দেখুন
পারফরম্যান্স মনিটরের ফলাফল:
দৃশ্যপট 1:
দৃশ্য 2:
কোড:
ব্যবহার [মাস্টার];
যাওয়া
যদি ডেটাবেসপ্রপেক্টেএক্স (এন'সাম্পলডিবি ', এন ভার্সন')> 0
BEGIN
পরিবর্তে ডেটাবেস [নমুনা বিবি] সেট করুন সিঙ্গেল_ইউসার
রোলব্যাক তাত্ক্ষণিকভাবে;
ড্রপ ডেটাবেস [স্যাম্পেলডিবি];
শেষ;
যাওয়া
প্রাথমিকভাবে ডেটাবেস [স্যাম্পেলডিবি] তৈরি করুন
(
নাম = এন'স্যাম্পলডিবি '
, FILENAME = N'E: \ ডেটা \ SampleDB.mdf '
, সাইজ = 3 এমবি
, FILEGROWTH = 1MB
)
লগ ইন করুন
(
NAME = N'SampleDB_log '
, FILENAME = N'E: \ ডেটা \ SampleDB_log.ldf '
, সাইজ = 1 এমবি
, MAXSIZE = 100MB
, FILEGROWTH = 4MB
);
যাওয়া
ব্যবহার [স্যাম্পেলডিবি];
যাওয়া
- একটি টেবিল যোগ করুন
টেবিল তৈরি করুন dbo.test
(
সি 1 চার (8000) নকল অনুলিপি ('এ', 8000) নয়
) অন [প্রাথমিক];
যাওয়া
- নিশ্চিত করুন যে আমরা ছদ্ম-সরল পুনরুদ্ধারের মডেল নই
ব্যাকআপ ডেটাবেস স্যাম্পলডবি
TO DISK = 'NUL';
যাওয়া
- লগ ফাইল ব্যাকআপ
ব্যাকআপ লগ নমুনাবিবি B
TO DISK = 'NUL';
যাওয়া
- ব্যবহৃত লগ স্পেস চেক করুন
ডিবিসিসি এসকিউএলপারফ (লগস্পেস);
যাওয়া
- fn_dblog () দিয়ে কয়টি রেকর্ড দৃশ্যমান?
Fn_dblog থেকে * নির্বাচন করুন (NULL, NULL); - আমার ক্ষেত্রে প্রায় 9
/ **********************************
দৃশ্যপট 1
********************************** /
- একটি নতুন লেনদেন খুলুন এবং তারপরে এটি রোল করুন
শুরু করুন ট্রান্সেকশন
ডিবিও.তম ডিফল্ট ভ্যালু অন্তর্ভুক্ত করুন;
যান 10000 - চলুন 10 সেকেন্ডের জন্য চালানো হয় এবং তারপরে এসএসএমএস ক্যোয়ারী উইন্ডোতে বাতিল চাপুন
- লেনদেন বাতিল করুন
- এটি শেষ হতে কয়েক সেকেন্ড সময় নেওয়া উচিত
- লেনদেনটি রোলব্যাক করার দরকার নেই, কারণ বাতিল ইতিমধ্যে আপনার পক্ষে তা করেছে।
-- এটা চেষ্টা করুন. আপনি এই ত্রুটি পাবেন
- এমএসজি 3903, স্তর 16, রাজ্য 1, লাইন 1
- রোলব্যাক ট্রান্সএকশন অনুরোধটির সাথে সম্পর্কিত কোনও বিগইন ট্রান্সএশন নেই।
রোলব্যাক ট্রান্সঅ্যাকশন;
- ব্যবহৃত লগ স্পেসটি কী? 100% এর উপরে।
ডিবিসিসি এসকিউএলপারফ (লগস্পেস);
যাওয়া
- fn_dblog () দিয়ে কয়টি রেকর্ড দৃশ্যমান?
নির্বাচন করুন *
Fn_dblog থেকে (NULL, NULL); - আমার ক্ষেত্রে প্রায় 91,926
- fn_dblog দ্বারা প্রদর্শিত মোট লগ রিজার্ভ ()?
নির্বাচন করুন সুম ([লগ রিজার্ভ]) হিসাবে [মোট লগ রিজার্ভ]
Fn_dblog থেকে (NULL, NULL); - প্রায় 88.72MB
/ **********************************
স্কেনারিও 2
********************************** /
- ডিবি উড়িয়ে দিয়ে আবার শুরু করুন
ব্যবহার [মাস্টার];
যাওয়া
যদি ডেটাবেসপ্রপেক্টেএক্স (এন'সাম্পলডিবি ', এন ভার্সন')> 0
BEGIN
পরিবর্তে ডেটাবেস [নমুনা বিবি] সেট করুন সিঙ্গেল_ইউসার
রোলব্যাক তাত্ক্ষণিকভাবে;
ড্রপ ডেটাবেস [স্যাম্পেলডিবি];
শেষ;
যাওয়া
প্রাথমিকভাবে ডেটাবেস [স্যাম্পেলডিবি] তৈরি করুন
(
নাম = এন'স্যাম্পলডিবি '
, FILENAME = N'E: \ ডেটা \ SampleDB.mdf '
, সাইজ = 3 এমবি
, FILEGROWTH = 1MB
)
লগ ইন করুন
(
NAME = N'SampleDB_log '
, FILENAME = N'E: \ ডেটা \ SampleDB_log.ldf '
, সাইজ = 1 এমবি
, MAXSIZE = 100MB
, FILEGROWTH = 4MB
);
যাওয়া
ব্যবহার [স্যাম্পেলডিবি];
যাওয়া
- একটি টেবিল যোগ করুন
টেবিল তৈরি করুন dbo.test
(
সি 1 চার (8000) নকল অনুলিপি ('এ', 8000) নয়
) অন [প্রাথমিক];
যাওয়া
- নিশ্চিত করুন যে আমরা ছদ্ম-সরল পুনরুদ্ধারের মডেল নই
ব্যাকআপ ডেটাবেস স্যাম্পলডবি
TO DISK = 'NUL';
যাওয়া
- লগ ফাইল ব্যাকআপ
ব্যাকআপ লগ নমুনাবিবি B
TO DISK = 'NUL';
যাওয়া
- এখন, আমাদের লেনদেনের মধ্যে লগ ফাইল আপ আপ করা যাক
শুরু করুন ট্রান্সেকশন
ডিবিও.তম ডিফল্ট ভ্যালু অন্তর্ভুক্ত করুন;
যান 10000
- রোলব্যাক কখনই জ্বলে না। চেষ্টা করে দেখুন আপনি একটি ত্রুটি পাবেন।
- এমএসজি 3903, স্তর 16, রাজ্য 1, লাইন 1
- রোলব্যাক ট্রান্সএকশন অনুরোধটির সাথে সম্পর্কিত কোনও বিগইন ট্রান্সএশন নেই।
রোলব্যাক ট্রান্সঅ্যাকশন;
- লগ ফাইলটি কি 100% পূর্ণ?
ডিবিসিসি এসকিউএলপারফ (লগস্পেস);
- fn_dblog () দিয়ে কয়টি রেকর্ড দৃশ্যমান?
নির্বাচন করুন *
Fn_dblog থেকে (NULL, NULL); - আমার ক্ষেত্রে প্রায় 91,926
যাওয়া
- fn_dblog দ্বারা প্রদর্শিত মোট লগ রিজার্ভ ()?
নির্বাচন করুন সুম ([লগ রিজার্ভ]) হিসাবে [মোট লগ রিজার্ভ]
Fn_dblog থেকে (NULL, NULL); - 88.72 এমবি
যাওয়া