তাত্ক্ষণিকভাবে একটি ডিফল্ট সীমাবদ্ধতার সাথে কেন নট কুল কলাম যুক্ত হচ্ছে?


16
CREATE TABLE TestTab (ID INT IDENTITY(1,1), st nvarchar(100))

INSERT INTO TestTab (st) values ('a')
INSERT INTO TestTab (st) values ('b')
INSERT INTO TestTab (st) values ('c')
INSERT INTO TestTab (st) values ('d')
INSERT INTO TestTab (st) values ('e')

INSERT INTO TestTab (st) SELECT TOP 10000 st from testtab
GO 30

ALTER TABLE TestTab ADD newcol nvarchar(10) DEFAULT 'newcol'
UPDATE TestTab SET newcol = 'newcol'  --6 sec
ALTER TABLE TestTab ADD newcol1 nvarchar(10) DEFAULT 'newcol1' NOT NULL

DROP TABLE TestTab

আমি যখন এই পরীক্ষার স্ক্রিপ্টটি কার্যকর করি তখন এর ALTERসাথে UPDATE6 সেকেন্ড সময় লাগে যা বোধগম্য।

যাইহোক, ALTERসাথে এটি DEFAULT NOT NULLআরও অনেক বড় টেবিলে তাত্ক্ষণিকভাবে কার্যকর করে। কেন এটি তাত্ক্ষণিক হয় তার কোনও ব্যাখ্যা আছে? ফিজিকাল ডিস্কে, এখনও সমস্ত সারিতে ডেটা লিখতে হবে?

আমি দেখার চেষ্টা করেছি SET STATISTICS IO ONএবং ক্যোয়ারী পরিকল্পনাটি, তবে সেগুলি ডিডিএল অপারেশনের জন্য উপলব্ধ বলে মনে হচ্ছে না।

উত্তর:


23

হ্যাঁ, নট নুলের সাথে একটি কলাম যুক্ত করা এবং একটি ডিফল্ট আসলে পরিবর্তনের সময় সমস্ত সারিগুলিতে মান লিখতে পারে না, সুতরাং এটি আর কোনও আকারের-ডেটা অপারেশন নয়। আপনি যখন টেবিল থেকে নির্বাচন করেন, কলামগুলি বাস্তবে সিস্টেমে_সিসটেম_নটার্নাল_ পার্টিশন_কলামগুলি থেকে তৈরি করা হয় , যা সমস্ত মানকে লেখা থেকে বাধা দেয় (সেগুলি পরিবর্তন না হওয়া পর্যন্ত)। নোট করুন যে এটি সমস্ত ডেটা ধরণের জন্য কাজ করে না এবং এন্টারপ্রাইজ সংস্করণ প্রয়োজন।

রিমাস রুসানু এখানে আরও বিশদে এটি ব্যাখ্যা করেছেন:

এছাড়াও, ALTERকমপক্ষে, আমরা এখনও আপনাকে একটি পরিকল্পনা দেখাতে পারি না কারণ এসকিউএল সার্ভার একটি উত্পাদন করে না, তবে আই / ও দেখতে আপনি এসকিউএল সেন্ট্রি প্ল্যান এক্সপ্লোরার ব্যবহার করতে পারেন This এই স্ক্রিন শটটি একটি কলাম, সি 5 যুক্ত করে দেখায় , উপরে বর্ণিত হিসাবে "অনলাইন" এবং তারপরে আর একটি কলাম, সি 6, "অফলাইন" কারণ LOB প্রকারগুলি সমর্থিত নয়। আপনি দেখতে পাচ্ছেন যে I / O বেশিরভাগ লেখার পরিবর্তে পঠিত হিসাবে প্রকাশ করা হয় তবে আরও কী বলা হচ্ছে UPDATEতা অফলাইন পরিবর্তনের সাথে যুক্ত (অবৈধ!) ।

অনলাইন বনাম অফলাইন পরিবর্তনের জন্য I / O

আপনার যদি এন্টারপ্রাইজ সংস্করণ না থাকে তবে উভয় বিবৃতিতে গৌণ UPDATEসংযুক্তি থাকবে (এবং সম্পর্কিত পাঠগুলি)। (এবং আপনি যদি প্ল্যান এক্সপ্লোরারের বিনামূল্যে সংস্করণ ব্যবহার করেন যা পুরো কোয়েরি কল স্ট্যাকটি পায় না, আপনি উপরেরটি দেখতে পাবেন না - আপনি কেবল একটি খালি স্টেটমেন্ট ট্রি দেখতে পাবেন full সম্পূর্ণ কোয়েরিটি দেখার জন্য অর্থ প্রদানের সংস্করণ প্রয়োজন কল স্ট্যাক।)

মনে রাখবেন যে এসকিউএল সার্ভার একটি আনুমানিক পরিকল্পনা তৈরি করবে তবে এটি খুব কার্যকর নয়। মোটেই এবং অনলাইন অ্যালটারের জন্য আনুমানিক পরিকল্পনাটি অফলাইন পরিবর্তনের জন্য অনুমান করা পরিকল্পনার অনুরূপ।

অনলাইন অলটারের জন্য ডায়াগ্রামের পরিকল্পনা করুন

* অস্বীকৃতি: আমি এসকিউএল সেন্ট্রি জন্য কাজ করি।


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