কীভাবে দীর্ঘ কলামগুলি কার্য সম্পাদন এবং ডিস্ক ব্যবহারকে প্রভাবিত করে?


26

আমাদের বর্তমান প্রকল্পে এটি প্রায়শই ঘটে থাকে, আমাদের বেশ কয়েকটি চরিত্রের সাহায্যে কলামগুলি প্রসারিত করতে হবে। থেকে varchar(20)থেকে varchar(30)এবং এর তাই।

বাস্তবে, এটি কতটা গুরুত্বপূর্ণ? এটি কতটা ভাল? সাধারণ "ইনপুট" ক্ষেত্রগুলির জন্য 100 বা 200 বা এমনকি 500 টি অক্ষরের অনুমতি দেওয়ার কী প্রভাব রয়েছে? একটি ইমেলটিতে কেবল 320 টি অক্ষর থাকতে পারে তাই ঠিক আছে - সেখানে একটি ভাল সীমা রয়েছে। তবে আমি যদি 200 এ সেট করে রাখি তবে আমি কী লাভ করব, কারণ আমি এর চেয়ে বেশি ইমেল ঠিকানা আশা করি না addresses

সাধারণত আমাদের টেবিলগুলিতে 100.000 টির বেশি সারি এবং 20 বা 30 টির মতো কলাম থাকবে না।

আমরা এখন এসকিউএল সার্ভার ২০০৮ ব্যবহার করি তবে বিভিন্ন ডিবি কীভাবে এই সমস্যাগুলি পরিচালনা করে তা জেনে রাখা আকর্ষণীয় হবে।

যদি প্রভাবটি খুব কম হয় - যেমনটি আমি প্রত্যাশা করতাম, এটি আমার ডিবিএকে বোঝাতে কিছু ভাল যুক্তি (লিঙ্কগুলির সাথে ব্যাক আপ?) পেতে সহায়তা করবে, যে এই দীর্ঘ-ক্ষেত্র-পারানোটি আসলেই প্রয়োজনীয় নয়।

যদি এটি হয় তবে আমি এখানে শিখতে চাই :-)

উত্তর:


12

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

বিন্যাস করা যে কোনো ক্লায়েন্ট সরঞ্জাম যা ফরম্যাটের ক্ষেত্র আকারের উপর ভিত্তি করে ডেটা বিশেষ বিন্যাস বিবেচনার প্রয়োজন হবে। ওরাকল এর এসকিউএল * প্লাস উদাহরণস্বরূপ ডিফল্টরূপে ভার্চর 2 কলামগুলির সর্বোচ্চ আকার প্রদর্শন করে এমনকি তথ্যটি কেবলমাত্র একটি অক্ষর দীর্ঘ নয়। তুলনা করা…

create table f1 (a varchar2(4000), b varchar2(4000));
create table f2 (a varchar2(5), b varchar2(5));
insert into f1 values ('a','b');
insert into f2 values ('a','b');
select * from f1;
select * from f2;

খারাপ ডেটা ফিল্ড দৈর্ঘ্য খারাপ ডেটা ধরা / প্রতিরোধের জন্য একটি অতিরিক্ত প্রক্রিয়া সরবরাহ করে। একটি ইন্টারফেসে 100 টি চরিত্রের ক্ষেত্রে 3000 টি অক্ষর সন্নিবেশ করার চেষ্টা করা উচিত নয়, তবে যদি ক্ষেত্রটি 4000 অক্ষর হিসাবে সংজ্ঞায়িত করা হয় তবে তা সম্ভবত might ত্রুটিটি ডেটা এন্ট্রি পর্যায়ে ধরা পড়েনি, তবে অন্য অ্যাপ্লিকেশন ডেটা এবং চোকস প্রক্রিয়া করার চেষ্টা করলে সিস্টেমে আরও সমস্যা হতে পারে। উদাহরণস্বরূপ, যদি আপনি পরে ওরাকলে ক্ষেত্রটি সূচীকরণের সিদ্ধান্ত নেন তবে আপনি সর্বাধিক কী দৈর্ঘ্য (ব্লকের আকার এবং সংক্ষিপ্তকরণের উপর নির্ভর করে) ছাড়িয়ে যাবেন। দেখুন ...

create index i1 on f1(a);

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

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


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



ডকুমেন্টেশন এমন একটি দুর্দান্ত যা আপনি এখানে যুক্ত করেছেন যা আমি অন্য কোথাও দেখিনি।
জেটিওন

9

এখানে আপনার জন্য একটি ভাল সূচনা পয়েন্ট।

http://www.sqlskills.com/BLOGS/KIMBERLY/post/Disk-space-is-cheap.aspx

আমি আপনার মূল প্রশ্নটি ভুল বুঝে থাকতে পারি। আমি আপনাকে রেফারেন্সের জন্য আরও কয়েকটি লিঙ্ক খুঁজে পেতে পারি কিনা তা আমাকে দেখতে দিন।

ডেটা ধরণের নির্বাচনের বিষয়ে এখানে ভাল উল্লেখ রয়েছে: http://sqlfool.com/2009/05/performance-considerations-of-data-tyype/

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

ডাটাবেস স্ট্রাকচারের জন্য এখানে একটি লিঙ্ক রয়েছে: http://technet.microsoft.com/en-us/sqlserver/gg313756.aspx

এখানে পৃষ্ঠা দু'ভাগ হয়ে trx লগিং জন্য এগুলির মধ্যে একটি: http://sqlskills.com/BLOGS/PAUL/post/How-expensive-are-page-splits-in-terms-of-transaction-log.aspx

আছে HTH


7

আমি ভেবেছিলাম আমি আরও একটি আকর্ষণীয় বিষয় ভাগ করব, যা আমি নিম্নলিখিত এসও প্রশ্নে পেয়েছি:

/programming/148398/are-there-any-disadvantages-to-always-using-nvarcharmax

আসল উত্তর লিখেছেন: নিক কাভাদিয়াস

সর্বাধিক বা পাঠ্য ক্ষেত্রগুলি ব্যবহার না করার একটি কারণ হ'ল আপনি [অনলাইন সূচি পুনর্নির্মাণ] [1] অর্থাত্ এসকিউএল সার্ভার এন্টারপ্রাইজ সংস্করণ সহ অনলাইনে = পুনরায় বিল্ড করতে পারবেন না।

[1]: http://msdn.microsoft.com/en-us/library/ms188388%28SQL.90%29.aspx "অনলাইন সূচক পুনর্নির্মাণ"

নির্বিচারে এন / ভারচার (সর্বাধিক) কলাম যুক্ত করার সময় আমি এটিকে একটি বড় অসুবিধা হিসাবে বিবেচনা করব এবং এমএস সাইট অনুযায়ী অনলাইন ইনডেক্স পুনর্নির্মাণের বিরুদ্ধে এই নিষেধাজ্ঞাই এসকিউএল সার্ভার ২০০৮, ২০০৮ আর 2 এবং ডেনালিতে রয়ে গেছে; সুতরাং এটি এসকিউএল সার্ভার 2005-এর সাথে নির্দিষ্ট নয়।

ধন্যবাদ, জেফ


6

কিছু ক্ষেত্রে, আপনি ভার্চর ক্ষেত্রের জন্য যে পরিমাণ জায়গা বরাদ্দ করেন তা মেমরির জন্য বাছাই করা মেমরির পরিমাণকে প্রভাবিত করে।

আমি এসকিউএল ওয়ার্কশপস ডট কম-এ উপস্থাপনাগুলি খুঁজে পেয়েছিলাম বলে মনে করি যে এটি উত্তেজক হয়ে উঠেছে this

http://webcasts2.sqlworkshops.com/webcasts.asp

এই ওয়েবকাস্টটি নিম্নলিখিত ওয়েবসাইটটিতে একটি নিবন্ধ হিসাবে উপস্থাপন করা হয়েছিল:

http://www.mssqltips.com/tip.asp?tip=1955

এই উপস্থাপনায় নোট করুন যে কলামটি সাজানো হচ্ছে তা চর / বার্চারের কলাম নয়, তবে মেমরিতে ভার্চর কলামের জন্য বরাদ্দ করা জায়গার পরিমাণ কিছু ক্ষেত্রে ক্যোয়ারী পারফরম্যান্সে একটি পার্থক্য তৈরি করে।


4

এএনএসআইপ্যাডিং সেট করবেন?

আপনি প্রচুর ট্রেলিং হোয়াইটস্পেস দিয়ে শেষ করেন ...


3

এটি কেবল ডিস্ক স্পেস এবং চরিত্রের দৈর্ঘ্যের সাথে সম্পর্কিত। অবশ্যই এই জাতীয় ডেটাতে চর ডেটা টাইপ এবং সূচীর উপর অনুসন্ধান পূর্ণসংখ্যার চেয়ে ধীর গতিতে কাজ করবে তবে এটি অন্য আলোচনা।

ভারচার ডেটা টাইপ হ'ল "ভেরিয়েবল" ডেটা টাইপ তাই আপনি যদি এই ক্ষেত্রটির জন্য সর্বোচ্চ বর্ণের দৈর্ঘ্যের চেয়ে ভার্চারের (500) সীমা নির্ধারণ করেন। সর্বনিম্ন দৈর্ঘ্য 0 এবং 500 এর মধ্যে হতে পারে the অন্যদিকে দাবি করা ডিস্কের স্থানটি 10, 30 বা 500 অক্ষরের ক্ষেত্রে পৃথক হবে।

আমি মাঝে মাঝে ডেটা টাইপ বারচর (800) এবং নাল মানগুলির জন্য আমার 17 বাইট ব্যবহার করেছিলাম এবং প্রতিটি চরিত্রের জন্য এটিতে আরও একটি বাইট যুক্ত করা হয়েছিল test উদাহরণস্বরূপ, একটি 400 অক্ষরের স্ট্রিংটিতে ডিস্কে 417 বাইট ব্যবহৃত হয়েছিল।


3

আমার মনে হয় না যে ভার্চর (20) বা বর্ণচর (8000) কলাম দিয়ে তৈরি টেবিলের মধ্যে কোনও পার্থক্য রয়েছে, যতক্ষণ না প্রকৃত সর্বোচ্চ দৈর্ঘ্য <= 20 হয়।

অন্যদিকে, কিছু ক্ষেত্রে ব্যবহারকারীদের দীর্ঘতর স্ট্রিংগুলি সংরক্ষণের সম্ভাবনা দেওয়া তাদের এটি করতে উত্সাহিত করতে পারে।

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