কোনও 128/256/4096 বাইট অফসেটের বৃত্তাকারে VARCHAR মাপ ব্যবহার করার কোনও কারণ আছে কি?


14

ডাটাবেস স্কিমাগুলিতে, আমি প্রায়শই লক্ষ্য করি যে VARCHAR মাপগুলি বাইট অফসেটগুলি 128/256 বা 4096 এর সাথে গোল করা হয় I've আমি এটিও আগে করেছি এবং এর পিছনে ধারণাটি সম্ভবত দক্ষতার সাথে কিছু ছিল।

যাইহোক, আজকাল এটি করার কোনও বৈধ কারণ আছে কি? আমি প্রায়শই '50', '100' বা '200' ভিচারার আকার হিসাবে এই দিনগুলিতে ব্যবহার করি, কারণ এগুলি আরও প্রাকৃতিক এবং সাধারণত ব্যবহারকারীকে বৈধতা যাচাই করে দেখানো হয়।


2
পুরানো প্রোগ্রামারগুলি প্রায়শই দুটি শক্তির সাথে কাজ করার জন্য ব্যবহৃত হয়, যাতে তারা কেবল 128/256/4096 আরও প্রাকৃতিক বিবেচনা করতে পারে। মোটেও কোনও পারফরম্যান্সের কারণ থাকতে পারে না।
জানু হুডেক

1
কোনও দক্ষতার সুবিধা রয়েছে কিনা তা স্বতন্ত্র ডাটাবেসটি ব্যবহৃত হয় তার উপর নির্ভর করে। মাইএসকিউএল এবং ডিবি 2 খুব আলাদাভাবে প্রয়োগ করা হয়।
ডেভিড থর্নলি

উত্তর:


11

একমাত্র যুক্তিযুক্ত ব্যাখ্যা যা আমি ভাবতে পারি তা হ'ল: ডিবিএমএস যদি কলামের মানগুলি ধারাবাহিকভাবে সংরক্ষণ করে এবং মাপগুলি 2 এর শক্তিতে গোল করে না যায়, তবে কিছু উপাদান শক্তভাবে দুটি পৃষ্ঠায় "বিভক্ত" হতে পারে ড্রাইভ (উদাহরণস্বরূপ পৃষ্ঠা এন এর প্রথম 10 বাইট এবং পরবর্তী পৃষ্ঠা এন + 1 এর 40 বাইট), যা কিছু ক্ষেত্রে হার্ড ড্রাইভের পরিবর্তে দুটির পাঠ্য হতে পারে।

সম্ভবত জ্যান হুডেকের বক্তব্যটি অনেক প্রোগ্রামাররা "128" বা "256" কে "দুর্দান্ত গোল সংখ্যা" হিসাবে ভাবেন, যা তাদের 137, 19 বা 100 এর মতো বিজোড় সংখ্যার চেয়ে আরও বেশি প্রাকৃতিক পছন্দ করে তোলে।


1
"অনেক প্রোগ্রামাররা 128 বা 256 কে দুর্দান্ত গোল সংখ্যা হিসাবে ভাবেন"। আমরা প্রকৃতপক্ষে পরম পাগল। :-)
কোনামিমন

2
নোট করুন যে ডেটা দৈর্ঘ্য সংরক্ষণ করতে আপনার কমপক্ষে একটি বাইট প্রয়োজন, সুতরাং আপনার প্রথম ব্যাখ্যাটি যদি সত্য হয় তবে আমরা 31, 63, 127, 255 বা 510 বাইটের অনেক সীমা দেখতে চাই।
dan04

1
দৈর্ঘ্য নির্দেশ করতে 1 বাইট 255 (256 না) পর্যন্ত স্ট্রিংয়ের অনুমতি দেয়। এসকিউএল সার্ভার এবং আমি বেশিরভাগ অন্যান্য সিস্টেমে অনুমান করব, দুটি বাইট ব্যবহার করব।
ফিলিপ কেলি

4

সাধারণভাবে কলামের দৈর্ঘ্যের কোনও কারণ নেই। ভার্চার (128) কলামের তুলনায় ভার্চার (100) কলামের কোনও কার্যকারিতা উন্নতি হবে না।

তবে, আমি বিধিনিষেধ এবং অন্যান্য বিক্রেতার নির্দিষ্ট ক্যাভ্যাট সম্পর্কে আরও স্পষ্টতার জন্য আপনি যে ডাটাবেস সিস্টেমটি ব্যবহার করছেন তা দ্বিগুণ পরীক্ষা করব।

উদাহরণস্বরূপ, এসকিউএল সার্ভারের জন্য একটি ডেটাবেস সিস্টেম বিধিনিষেধের একটি ভাল উদাহরণ:

http://msdn.microsoft.com/en-us/library/ms186981.aspx

সারির মোট দৈর্ঘ্য পৃথক কলাম দৈর্ঘ্যের চেয়ে গুরুত্বপূর্ণ।


3

এটি ডিবিএমএস বা সংকলক ছিল কিনা তা আমি স্মরণ করি না, তবে আমি অ্যারে এবং কলাম দৈর্ঘ্যের জন্য 2 এর ক্ষমতা ব্যবহার করতে শিখছি (অনেক দিন আগে) all একটি যৌক্তিকতা ছিল যে এটি 'দ্রুত' কারণ প্রয়োগটি বিট শিফটিং ব্যবহার করতে পারে। এখন আর সত্য বলে ধরেছে কিনা তা একটি মুক্ত প্রশ্ন। এটি বৈধ কিনা তা নিয়ে কারও ধারণা আছে?

বিটিডাব্লু আমি কলামের প্রস্থকে ইউনিফর্ম সংখ্যা বি / সি তে সরিয়ে নিয়েছি, ব্যবহারকারীদের চর সীমাটি 256 অক্ষর বলতে অবাক করা বিষয় strange

এবং কিছু খুব পুরানো ডাটাবেস আপনাকে 256 চর-প্রস্থের কলামগুলিতে সীমাবদ্ধ করেছিল।


2

এটি সম্ভবত সত্যই গুরুত্বপূর্ণ নয়, যেহেতু আপনি যদি কেবল পুরো সারির আকারটি ২ এর শক্তির আকার ধারণ করেন তবে আপনি কেবলমাত্র কিছু স্টোরেজ দক্ষতা দেখতে পাবেন এটি 2 টির শক্তির সাথে লেগে থাকা আপনার সারি আকারের আরও বেশি সম্ভাবনা তৈরি করতে পারে দু'জনের পাওয়ার তৈরি হবে (যেহেতু বেশিরভাগ নেটিভ ডেটা ধরণের ক্ষমতা 2-আকারের [ডাটাবেসের উপর নির্ভরশীল]) থাকে তবে আমি এটিকে কঠোর এবং দ্রুত কোনও নিয়ম বানাব না।

আপনি যদি বড় (4 কে বা বৃহত্তর) কলামগুলির সাথে কাজ করে থাকেন তবে এটি আরও বোধগম্য হতে পারে, যেহেতু এগুলি সম্ভবত পৃথকভাবে সংরক্ষণ করা যেতে পারে এবং সেগুলি আকার দিতে পারে যাতে সেগুলি একটি স্টোরেজ ব্লকের মধ্যে ফিট করে (আপনার ডেটাবেস অন-ডিস্ক স্টোরেজের জন্য যা কিছু ব্যবহার করে) লাভ করতে পারে আপনি কিছু।


2

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

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