ভারচর (সর্বাধিক) 8000 কলাম বোঝা এবং কেন আমি এতে 8000 টিরও বেশি অক্ষর সঞ্চয় করতে পারি


13

থেকে এই মাইক্রোসফট ডক +

n স্ট্রিংয়ের দৈর্ঘ্য নির্ধারণ করে এবং 1 থেকে 8,000 এর মধ্যে মান হতে পারে। সর্বোচ্চ নির্দেশ করে যে সর্বাধিক স্টোরেজ আকার 2 ^ 31-1 বাইট (2 গিগাবাইট)। স্টোরেজের আকার হ'ল + 2 বাইট প্রবেশ করা ডেটার আসল দৈর্ঘ্য।

আমাকে এই বুঝতে সাহায্য করুন।

বর্ণের জন্য সর্বাধিক অক্ষরগুলি মনে হয় 8000, যা 2GBডেটার যোগ্যতার চেয়ে কম ।

আমি দেখতে পাচ্ছি যে varchar(max)সুনির্দিষ্ট টেবিলের এই কলামে রেকর্ড রয়েছে যা len(mycolumn)> 100,000 Thus সুতরাং আমি জানি আমি কলামে 8000অক্ষরের চেয়েও বেশি উপায় পেতে পারি varchar(max)

প্রশ্ন 1:8000 চরিত্রগুলি কীভাবে অভিনয় করতে আসে এবং আমার এটি সম্পর্কে কোথায় সচেতন হওয়া উচিত?

প্রশ্ন 2 : এই কলামটিতে একটি নেট ডেটারিডার কোয়েরি 100 %+ অক্ষর সহ সর্বদা পূর্ণ ফলাফলটি ফিরিয়ে দেবে?


নোট যা varchar(max)একবার ডাকা textহত এবং এটি একটি আলাদা ডেটা ধরণের হিসাবে বিবেচিত হয়েছিল।
মিস্টার লিস্টার

এই পড়তে পারে ? এটি 8K পৃষ্ঠার আকারের সাথে সম্পর্কিত । একক পৃষ্ঠায় ফিট করার জন্য খুব বড় মানগুলি (সীমাটি আসলে 8000 এর চেয়ে কিছুটা বড়) LOB_DATA পৃষ্ঠাগুলিতে (বৃহত্তর ওবজেক্ট) সংরক্ষণ করা হয়।
জাস্টিন

উত্তর:


30

আপনি কেন এটি ভুল বুঝছেন তা আমি দেখতে পাচ্ছি - এটি কিছুটা জটিল। এগুলি সমস্ত বৈধ:

  • VARCHAR (1) - একটি অক্ষরের স্ট্রিং
  • VARCHAR (4000) - 4,000 অক্ষর
  • VARCHAR (8000) - 8,000 টি অক্ষর - এবং আপনি যদি এই ক্ষেত্রের সংজ্ঞাটির জন্য একটি নম্বর ব্যবহার করেন তবে এটি আপনি ব্যবহার করতে পারবেন সর্বোচ্চ নম্বর, তবে এটি দেখুন:
  • ভর্চার (ম্যাক্স) - যেটি 2 গিগাবাইট পর্যন্ত ধারণ করে।

এবং হ্যাঁ, আপনি যদি কোনও ভিআরচারার (ম্যাক্স) ক্ষেত্র থেকে ডেটা বের করার চেষ্টা করেন এবং কেউ সেখানে 2 জিবি সঞ্চয় করে রাখেন, তবে বাকল আপ করুন।


3
and somebody stored 2GB in there, buckle up.- কয়েকটি ব্লব ফাইল নিয়ে সেখানে এসেছেন
রুসলান

7

প্রশ্ন 1: 8000 টি চরিত্র কীভাবে কার্যকর হবে এবং আমার এটি সম্পর্কে কোথায় সচেতন হওয়া উচিত?

8000 এ এন সেট করা 8000 টি অক্ষর খেলতে আসে। চর, এনসিএআর, এনভারচার এবং ভারচার সম্পর্কে যথার্থতা, স্কেল এবং দৈর্ঘ্য (লেনদেন-এসকিউএল) রেফারেন্স সম্পর্কে আপনাকে সচেতন হওয়া দরকার । বিপরীতে, এন-এ সর্বোচ্চ (কোনও উদ্ধৃতি) নির্ধারণের ফলে এসকিউএল সার্ভার সর্বাধিক সংখ্যক বাইট (আপনার উদ্ধৃতিতে উল্লিখিত) সঞ্চয় করে।

প্রশ্ন 2: এই কলামটিতে একটি নেট ডেটারিডার কোয়েরি 100 %+ অক্ষর সহ সর্বদা পূর্ণ ফলাফলটি ফিরিয়ে দেবে?

এটি একটি নেট। (কোনও এসকিউএল সার্ভার নয়) একটি প্রশ্ন, কিন্তু। নেট ডাটাবেসক বাইটসের একটি স্ট্রিম নিয়ে আসে। বাইট কোনও অক্ষর নয় এবং এসকিউএল সার্ভার বাইটগুলি (অক্ষর নয়) প্রদান করে। যদি এন 8000 এ সেট করা থাকে এবং ডেটা টাইপটি নব্যচার হয়, এসকিউএল সার্ভার 8000 বাইট পর্যন্ত ফেরত দেয়, নেট ডেটারিডার 4000 ইউনিকোড অক্ষর হিসাবে ব্যাখ্যা করতে পারে। যদি এন 8000 এ সেট করা থাকে এবং ডেটা টাইপটি ভারচার হয় তবে এসকিউএল সার্ভার 8000 বাইট পর্যন্ত ফিরে আসে, যা নেট ডেটারিডার 8000 এএনএসআই অক্ষর পর্যন্ত ব্যাখ্যা করতে পারে। যদি n সর্বাধিক সেট করা থাকে এবং ডেটা টাইপ nvarchar হয়, এসকিউএল সার্ভার 2 ^ 31-1 বাইট অবধি ফিরে আসে, যা নেট ডেটারিডার (2 ^ 31-1) / 2 অক্ষর পর্যন্ত ব্যাখ্যা করতে পারে। যদি এন সর্বাধিকতে সেট করা থাকে এবং ডেটা টাইপটি বার্চর হয়, এসকিউএল সার্ভার 2 ^ 31-1 বাইট পর্যন্ত প্রত্যাবর্তন করে যা নেট ডেটারিডার 2 ^ 31-1 এএনএসআই অক্ষর পর্যন্ত ব্যাখ্যা করতে পারে।

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

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