এটি সারণী এবং সূচকের আকার হ্রাস করতে পারে (জোর যুক্ত করা)
আকার কমানো একমাত্র সম্ভাব্য হলে সবচেয়ে অক্ষরের মূলত হয় [space]
, 0 - 9
, A - Z
, a - z
, এবং কিছু মৌলিক যতিচিহ্ন। অক্ষরের এই নির্দিষ্ট সংকলনের বাইরে (ব্যবহারিক ব্যবহারের শর্তাবলী, স্ট্যান্ডার্ড ASCII মান 32 - 126), আপনি আকার / UTF-16 এর তুলনায় সর্বোত্তম হতে পারবেন NVARCHAR
বা অনেকগুলি ক্ষেত্রে বৃহত্তর।
আমি ডেটা স্থানান্তর করার পরিকল্পনা করছি কারণ আমি বিশ্বাস করি যে কম ডেটা পড়লে সিস্টেমের পক্ষে সর্বোত্তম পারফরম্যান্স ঘটতে পারে।
সাবধান হও. ইউটিএফ -8 কোনও জাদু নয় "সবকিছু ঠিক করুন" স্যুইচ। অন্যান্য সমস্ত জিনিস সমান হচ্ছে, হ্যাঁ, কম পড়া কার্যকারিতা উন্নত করে। তবে এখানে "অন্যান্য সমস্ত জিনিস" সমান নয় । এমনকি যখন কেবলমাত্র স্ট্যান্ডার্ড এএসসিআইআই অক্ষর সংরক্ষণ করা হয় (অর্থাত: সমস্ত অক্ষর 1 বাইট হয়, সুতরাং সংরক্ষণের তুলনায় অর্ধেক জায়গার প্রয়োজন হয় NVARCHAR
), ইউটিএফ -8 ব্যবহারের জন্য সামান্য পারফরম্যান্স জরিমানা রয়েছে। আমি বিশ্বাস করি যে সমস্যাটি ইউটিএফ -8 একটি পরিবর্তনশীল দৈর্ঘ্যের এনকোডিং হওয়ার কারণে, যার অর্থ এটি একটি সম্পূর্ণ চরিত্র কিনা বা পরবর্তী বাইটটি এর একটি অংশ কিনা তা জানতে প্রতিটি বাইটটি পড়ার সাথে সাথে তা ব্যাখ্যা করতে হবে। এর অর্থ হ'ল সমস্ত স্ট্রিং অপারেশনগুলির শুরুতে শুরু হওয়া এবং বাই বাই বাই চালানো দরকার। অন্য দিকে,NVARCHAR
/ ইউটিএফ -16 সর্বদা 2 বাইট (এমনকি পরিপূরক অক্ষর দুটি 2-বাইট কোড পয়েন্ট সমন্বিত থাকে), তাই 2-বাইট খণ্ডে সমস্ত কিছু পড়া যায়।
আমার পরীক্ষায়, এমনকি কেবলমাত্র স্ট্যান্ডার্ড এএসসিআইআই অক্ষর সহ, ইউটিএফ -8 হিসাবে ডেটা সংরক্ষণ করে সময় অতিবাহিত হয়নি, তবে সিপিইউ সময়ের জন্য অবশ্যই খারাপ ছিল। এবং এটি ডেটা সংক্ষেপণ ছাড়াই ছিল, সুতরাং কমপক্ষে সেখানে ডিস্কের কম জায়গা ব্যবহৃত হয়েছিল। তবে, সংক্ষেপণ ব্যবহার করার সময়, ইউটিএফ -8 এর জন্য প্রয়োজনীয় স্থানটি ছিল মাত্র 1% - 1.5% ছোট। ইউটিএফ -8 এর জন্য কার্যকরভাবে কোনও স্থানের সঞ্চয় এখনও সিপিইউর বেশি নয়।
NVARCHAR(MAX)
ইউনিকোড কম্প্রেশন যেহেতু সেই ডেটাটাইপটির সাথে কাজ করে না, ব্যবহার করার সময় জিনিসগুলি আরও জটিল হয়ে ওঠে, এমনকি যদি মানটি সারিতে রাখার জন্য যথেষ্ট পরিমাণে ছোট থাকে। তবে, ডেটা যদি পর্যাপ্ত পরিমাণে ছোট হয় তবে এটি সারি বা পৃষ্ঠা সংক্ষেপণ থেকে উপকৃত হওয়া উচিত (সেক্ষেত্রে এটি আসলে ইউটিএফ -8 এর চেয়ে দ্রুত হয়ে যায়)। তবে অফ-সারি ডেটা কোনও সংক্ষেপণ ব্যবহার করতে পারে না। তবুও, টেবিলটিকে একটি ক্লাস্টারযুক্ত কলামস্টোর সূচক তৈরি করা এর আকারকে হ্রাস করে দেয় NVARCHAR(MAX)
(এমনকি যদি এটি ক্লাস্টারড কলামস্টোর সূচক ব্যবহার করার সময় ইউটিএফ -8 এর চেয়ে কিছুটা বড় হয়)।
যে কেউ ইউটিএফ এনকোডিং সহ চর ডেটা ধরণের ব্যবহার না করার জন্য কোনও দৃশ্য ও কারণ নির্দেশ করতে পারে
স্পষ্টভাবে. আসলে, বেশিরভাগ ক্ষেত্রেই এটি ব্যবহার করার জন্য আমি সত্যিই বাধ্যতামূলক কারণ খুঁজে পাই না। কেবলমাত্র ইউটিএফ -8 থেকে সত্যই উপকার পাওয়া যায়:
- ডেটা বেশিরভাগ স্ট্যান্ডার্ড ASCII (মান 0 - 127)
- এটি ইউনিকোড হওয়া দরকার কারণ এটি কোনও একক 8-বিট কোড পৃষ্ঠাতে উপলব্ধ (যেমন ) এর চেয়ে আরও বিস্তৃত অক্ষর সংরক্ষণ করতে পারে might
VARCHAR
- বেশিরভাগ ডেটা সারি-সারি সঞ্চিত থাকে (সুতরাং পৃষ্ঠা সংক্ষেপণ এমনকি কাজ করে না)
- আপনার কাছে পর্যাপ্ত ডেটা রয়েছে যা আপনার প্রয়োজন-অ-ক্যোরিয়াম-পারফরম্যান্স কারণে আকার হ্রাস করতে চান (যেমন ব্যাকআপের আকার হ্রাস করুন, ব্যাকআপ / পুনরুদ্ধার করার জন্য প্রয়োজনীয় সময় কমিয়ে দিন ইত্যাদি)
- আপনি ক্লাস্টারড কলামস্টোর সূচক ব্যবহার করতে পারবেন না (সম্ভবত সারণীর ব্যবহার এই ক্ষেত্রে কর্মক্ষমতা আরও খারাপ করে?)
আমার পরীক্ষাটি দেখায় যে প্রায় সব ক্ষেত্রেই এনভিসার্কার দ্রুত ছিল, বিশেষত যখন আরও বেশি ডেটা ছিল। প্রকৃতপক্ষে, সারি প্রতি 5k অক্ষরের গড় 21k সারিগুলিকে ইউটিএফ -8 এর জন্য 165 এমবি এবং সঙ্কুচিত হওয়ার জন্য 236 এমবি প্রয়োজন NVARCHAR
। এবং এখনও NVARCHAR
অতিবাহিত সময়ে 2x দ্রুত এবং সিপিইউ সময়ে কমপক্ষে 2x দ্রুত (কখনও কখনও আরও) ছিল। তবুও, এটি ডিস্কে আরও 71 এমবি গ্রহণ করেছে।
এর বাইরেও, আমি ইউটিএফ -8 ব্যবহার করার পরামর্শ দেব না, কমপক্ষে সিটিপি 2 হিসাবে, এই বৈশিষ্ট্যটিতে পাওয়া বিভিন্ন ধরণের বাগের কারণে।
এই নতুন বৈশিষ্ট্যের বিশদ বিশ্লেষণের জন্য, ইউটিএফ -16 এবং ইউটিএফ -8 এর মধ্যে পার্থক্যের ব্যাখ্যা এবং এই বাগগুলির তালিকা সহ, দয়া করে আমার পোস্টটি দেখুন:
এসকিউএল সার্ভার 2019 এ নেটিভ ইউটিএফ -8 সমর্থন: ত্রাণকর্তা বা ভ্রান্ত নবী?