প্রয়োজনের তুলনায় কলামের আকারটি আরও বড়


16

আমি অন্য কারও সাথে একটি এসকিউএল সার্ভার ডাটাবেস তৈরি করছি। এক টেবিলের মধ্যে ছোট (6 টি সারি) ডেটা রয়েছে যা সম্ভবত স্থির থাকবে। দূরবর্তী সম্ভাবনা রয়েছে যে একটি নতুন সারি যুক্ত হবে। টেবিলটি এরকম কিছু দেখাচ্ছে:

CREATE TABLE someTable (
    id int primary key identity(1,1) not null,
    name varchar(128) not null unique
    );
INSERT INTO someTable values ('alice', 'bob something', 'charles can dance', 'dugan was here');

আমি এই nameকলামটির চর দৈর্ঘ্যের দিকে তাকিয়ে আছি এবং আমি মনে করি যে এর মানগুলি সম্ভবত কখনও বলার অপেক্ষা রাখে না, 32 টি বর্ণের চেয়ে বড় হতে পারে না, সম্ভবত 24 এর চেয়েও বড় নয় my উদাহরণস্বরূপ varchar(32),?

এছাড়াও, 4, 8, 32, ইত্যাদির গুণকগুলিতে ডিফল্ট কলামের আকার রাখার কোনও সুবিধা আছে কি?

উত্তর:


15

এসকিউএল সার্ভার কোয়েরি প্রসেসিংয়ের জন্য মেমরি বরাদ্দ করার সময় কলামের দৈর্ঘ্য ব্যবহার করে। সুতরাং, হ্যাঁ, সংক্ষেপে, আপনার ডাটাগুলির জন্য সর্বদা যথাযথভাবে কলামগুলি আকার করা উচিত ।

মেমরি বরাদ্দগুলি কলামের ঘোষিত দৈর্ঘ্যের অর্ধেক দ্বারা গুণিত ক্যোয়ারী দ্বারা ফিরে আসা সারির সংখ্যার উপর ভিত্তি করে।

এই কথাটি বলার পরে, আপনি যেখানে সারি পেয়েছেন এমন ক্ষেত্রে আপনি সম্ভবত অসময়ের জন্য সর্বোত্তম করতে চান না। আপনি কয়েক মিলিয়ন সারি দিয়ে এই টেবিলটিতে যোগ না দিলে ভার্চার (24) এবং একটি ভারচর (32), এমনকি একটি বার্চারের (128) এর মধ্যে বিশাল পার্থক্য থাকবে না।

আপনার দ্বিতীয় প্রশ্নটি বাইনারি গুণকগুলিতে কলামের দৈর্ঘ্য সারিবদ্ধ করার বিষয়ে জিজ্ঞাসা করে। এসকিউএল সার্ভার প্রতিটি কলামের দৈর্ঘ্য নির্বিশেষে 8KB পৃষ্ঠাগুলিতে সমস্ত ডেটা সঞ্চয় করে যেহেতু এটির কোনও প্রয়োজন নেই।


14

6 টি সারি দিয়ে না, কোনও পর্যবেক্ষণযোগ্য সুবিধা হবে না। সেই পুরো টেবিলটি কোনও একক পৃষ্ঠায় ফিট হবে যাতে আপনি সেই পৃষ্ঠাটিতে সর্বাধিক সম্ভাব্য স্থানটি হ্রাস করবেন যখন এখনও পুরো পৃষ্ঠাটি দখল করে রাখা সমস্ত ব্যবহারিক দিক থেকে সত্যই আলাদা নয়।

বৃহত্তর টেবিলগুলিতে, যদিও, ডান-সাইজিং গুরুত্বপূর্ণ। কারণটি হ'ল মেমোরি অনুমানগুলি এই মানটির উপর ভিত্তি করে তৈরি হবে যে প্রতিটি মান 50% হবে ulated সুতরাং আপনার যদি বার্চার (128) থাকে তবে প্রতিটি মানই আসল তথ্য নির্বিশেষে 64৪ বাইট দখল করবে বলে আশাবাদী, অতএব মেমরি অনুদানগুলি b৪ বি * সারি হবে। যদি সমস্ত মান 32 টি অক্ষর বা তার চেয়ে কম হয়, এটি একটি বর্ণচর (64) বা এমনকি ভারচর (32) তৈরি করা সম্ভবত আরও ভাল পছন্দ। মানগুলির একটি বড় শতাংশ যদি ক্যাপের কাছাকাছি বা কাছাকাছি থাকে তবে আপনি চরের পক্ষে এটি থেকে অস্থিরতা নিতে তর্ক করতে পারেন।

স্ট্রিং দৈর্ঘ্যের 2 টির ক্ষমতায় থাকা সুবিধাগুলি হিসাবে, আমি মনে করি না আজকের হার্ডওয়্যারটিতে যে কেউ কোনও সুস্পষ্ট সুবিধা প্রদর্শন করতে পারে।

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