এর আগেও অনুরূপ প্রশ্ন করা হয়েছিল
মাইএসকিউএল ভোরচার আকারের পারফরম্যান্সের প্রভাব lic
এখানে আমার উত্তরের অংশটি দেওয়া হল
আপনাকে অবশ্যই CHAR বনাম VARCHAR ব্যবহারের ট্রেড অফগুলি বুঝতে হবে
CHAR ক্ষেত্রের সাথে, আপনি যা বরাদ্দ করেন তা হ'ল যা আপনি পান। উদাহরণস্বরূপ, CHAR (15) 15 বাইট বরাদ্দ করে এবং সঞ্চয় করে, আপনি ক্ষেত্রের মধ্যে যতগুলি অক্ষর রাখেন তা নির্বিশেষে। স্ট্রিং ম্যানিপুলেশন সহজ এবং সোজা, যেহেতু ডেটা ক্ষেত্রের আকার সম্পূর্ণ অনুমানযোগ্য।
VARCHAR ক্ষেত্রগুলির সাথে, আপনি একটি সম্পূর্ণ আলাদা গল্প পাবেন। উদাহরণস্বরূপ, ভোরচার (১৫) আসলে ডাইনামিকভাবে 16 বাইট অবধি, ডেটার জন্য 15 অবধি এবং কমপক্ষে 1 অতিরিক্ত বাইট উপাত্তের দৈর্ঘ্য সংরক্ষণ করার জন্য বরাদ্দ করে। স্ট্রিংটিতে 'হ্যালো' স্টোর থাকলে that বাইট লাগবে, ৫ টি নয় St স্ট্রিং ম্যানিপুলেশন সর্বদা সব ক্ষেত্রে দৈর্ঘ্য পরীক্ষার কিছু ফর্ম করা উচিত।
আপনি দুটি কাজ করার সময় ট্রেডঅফটি আরও স্পষ্ট হয়: ১ লক্ষ বা বিলিয়ন বিলিয়ন সারিগুলি সংরক্ষণ করা 2. ইনচারেক্সিং কলামগুলি যা হয় চার্চ বা ভ্রচারের হয়
TRADEOFF # 1 স্পষ্টতই, ভেরচারের সুবিধা রয়েছে যেহেতু ভেরিয়েবল-দৈর্ঘ্যের ডেটা আরও কম সারি তৈরি করে এবং এভাবে ছোট ছোট শারীরিক ফাইল তৈরি করে।
TRADEOFF # 2 যেহেতু CHAR ক্ষেত্রগুলিকে স্থির ক্ষেত্রের প্রশস্ততার কারণে কম স্ট্রিং ম্যানিপুলেশন প্রয়োজন, CHAR ক্ষেত্রের বিপরীতে সূচী প্রদর্শনগুলি ভিউচারার ক্ষেত্রের তুলনায় গড়ে ২০% দ্রুত। এটি আমার পক্ষে কোনও অনুমান নয়। এটি প্রমাণ করার জন্য মাইএসকিউএল ডেটাবেস ডিজাইন এবং টিউনিং বইটি মাইআইএসএএম টেবিলে দুর্দান্ত কিছু সম্পাদন করেছে। বইয়ের উদাহরণ নীচের মত কিছু করেছে:
ALTER TABLE tblname ROW_FORMAT=FIXED;
এই নির্দেশিকাটি সমস্ত ভ্রচারকে চর হিসাবে আচরণ করতে বাধ্য করে। আমি 2007 সালে ফিরে আমার আগের কাজটিতে এটি করেছি এবং একটি 300 গিগাবাইট টেবিল নিয়েছি এবং অন্য কোনও পরিবর্তন ছাড়াই 20% দ্বারা সূচী দর্শনগুলি বাড়িয়েছি। এটি প্রকাশিত হিসাবে কাজ করে। তবে এটি প্রায় দ্বিগুণ আকারের একটি টেবিল তৈরি করেছিল, তবে এটি কেবল ট্রেড অফ # 1 এ ফিরে যায়।
মাইএসকিউএল কলাম সংজ্ঞায়নের জন্য কী প্রস্তাব দেয় তা দেখতে আপনি সংরক্ষণ করা ডেটা বিশ্লেষণ করতে পারেন। যে কোনও টেবিলের বিরুদ্ধে কেবল নিম্নলিখিতটি চালান:
SELECT * FROM tblname PROCEDURE ANALYSE();
এটি পুরো টেবিলটি অতিক্রম করবে এবং এতে থাকা ডেটা, ন্যূনতম ক্ষেত্রের মান, সর্বাধিক ক্ষেত্রের মান এবং আরও কিছু উপর ভিত্তি করে প্রতিটি কলামের জন্য কলাম সংজ্ঞা প্রস্তাব করবে। কখনও কখনও, আপনাকে কেবল CHAR বনাম VARCHAR পরিকল্পনা করার সাথে সাধারণ জ্ঞান ব্যবহার করতে হবে। এখানে একটি ভাল উদাহরণ:
আপনি যদি আইপি ঠিকানাগুলি সঞ্চয় করে থাকেন তবে এই জাতীয় কলামের মুখোশ সর্বাধিক 15 টি অক্ষর (xxx.xxx.xxx.xxx)। আমি CHAR(15)
হৃৎস্পন্দনে ডানদিকে ঝাঁপিয়ে পড়ব কারণ আইপি অ্যাড্রেসের দৈর্ঘ্য এত বেশি হবে না এবং অতিরিক্ত বাইট দ্বারা নিয়ন্ত্রিত স্ট্রিং ম্যানিপুলেশনের যুক্ত জটিলতা। আপনি এখনও এই PROCEDURE ANALYSE()
জাতীয় কলামের বিরুদ্ধে একটি করতে পারেন । এটি এমনকি VARCHAR সুপারিশ করতে পারে। আমার অর্থ এই মুহুর্তে ভ্রচারের তুলনায় CHAR এ থাকবে।
CHAR বনাম VARCHAR সমস্যাগুলি কেবল সঠিক পরিকল্পনার মাধ্যমে সমাধান করা যেতে পারে be দুর্দান্ত শক্তির সাথে আসে মহান দায়িত্ব (ক্লিচ তবে সত্য)।
হালনাগাদ
যখন এমডি 5 এর কথা আসে, strlen
সম্পূর্ণ সারি বিন্যাসটি স্যুইচ করার সময় অভ্যন্তরীণভাবে গণনাটি বাদ দেওয়া উচিত। মাঠ সংজ্ঞা পরিবর্তন করার প্রয়োজন হবে না।
যদি এমডি 5 কীটি কেবল ভিচারার উপস্থিত থাকে তবে আমি এটির জন্য গিয়ে টেবিলের সারি ফর্ম্যাটটিকে স্থির করে দেব । যদি উপস্থিত অন্যান্য ভিআচআরএআর ক্ষেত্রগুলির একটি উল্লেখযোগ্য সংখ্যা উপস্থিত থাকে তবে তারাও উপকৃত হবে। বিনিময়ে, টেবিলটি তার আকারের দ্বিগুণ হয়ে প্রসারিত হবে। তবে অতিরিক্ত টিউনিং ছাড়াই ক্যোয়ারিগুলিকে প্রায় 20% বেশি গতি বাড়ানো উচিত।