ডাটাবেস ডিজাইনে ওভারস্টেটিং ফিল্ডের আকার


11

আমার টেবিলগুলির জন্য আমার কিছু ক্ষেত্র রয়েছে যা স্ট্রিং এবং এই মুহুর্তে, বেশিরভাগ ক্ষেত্রের আকারের উচ্চতর চরিত্রের সীমা থাকে। উদাহরণস্বরূপ, রাস্তার নামের জন্য 100 চর। বড় মাঠের আকার ব্যবহারের জন্য কি কোনও জরিমানা রয়েছে? আমি উদাহরণস্বরূপ যদি এই ক্ষেত্রটির জন্য সীমাটি 30 চরকে পরিবর্তন করি তবে আকারের সাথে কোনও পারফরম্যান্স লাভ বা দক্ষতা থাকবে? প্রায় 50 টি ক্ষেত্রগুলি সঙ্কুচিত হওয়ার প্রার্থী হতে পারে।

আপনার পরামর্শের জন্য ধন্যবাদ।


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

আপনার কোনও পৃষ্ঠার আকার (8 কে) ছাড়িয়ে যাওয়ার বিষয়ে সচেতন হওয়া উচিত কারণ এটি কর্মক্ষমতাকে প্রভাবিত করবে। এই পোস্টটি দেখুন: স্ট্যাকওভারফ্লো.com

হার্ড ড্রাইভের স্বল্প খরচের কারণে, আমি এই দিনগুলিতে স্টোরেজ দক্ষতার বিষয়ে চিন্তা করব না। জেএনকে যেমন বলেছে, খুব বড় ক্ষেত্রের জন্য সূচীকরণের প্রভাব রয়েছে - এটি অবশ্যই মনে রাখা উচিত। আপনি খুব অল্প জায়গা বরাদ্দ করায় কোনও অ্যাপ্লিকেশন পরিবর্তন করার ব্যথা আপনার ডাটাবেস সারণীতে কয়েকটি অতিরিক্ত বাইটের ব্যয়ের চেয়ে অনেক বেশি।
নেভিল কুয়েট

3
আমি মনে করি স্টোরেজটিকে উপেক্ষা করা কারণ এটি সস্তা a এটি একটি খারাপ ধারণা। ডিস্কের প্রতিটি বাইটটি আনতে এবং প্রক্রিয়াজাতকরণ করা প্রয়োজন এবং প্রায় প্রতিটি এসকিউএল সার্ভারের ইনস্টলেশনের সবচেয়ে ধীরতম অংশটি হ'ল ডিস্ক স্টোরেজ। কম বাইটস = দ্রুত অনুসন্ধানগুলি।
জেএনকে

1
যদি 100MB 512MB ডিস্ক নিয়ামক ক্যাশে ফিট করার জন্য 20% কম ডেটা তৈরি করে, তবে এটি একেবারে (অভিজ্ঞতার ভয়েস) ব্যাপার হবে matter
এরিক জে

উত্তর:


16

যদি আপনি তার কথা বলছেন varcharএবং nvarcharনা, তবে কোনও উচ্চতর ক্ষেত্রের দৈর্ঘ্যকে অনুমতি দেওয়ার জন্য কোনও জরিমানা নেই।


কিছু মনে রাখে সাবধান, যদিও:

  • চলক দৈর্ঘ্যের ক্ষেত্রগুলির জন্য (প্রতি ক্ষেত্র) প্রতি সারিতে 2 বাইট ওভারহেড রয়েছে । আপনার যদি খুব সংক্ষিপ্ত ক্ষেত্র থাকে তবে এটি ব্যবহার করে আরও বুদ্ধিমান হতে পারে CHARVarchar(2)উদাহরণস্বরূপ, প্রতি সারি প্রতি 2-4 বাইটের মধ্যে ব্যবহার হয়, যখন CHAR(2)সর্বদা 2 ব্যবহার করে।
  • খুব দীর্ঘ ক্ষেত্রগুলি সূচী করা যায় না। একটি ইনডেক্স কী সেটে সমস্ত ক্ষেত্রের সর্বোচ্চ দৈর্ঘ্য 900 বাইট tes
  • আপনি যদি প্রত্যাশার চেয়ে বেশি ডেটা মঞ্জুর করেন তবে শেষ পর্যন্ত আপনি অপ্রত্যাশিত ফলাফল পাবেন। যদি আপনি রাস্তার নামের জন্য 100 টি অক্ষর মঞ্জুরি দিয়ে থাকেন তবে কোনও সময় আপনাকে অজানা না করে অন্য ডেটাগুলি সেই ক্ষেত্রটিতে প্রবেশের সম্ভাবনা রয়েছে (উদাহরণস্বরূপ পুরো ঠিকানা)। আপনার যদি এটি যথাযথ আকারের হয় তবে তার পরিবর্তে আপনি সম্ভবত sertোকাতে একটি ত্রুটি পাবেন।
  • খুব প্রশস্ত সারির অনুমতি দেওয়ার ফলে পৃষ্ঠা বিভাজন এবং খণ্ডিত হতে পারে। আপনার যদি 8k এর চেয়ে দীর্ঘ সারি থাকে তবে এটি একাধিক ডেটা পৃষ্ঠাগুলিতে বিভক্ত হওয়া দরকার। এর মধ্যে অনেকগুলি কার্যত পারফরম্যান্সকে আঘাত করতে পারে। সাধারণভাবে সংকীর্ণ আরও দক্ষ।

1
আপনি এই উত্তরের সাথে সংক্ষিপ্তকরণেও যুক্ত করতে পারেন উদাহরণস্বরূপ নিশ্চিত করুন যে কলামটি কমপক্ষে যথেষ্ট বড়: ঠিকানা বার্চার (30) বোল্ডারউড আরবোরেটাম অলঙ্কৃত ড্রাইভ বা উত্তর-পূর্ব কেনটাকি শিল্প উদ্যানপথের সাথে লড়াই করতে পারে না ।

@ আলেকসি - খুব সত্য। আমি মনে করি সেগুলি আরও সুস্পষ্ট, এই কারণেই ওপি শুরু করার জন্য প্রশস্ত ক্ষেত্র ব্যবহার করছে।
জেএনকে

"কোনও মুহুর্তে অন্য ডেটাগুলি আপনার সম্পর্কে অবহিত না হয়ে সেই ক্ষেত্রে প্রবেশের সম্ভাবনা রয়েছে" একটি আকর্ষণীয় বিষয়। আমি প্রচুর সিস্টেম দেখেছি যেখানে ব্যবহারকারীরা এমন কোনও ক্ষেত্র নিয়েছিলেন যা সাধারণ উদ্দেশ্যে মন্তব্য ক্ষেত্র হিসাবে উপস্থিত রেকর্ডের জন্য প্রযোজ্য ছিল না।


2

যদি আপনার অর্থ হয়, "ক্ষেত্রের আকারটি আসলে যে কোনও মান হিসাবে সংরক্ষণ করা হয় তার চেয়ে বড় আকারের ঘোষণার জন্য কি কোনও জরিমানা রয়েছে?", তবে যতক্ষণ না এটি ভারচর হিসাবে ঘোষণা করা হয়, উত্তরটি নেই। প্রতিটি এসকিউএল ডিবি ইঞ্জিন যেটি আমি জানি সেগুলি কেবলমাত্র ডেটাতে দেওয়া অক্ষরের সংখ্যা (আরও একটি দৈর্ঘ্যের মান) সঞ্চয় করে। সুতরাং আপনি যদি ক্ষেত্রটিকে বারচর (100) হিসাবে সংজ্ঞায়িত করেন তবে এটিতে কেবলমাত্র 10 টি অক্ষর সংরক্ষণ করেন তবে এটি কেবলমাত্র ডিস্কে 10 টি অক্ষর গ্রহণ করবে (দৈর্ঘ্যের জন্য 2 বাইট বা আরও বেশি)। সন্দেহ হলে আমি নিয়মিতভাবে আমার বারচর ক্ষেত্রকে হাস্যকর আকারে বড় করি।

যদি আপনি বোঝাতে চান, "দীর্ঘ অক্ষরের ক্ষেত্রগুলি সংরক্ষণ করার জন্য কোনও জরিমানা রয়েছে", তবে উত্তরটি হ্যাঁ। ডিস্কের স্থানটি আজ সস্তা, তবে এটি নিখরচায় নয়, তাই আপনি অকারণে এটি নষ্ট করতে চান না। সম্ভবত আরও গুরুত্বপূর্ণ, ডিস্কটি থেকে ডেটা পড়তে সময় লাগে, সুতরাং আপনার ডেটা ক্ষেত্রগুলি যত বেশি হবে প্রোগ্রামটি ধীর হয়ে যায় becomes যদি ক্ষেত্রটি সূচকযুক্ত হয় তবে এটি আপনার পুনরুদ্ধারগুলিকে সত্যিই ধীর করতে পারে, কারণ প্রতিটি পঠনই এই বড় দীর্ঘ ক্ষেত্রের সাথে মূল মানটির তুলনা করতে চলেছে।

মনে রাখবেন যে আপনি যদি ব্যবহারকারীকে একটি বড় ডেটা এন্ট্রি ক্ষেত্র দেন তবে তারা তাড়াতাড়ি বা পরে এটি ব্যবহার করবে।

যা কিছু বলেছিল, আমি খুব ছোটের চেয়ে খুব বড় দিকে ভুল করতাম। ডিস্ক স্পেসটি যথেষ্ট সস্তা যে আপনি ব্যবহারকারীদের ফ্লাইতে সংক্ষিপ্তসারগুলি আবিষ্কার করতে বাধ্য করতে চান না কারণ তারা উপলব্ধ ক্ষেত্রে সঠিক ডেটা ফিট করতে পারে না। আমি আজ যে সিস্টেমে কাজ করছি তাতে একটি পণ্যের বিবরণ ক্ষেত্র রয়েছে যা আমাদের অনেক পণ্যের আসল নামগুলির জন্য খুব ছোট, তাই ব্যবহারকারীদের সংক্ষিপ্ত করতে হবে। এবং অবশ্যই প্রতিটি ব্যবহারকারীর আলাদাভাবে সংক্ষেপণ হয়, তাই আমাদের কাছে একই কথা বলার জন্য বিশটি ভিন্ন উপায় রয়েছে।


2

যে কেউ দাবি করছেন যে টেবিলের মধ্যে সঞ্চিত হতে চলেছে তার চেয়ে ক্ষেত্রের আকার আরও বড় বলে ঘোষণা করার জন্য কোনও জরিমানা নেই। তথ্যের প্রকৃত আকার (প্লাস যে 2 বাইট ওভারহেড) আসলে সঞ্চিত হয় তবে এটি কলাম সংজ্ঞা যা বাস্তবায়ন পরিকল্পনা যতদূর যায় অনুমান নির্ধারণ করতে ব্যবহৃত হয়। সুতরাং, একটি 10 ​​বর্ণের মান সংরক্ষণ করার জন্য একটি ভারচার (1000) ঘোষণার সময় কেবলমাত্র ডিস্কের স্পেসের 12 টি অক্ষর খেয়ে ফেলবে, এক্সিকিউশন পরিকল্পনার অনুমানটি অপারেশনটি কতটা মেমরি দেবে এবং উভয়ই তার জন্য কম ফলদায়ক এবং নেতিবাচক ফলাফলগুলি সাফল্যযুক্ত করবে and অপারেশনটি সম্পূর্ণ স্মৃতিতে সঞ্চালিত হতে পারে বা এটির জন্য টেম্পডিবি ড্রাইভের জায়গারও প্রয়োজন হবে কিনা। আপনি আপনার কলামটি ভারচার (1000) তৈরি করতে পারেন, তবে ইঞ্জিনটি জানে না যে আপনার সমস্ত সঞ্চিত মানগুলি ভার্চারের চেয়ে কম (10),


0

ক্ষেত্রের দৈর্ঘ্য পরীক্ষা করা এমন কিছু যা আপনি 'নিখরচায়' পেয়ে যান, অর্থাত্ এটি করার জন্য আপনাকে কোনও CHECKপ্রতিবন্ধকতা ব্যবহার করতে হবে না। এবং আপনি বড় আকারের ডেটা মানগুলি চান না যখন উদাহরণস্বরূপ, আপনাকে অন্য ডেটাবেসে আপনার ডেটা আপলোড করতে হবে যা আন্তর্জাতিক মানের ঠিকানার সাথে মিল রেখে একই ডেটা উপাদানটিকে 35 টি অক্ষরে সীমাবদ্ধ করেছে।

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