খালি কলামগুলি কি কোনও টেবিলে স্থান নেয়?


20

আমার কাছে টেবিল রয়েছে যা খুব প্রাথমিক তথ্য থেকে ধারণ করে। কেবল একটি শিরোনাম এবং কয়েকটি তারিখের ক্ষেত্র। সেখানে মন্তব্য নামে একটি ক্ষেত্র রয়েছে যা বর্ণাচর (4000) বেশিরভাগ সময় আমরা একে ফাঁকা রাখি তবে কিছু সময় এখানে প্রচুর পরিমাণে ডেটা প্রবেশ করবে। এটি কি সত্যিই খারাপ নকশা? নাকি এ কি কিছুটা অদক্ষ?

আমি ধরে নিচ্ছি এই কলামটির জন্য একটি পৃথক টেবিল তৈরি করা ভাল।

দ্রষ্টব্য: এটি স্কেল সার্ভার ২০০৮

এখানে চিত্র বর্ণনা লিখুন


সবাই আপনার মতামতের জন্য ধন্যবাদ! আমি সিদ্ধান্ত নিয়েছি এটি সহজ করে রাখব এবং কলামটি টেবিলের মধ্যে রেখে অন্য টেবিলে রাখব না put তবে আমি এসকিউএল 2008 এ স্পারস বৈশিষ্ট্যটি ব্যবহার করেছি যাতে ক্ষেত্রটি কোনও স্থান ব্যবহার করে না।

2
শুধু কৌতূহল, "বেশিরভাগ সময়" কী? মোট কতগুলি সারি, এবং এখানে কত শতাংশের মান রয়েছে? আপনি ভাবছেন যে আপনি কোনও স্থান / পারফরম্যান্সের তুলনা করে ব্যবহার করছেন SPARSEএবং ব্যবহার করছেন না তার পরিকল্পনা করছেন SPARSE...
অ্যারন বারট্র্যান্ড

উত্তর:


9

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


12

এটি ব্যবহার না করা হলে ন্যূনতম স্থান নেয়

  • নুল বিটম্যাপে এক বিট
  • দৈর্ঘ্যের জন্য দুটি বাইট (যা শূন্য হবে যখন নাল হবে)

ওভারহেড সর্বনিম্ন এবং অপ্টিমাইজেশন অকাল হতে পারে।

যতক্ষণ না আপনি জানেন আপনার কোনও সমস্যা রয়েছে, কেবল এটি একটি টেবিলের মধ্যে রাখুন। আপনি বাহ্যিক যোগদানের সাথে পরিচয় করে KISS ভেঙেছেন এবং ডেটা সন্ধানে একটি ওভারহেড যুক্ত করেন।

আরও জানতে /programming/3793022/how-to-come-to-limits-of-8060-bytes-per-row-and-8000-per-varchar-nvarchar-valu/3793265#3793265 দেখুন


10

আমি মনে করি পৃষ্ঠার ঘনত্ব উন্নত করতে এবং খণ্ড খণ্ডকে হ্রাস করার জন্য একটি পৃথক সারণী আরও ভাল especially

  • একটি ডেটা পৃষ্ঠাতে প্রায় 8000 বাইট থাকে
  • আপনার কাছে 100 বাইট বলে কিছু সারি এবং 4000 বাইটের সাথে কিছু সারি রয়েছে
  • এই দীর্ঘ সারিগুলি নিজেরাই একটি পৃষ্ঠায় থাকবে এবং বাকী পৃষ্ঠাটি "নষ্ট" স্থান যা আপনার ডিবি গ্রহণ করবে তবে সম্ভবত কখনও ডেটা ধরে রাখবে না
  • আপনি যদি বেশিরভাগ পূর্ণ পৃষ্ঠায় রেকর্ডের জন্য সেই দীর্ঘ ক্ষেত্রে যদি ডেটা যোগ করেন তবে এটি সম্ভবত পৃষ্ঠাটি ছাপিয়ে যাবে এবং বাকী রেকর্ডের সাথে পৃষ্ঠায় একটি পয়েন্টার তৈরি করবে

এই সমস্ত খালি পৃষ্ঠা এবং পয়েন্টারগুলি খারাপ কর্মক্ষমতা বাড়ে। আপনি যদি পারেন তবে ক্ষেত্রটিকে সাধারণ করুন।


4

এই প্রশ্নটি খুব অনুরূপ দেখাচ্ছে: অতিরিক্ত খালি কলামগুলি কি স্ক্যাল টেবিলের আকারকে উল্লেখযোগ্যভাবে প্রভাবিত করে?

দেখে মনে হচ্ছে উত্তরটি হ্যাঁ এটি স্থান গ্রহণ করে তবে প্রচুর নাল মান সহ কলামগুলির জন্য একটি সংক্ষেপণ অ্যালগরিদম রয়েছে।

যতদূর ডিজাইন হিসাবে, আমি মনে করি এটির সাথে বাইরের টেবিল যুক্ত হওয়া একটি ক্লিনার ডিজাইন হবে। ঘন ঘন নাল মান সহ একটি কলাম থাকা ডাটাবেসের ব্যবহারকারীদের পক্ষে এটি আরও শক্ত করে তোলে যেহেতু তারা যদি সাবধান না হন তবে দুর্ঘটনাক্রমে নাল মানটি ব্যবহার করতে পারেন। সুতরাং, ডাটাবেস ব্যবহার করে কোডে ত্রুটি পরীক্ষা করা থাকতে হবে এবং এটি সেখান থেকে কুৎসিত হয়ে উঠবে।


2
স্পষ্টতই বলতে গেলে, সংক্ষেপণ অ্যালগরিদম কেবল SPARSE"" প্রচুর নাল মান সহ কলামগুলি "নয়, সেই স্পষ্টভাবে সংজ্ঞায়িত col কলামগুলিতে প্রযোজ্য ।
অ্যারন বারট্রান্ড

2

আপনি ভাল থাকবেন - এটি ইতিমধ্যে একটি ভার্চর কলাম রয়েছে, সুতরাং এতে কেবলমাত্র ডেটা থাকলেই স্থানটি ব্যবহার করা হয়। আপনার যদি int এর মতো অনেকগুলি স্থায়ী আকারের কলামযুক্ত স্থায়ী আকার থাকে তবে আপনার কাছে স্থান ব্যবহারের সমস্যা থাকতে পারে।

এটিকে অন্য টেবিলে রাখার মতো আমি বিরক্ত করব না। আপনি বার্চার (সর্বাধিক) ব্যবহার এবং সারি বিকল্পগুলির মধ্যে / আউট ব্যবহার করতেও দেখতে পারেন। আবার, সম্ভবত অকাল।


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

অ্যারন বারট্রান্ড @ লোকেরা এখানে পারফরম্যান্সের প্রশ্ন জিজ্ঞাসা করে এবং এটি সহজেই ধরে নেওয়া যায় যে তাদের কাছে এমন একটি অ্যাপ্লিকেশন থাকতে পারে যা কয়েক মিলিয়ন সারি এবং তাদের প্রতিটি সরঞ্জামকে সরঞ্জামদণ্ডে ব্যবহার করা এবং এটি সমস্ত কিছু মনে রাখা প্রয়োজন। অন্যদিকে, কখনও কখনও ব্যবহারকারীকে শেখার বক্ররেখার শুরুতে মনে হয় এবং তাদের এমন কোনও কিছুর প্রতি সময় দেওয়ার জন্য বলা কঠিন, যা সম্ভবত তাদের অগ্রাধিকারগুলির চেয়ে কম হওয়া উচিত। এছাড়াও, ভারচার (সর্বাধিক) দিয়ে, আপনি সারি থেকে সঞ্চিত সঞ্চয় শুরু করতে কার্যকরভাবে একটি স্যুইচটিকে ফ্লিক করতে পারেন। আমি মনে করি এখানে আসল উত্তরটি হ'ল "আপনি সত্যিকারের একটি নির্দিষ্ট উত্তর দেওয়ার জন্য পর্যাপ্ত তথ্য দেন নি"।
ক্যাড রক্স
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.