অক্ষর বনাম পূর্ণসংখ্যার প্রাথমিক কীগুলি


30

আমি মূল সত্তার সম্ভাব্য বৈশিষ্ট্যযুক্ত একাধিক লুক টেবিল সহ একটি ডাটাবেস ডিজাইন করছি। আমি স্বতঃবৃদ্ধি পূর্ণসংখ্যার চেয়ে এই লকিংয়ের মানগুলি চিহ্নিত করতে একটি 4 বা 5-অক্ষরের কীটি ব্যবহার করার কথা ভাবছি যাতে আমি যখন প্রধান টেবিলগুলিতে এই বৈশিষ্ট্যগুলি আইডি সঞ্চয় করি তখন আমি কেবল এলোমেলো সংখ্যার পরিবর্তে অর্থবহ মান দেখতে পাব।

একটি পূর্ণসংখ্যার চেয়ে ক্যারেক্টার ফিল্ডকে প্রাথমিক কী হিসাবে ব্যবহার করার পারফরম্যান্সের কী কী প্রভাব রয়েছে?

আমি মাইএসকিউএল ব্যবহার করছি যদি এটি গুরুত্বপূর্ণ।

[সম্পাদনা]
এই সন্ধানের টেবিলগুলিতে অবিচ্ছিন্নভাবে নতুন রেকর্ড যুক্ত হয়েছে। সেগুলি ম্যানুয়ালি রক্ষণাবেক্ষণ করা হয় এবং চরিত্র-ভিত্তিক কীগুলি ম্যানুয়ালি পাশাপাশি তৈরি করা হয়। এখানে একটি উদাহরণ:

      CUISINES
 ID      Description
-----  --------------
CHNSE  Chinese
ITALN  Italian
MXICN  Mexican

উত্তর:


22

এটি আপনার ইঞ্জিনের উপর নির্ভর করে। সাধারণ জ্ঞান হ'ল পাঠগুলি সস্তা, এখানে কয়েকটি বাইট এবং ছোট থেকে মাঝারি আকারের ডাটাবেসের কার্যকারিতাটিতে উল্লেখযোগ্যভাবে প্রভাব ফেলবে না।

আরও গুরুত্বপূর্ণ, এটি আপনি কী ব্যবহার করবেন তার উপর নির্ভর করে। পূর্ণসংখ্যার সিরিয়ালগুলি ব্যবহার ও বাস্তবায়নে সহজ হওয়ার সুবিধা রয়েছে। তারা, সিরিয়ালাইজেশন পদ্ধতির নির্দিষ্ট প্রয়োগের উপর নির্ভর করে দ্রুত উপার্জনযোগ্য হওয়ার সুবিধাও রয়েছে , কারণ বেশিরভাগ ডাটাবেসগুলি সিরিয়াল নম্বরটি Select max(ID)+1 from fooউড়ে যাওয়ার পরিবর্তে স্থির স্থানে সংরক্ষণ করে।

প্রশ্নটি হয়ে ওঠে: 5 টি অক্ষরের কী কীভাবে আপনার এবং অ্যাপ্লিকেশনটির কাছে "অর্থবহ মান" উপস্থাপন করে? এই মানটি কীভাবে তৈরি করা হয়, এবং ক্রমবর্ধমান ক্রমিক সংখ্যা খুঁজে পাওয়ার চেয়ে কম-বেশি সময় লাগে কি না? কিছু পূর্ণসংখ্যার মধ্যে যখন একটি তুচ্ছ পরিমাণ সঞ্চয় স্থান রয়েছে, তবুও বেশিরভাগ সিস্টেমগুলি এই স্থান সঞ্চয়কে উপেক্ষা করবে।

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

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

যদি আমার 10,000 টি রেসিপি থাকে তবে 5-অক্ষর এবং 20-অক্ষরের কী যুক্ত হওয়া শুরু হয় না?

স্থান সস্তা । আপনি যখন 10,000,000 রেসিপিগুলির সাথে কথা বলছেন যখন আপনি ওএলএপ অপারেশন করছেন, তখন সম্ভবত। 10 কে রেসিপি সহ, আপনি 150k স্পেসের দিকে তাকাচ্ছেন।

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

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


@ ব্রায়ানবালসুন-স্ট্যান্টন যদি আপনার কাছে এমন কোনও বৃহত্তর অনুক্রমিক ডেটা থাকে যা এই অনুসন্ধানের টেবিলগুলিতে নির্ভর করে তবে স্টোরেজ স্পেসটি কম নয় (কোয়েরি গতির দিক থেকে) কারণ ডিস্ক পড়ার গতি কোনও আরডিবিতে বাধা যা পুরোপুরি র‍্যামে ক্যাশে যায় না। আমি একটি আরডিবি স্কিমার বিকাশ করার সময় এটি পেয়েছি যা সময় ধারাবাহিক ডিবি ব্যবসায় সেরা প্রকাশের সাথে সেরা প্রতিযোগিতা করতে পারে , আমার স্কাইস্পার্কের সাথে কোনও সম্পর্ক নেই, এ ছাড়া তারা আমার নিয়োগকর্তাকে তাদের অত্যন্ত দক্ষ ডিবি ব্যবহারের জন্য প্রচুর পরিমাণে চার্জ করে।
hobs

8

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


3

আসল প্রশ্নটি হ'ল ডিবি ক্যোয়ারী পারফরম্যান্স আপনার অ্যাপ্লিকেশন (ডেটার আকার) এর জন্য আদৌ তাৎপর্যপূর্ণ। যদি আপনার ক্যোয়ারী মাইক্রোসেকেন্ড নেয় তবে Intকী ব্যবহার করে সেই মাইক্রোসেকেন্ডগুলির কয়েকটি সংরক্ষণ করা পঠনযোগ্যতা / রক্ষণাবেক্ষণযোগ্যতা জরিমানার উপযুক্ত নয়। তবে, যদি আপনার ক্যোয়ারিতে কয়েক মিনিট সময় লাগে, তবে সেই কয়েক মিনিটের কিছু সঞ্চয় করা Intকীগুলির ব্যথার জন্য মূল্যবান হতে পারে ।

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

আপনার যদি কোনও সন্ধানের টেবিলের সাথে লিঙ্ক (সম্পর্ক) রয়েছে এমন অনেকগুলি অনুক্রমিক ডেটা (লগ ফাইল, টাইম সিরিজ, অ্যানালিটিক্স, পাঠ্য বা স্পিচ কর্পোরো) থাকে তবে আপনি দেখতে পাবেন যে স্টোরেজ স্পেসটি ক্যোয়ারী গতির জন্য জটিল, যদিও @ Ballsun-স্টানটন এর কিভাবে সঠিক বিশ্লেষণ সস্তা স্থান $ হয়। যেহেতু বেশিরভাগ ক্যোয়ারির সময় (ক্রমানুসারে ডেটার জন্য) ডিস্কটি পড়তে ব্যয় করা হয় তাই সময়ের ব্যবধানে স্থান মোটামুটি সস্তা নয় (সামগ্রিক ক্যোয়ারী সময়ের শতাংশ হিসাবে)। সুতরাং, যদি না আপনার আরডিবি স্বয়ংক্রিয়ভাবে এবং দক্ষতার সাথে সমস্ত বিদেশী কীগুলি (সম্পর্কিত রেকর্ডগুলির কীগুলি) সংকুচিত / সংক্রামিত করে, আপনি আপনার সমস্ত কীগুলি হতে চান Intযা তথ্য প্রতি ইউনিট ডিস্ক স্পেসের (এবং পড়ার গতিতে) সবচেয়ে কার্যকর want সামগ্রী (এনট্রপি)। মাইএসকিএলে FYI মাইআইএসএএম প্রতিবন্ধকতা রাখেসংকুচিত ডেটা সারিগুলির সাথে আপনি কী করতে পারেন (কেবল পঠনযোগ্য)। অন্য কথায় , বেশিরভাগ ডিবি পূর্ণসংখ্যার ক্ষেত্রগুলিতে স্বল্প ন্যূনতম আকারের সীমাবদ্ধতার কারণে স্বয়ংক্রিয়ভাবে বর্ধিত পূর্ণসংখ্যাগুলি তাত্ত্বিকভাবে যতটা সম্ভব ইতিমধ্যে সংকুচিত হয় । এবং যে সংকোচনের ছাড়াই আসে:

  1. কোয়েরি-সময় সংক্ষেপণ / ডিকম্প্রেশন পেনাল্টি
  2. ক্যোয়ারী-সময় ডিস্ক পেনাল্টি পড়ুন
  3. কেবল পঠনযোগ্য বা সংক্ষেপিত ডেটা রেকর্ড বা কীগুলিতে অন্যান্য ডিবি বিধিনিষেধ

জঙ্গোর মতো জনপ্রিয়, দক্ষ ওআরএমগুলি পিকেগুলির জন্য স্বয়ংক্রিয়-বৃদ্ধিকরণ পূর্ণসংখ্যার কাছে ডিফল্ট এবং অন্যান্য এসও প্রশ্নগুলির কেন একই সিদ্ধান্তে আসে তার কারণ রয়েছে।

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