এনভিচারার (ম্যাক্স) সংকোচনের বিকল্প উপায়?


14

আমি NVARCHAR(MAX)ক্ষেত্রগুলি রয়েছে এমন কয়েকটি সারণী সংক্ষেপণের চেষ্টা করছি । দুর্ভাগ্যক্রমে, rowএবং pageসংকোচনের ইচ্ছা প্রভাব নেই (20 গিগাবাইট টেবিলের জন্য কেবল ~ 100/200 মেগাবাইট সংরক্ষণ করা হয়েছে)। এছাড়াও, আমি কলাম স্টোর এবং কলাম স্টোর সংরক্ষণাগার সংকোচনগুলি প্রয়োগ করতে পারছি না কারণ তারা NVARCHAR(MAX)ক্ষেত্রগুলির সংকোচন সমর্থন করে না ।

এখানে আমার কোনও বিকল্প আছে কি কেউ বলতে পারবে?

আমি অনুমান করি rowএবং pageসংক্ষেপণের কোনও কার্যকারিতা নেই কারণ NVARCHAR(MAX)কলামগুলির সামগ্রীটি অনন্য।


2
কলামের মানগুলি কি 8000 টির চেয়ে বেশি বিস্তৃত? যেমন নির্বাচন করুন ম্যাক্স (ক্যাসেট (লেন (উইডিকোলোম) AS বিগিন্ট)) থেকে dbo.largeTable অন্যথায় আপনি এগুলিকে সাধারণ বারচারে রূপান্তর করতে এবং ক্লাস্টারযুক্ত কলামস্টোর প্রয়োগ করতে পারেন।
ডব্লিউবি

@Wobi এমনকি যদি বৃহত্তম মানটি কেবলমাত্র 2000 টি অক্ষর ছিল VARCHARতবে 1 টিরও বেশি পৃষ্ঠা পৃষ্ঠা থেকে অক্ষর ব্যবহার করা থাকলে এটি সম্ভাব্য তথ্য হ্রাস ঘটায় না ? আমি মনে করি পরামর্শটি রূপান্তর করতে হবে NVARCHAR(4000)যদি সর্বাধিক দৈর্ঘ্য 4000 এর বেশি না হয় তবে সমস্ত মান সম্পূর্ণ ইউনিকোড সংক্ষেপণের জন্য যোগ্য হবে। তবুও, প্রশ্নটিতে থাকা তথ্য থেকে ধারণা করা নিরাপদ যে মানগুলি 4000 টিরও বেশি অক্ষরের চেয়ে বেশি, এই কারণেই তারা বর্তমানে সংকোচ করছে না।
সলোমন রুটজকি

উত্তর:


16

পৃষ্ঠা এবং সারি উভয় সংকোচনেই বিএলওবিগুলি সংকুচিত করে না

তাদের আকারের কারণে, বড়-মূল্যবান ডেটা টাইপগুলি কখনও কখনও বিশেষ উদ্দেশ্যে পৃষ্ঠাগুলিতে সাধারণ সারি ডেটা থেকে পৃথকভাবে সংরক্ষণ করা হয়। পৃথকভাবে সঞ্চিত ডেটাগুলির জন্য ডেটা সংক্ষেপণ উপলব্ধ নয়।

আপনি যদি বিএলওবিগুলি সঙ্কুচিত করতে চান তবে আপনার সেগুলি VARBINARY(MAX)আপনার নিজের স্ট্রিম সংকোচনের অ্যালগরিদম হিসাবে সংরক্ষণ করতে হবে । উদাহরণস্বরূপ GZipStream। এটি করার জন্য অনেকগুলি উদাহরণ রয়েছে, কেবল জিজেপস্ট্রিম এবং এসকিউএলসিএলআর অনুসন্ধান করুন।


10

কাস্টম সংক্ষেপণ সম্পাদন করার সম্ভাব্য দুটি উপায় রয়েছে:

  1. SQL সার্ভার 2016 থেকে শুরু করে আছে বিল্ট-ইন-এর জন্য ফাংশন কম্প্রেস এবং ডিকম্প্রেস । এই ফাংশনগুলি GZip অ্যালগরিদম ব্যবহার করে।

  2. আপনি যে কোনও অ্যালগরিদম চয়ন করেছেন তা প্রয়োগ করতে এসকিউএলসিএলআর ব্যবহার করুন (@ উত্তর হিসাবে রেমাস তার উত্তরে উল্লেখ করেছেন)। এই বিকল্পটি এসকিউএল সার্ভার ২০০ to-এর পূর্ববর্তী সংস্করণগুলিতে উপলভ্য, এসকিউএল সার্ভার ২০০ back-এ ফিরে যেতে পারে।

    জিজেপ একটি সহজ পছন্দ কারণ এটি নেট এবং সমর্থিত। নেট ফ্রেমওয়ার্ক লাইব্রেরিতে (কোডটি কোনও SAFEঅ্যাসেমব্লিতে থাকতে পারে ) পাওয়া যায়। অথবা, আপনি যদি জিজেপ চান তবে এটি কোডিং / মোতায়েনের সাথে ডিল করতে না চাইলে আপনি ইউটিলি_জিজেপ এবং ইউটিল_জিইউএনজিপ ফাংশনগুলি ব্যবহার করতে পারেন যা এসকিউএল # এসকিউএলসিআর লাইব্রেরির ফ্রি সংস্করণে পাওয়া যায় (যা আমি এর লেখক)।

    যদি আপনি জিজেপ ব্যবহার করার সিদ্ধান্ত নেন, আপনি নিজেরাই কোডিং দিচ্ছেন বা এসকিউএল # ব্যবহার করুন কিনা, দয়া করে সচেতন হন যে ভালের জন্য ফ্রেমওয়ার্ক সংস্করণ ৪.৪-তে পরিবর্তিত জিজেপ কম্প্রেশন করতে .NET এ ব্যবহৃত অ্যালগরিদম (এমএসডিএন-তে "মন্তব্যগুলি" বিভাগটি দেখুন) জিজেপস্ট্রিম ক্লাসের জন্য পৃষ্ঠা )। এর অর্থ:

    1. আপনি যদি এসকিউএল সার্ভার ২০০,, ২০০৮ বা ২০০৮ আর ২ ব্যবহার করে থাকেন - সবগুলি সিএলআর ভি ২.০ এর সাথে লিঙ্কযুক্ত যা ফ্রেমওয়ার্ক সংস্করণ ২.০, 3.0.০ এবং ৩.৫ হ্যান্ডেল করে - তবে ফ্রেমওয়ার্ক সংস্করণ ৪.৫ এ পরিবর্তনের কোনও প্রভাব নেই এবং আপনি দুর্ভাগ্যক্রমে আটকে আছেন .NET এর আসল, স্তন্যপায়ী অ্যালগরিদম।
    2. আপনি যদি এসকিউএল সার্ভার 2012 বা আরও নতুন (এতদূর 2014 এবং 2016) ব্যবহার করছেন - সমস্ত সিএলআর ভি 4.0 এর সাথে লিঙ্কযুক্ত যা ফ্রেমওয়ার্ক সংস্করণগুলি 4.0, 4.5.x, 4.6 পরিচালনা করে - তবে আপনি আরও নতুন, আরও ভাল অ্যালগরিদম ব্যবহার করতে পারেন। কেবলমাত্র প্রয়োজনটি হ'ল আপনি এসকিউএল সার্ভার চালিত সার্ভারে। নেট ফ্রেমওয়ার্কটি আপডেট করেছেন সংস্করণ 4.5 বা নতুনতর হতে।

    তবে আপনাকে জিজেপ ব্যবহার করতে হবে না এবং পছন্দ মতো কোনও অ্যালগোরিদম বাস্তবায়নের জন্য নিখরচায় রয়েছে।

অনুগ্রহ করে নোট করুন: উপরে উল্লিখিত সমস্ত পদ্ধতিগুলি প্রকৃত প্রতিস্থাপনের পরিবর্তে "কাজের আশেপাশের" বেশি, যদিও তারা প্রযুক্তিগতভাবে "এনভিচারার (ম্যাক্স)" ডেটা সংকুচিত করার বিকল্প উপায় are পার্থক্যটি হ'ল অন্তর্নির্মিত ডেটা সংক্ষেপণের সাথে - rowএবং page- এসকিউএল সার্ভার দ্বারা প্রদত্ত, সংক্ষেপণটি পর্দার আড়ালে পরিচালিত হয় এবং ডেটাটি এখনও ব্যবহারযোগ্য, পঠনযোগ্য এবং সূচকযোগ্য। তবে কোনও ডেটা সংকুচিত করে এমন একটি VARBINARYঅর্থ হয় যে আপনি স্থান সঞ্চয় করছেন তবে কিছু কার্যকারিতা ছেড়ে দিচ্ছেন। সত্য, একটি 20 কে স্ট্রিং যাইহোক ইনডেক্সযোগ্য নয়, তবে এটি এখনও একটিতে ব্যবহার করা যেতে পারেWHEREধারা, বা কোনও স্ট্রিং ফাংশন সহ। একটি কাস্টম সংকুচিত মান দিয়ে কিছু করার জন্য আপনাকে এটিকে ফ্লাইতে ডিকম্প্রেস করতে হবে। বাইনারি ফাইলগুলি সঙ্কুচিত করার সময় (পিডিএফ, জেপিইজি, ইত্যাদি) এটি একটি নন-ইস্যু, তবে এই প্রশ্নটি NVARCHARডেটার সাথে সুনির্দিষ্ট ছিল ।

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