সর্বাধিক দক্ষ ইউআইডি কলামের ধরণ কী


15

একটি 128 বিট ইউআইডি সংরক্ষণ করার জন্য একাধিক স্টোরেজ বিকল্প রয়েছে:

  1. একটি বাইট [16] কলাম
  2. দুটি বিগিন্ট / দীর্ঘ (b৪ বিট) কলাম
  3. একটি CHAR (36) কলাম - 32 হেক্স সংখ্যা + 4 ড্যাশ।
  4. একটি ইউআইডি ডাটাবেস নির্দিষ্ট কলাম, ডিবি যদি সমর্থন করে

সূচকের দিক থেকে কোনটি সবচেয়ে দক্ষ? ডিবি যদি কোনও উত্সর্গীকৃত ইউইড টাইপকে সমর্থন না করে তবে সেরা প্রার্থী 1, 2, 3 এর মধ্যে কোনটি?


1
এটি কিছুটা "এটি নির্ভর করে" - প্রচুর প্রয়োগের সুনির্দিষ্ট।
ক্রেগ রিঞ্জার

2
আমি কখনই 3 টি পছন্দ করব না: 16-এ করা যেতে পারে 36 টি বাইটে কখনও কোনও জিনিস সঞ্চয় করি না I আমি raw(16)ওরাকল এবং uuidপোস্টগ্র্যাসকিউএলএ ব্যবহার করি ।
কলিন টি হার্ট

1
আরও সহজতর।
আকুজিনস্কি

uuid>> bytea>> সীমাবদ্ধতার textসাথে >> >> । দেখুন: dba.stackexchange.com/a/89433/3684 এবং dba.stackexchange.com/a/115316/3684CHECKvarchar(36)char(36)
এরউইন ব্র্যান্ডসেটেটার

উত্তর:


15

একটি উত্সর্গীকৃত uuidটাইপ পোস্টগ্র্রেএসকিউএল এর জন্য আপনার সেরা বেট। অন্যান্য ডিবিদের সাথে বলা শক্ত - uuidকোনও সাধারণ বাইট টাইপের চেয়ে কম দক্ষতার সাথে সঞ্চিত এমন প্রকারের জন্য কারও পক্ষে ইমপ্লিমেন্ট করা অসম্ভব নয় ।

আবার পোস্টগ্রিজ এসকিউএল-তে byteaআপনার কাছে uuidপ্রকারটি না থাকলে ইউআইডিগুলি সঞ্চয় করার যুক্তিসঙ্গত উপায় হতে পারে । অন্যান্য ডিবি-র ক্ষেত্রে এটি নির্ভর করে যে তারা কীভাবে বাইনারি ডেটা সঞ্চয় করে।

যেখানে সম্ভব সেখানে আমি হেক্স-উইথ ড্যাশ ব্যবহার শক্তভাবে এড়াতে চাই। তুলনা, বাছাই এবং সঞ্চয় করার উপায়টি কম দক্ষ।

সুতরাং সত্যই, "(2) বা (3)" নয়। কখনো। সমর্থিত যেখানে (4) ব্যবহার করুন, (1) অন্যথায়।


একটি বিষয় লক্ষণীয় যে পোস্টগ্রিসএসকিউএল ইউআইডি টাইপটি অ্যারেগুলিতে স্থানীয়ভাবে সমর্থিত নয় বা এটি স্থির করা হয়েছে? postgresql.org/message-id/…
ক্রিস্টোফ রাউসি

@ ক্রিস্টোফের রসী এটি ২০১৩ সালের It এটি একটি সামান্য পর্যবেক্ষণ ছিল। SELECT ARRAY['ef1e0638-072e-4caa-88b3-97bfa5b2e8c3']::uuid[]
ক্রেগ রিঞ্জার

3

অগ্রাধিকার ক্রমে: 4,1,2,3 এসকিউএল সার্ভার হিসাবে ক্লাস্টারিং কী হিসাবে ইউআইডিগুলি ব্যবহার করবেন না, এটি কেবল খারাপভাবেই খণ্ডিত হবে না, ক্লাস্টারিং কীটি সমস্ত নন-ক্লাস্টারযুক্ত সূচীতে ব্যবহৃত হয় এবং আপনি সেই বাইটগুলি যুক্ত করতে চান প্রতিটি সূচি সারি। খণ্ড খণ্ডন NEWSEQUENTIALID ব্যবহার করে হ্রাস করা যেতে পারে তবে সাধারণত অন্য সূচকগুলিতে ব্লাট রোধ করতে আপনার ক্লাস্টারিং কীটির জন্য একটি জিইউডির তুলনায় একটি বিঙ্গিন্ট পরিচয় পছন্দ করেন।

1 ওভার 2 বাছাইয়ের মধ্যে পার্থক্য নির্ভর করবে যে একক কলাম স্থির অ্যারেতে ডাটাবেস দুটি মৌলিক ধরণের কলামকে কীভাবে দক্ষ করে। ডামি ডেটা দিয়ে পরীক্ষা করা যথেষ্ট সহজ হওয়া উচিত। আপনার প্রশ্নের গতির পাশাপাশি সূচি এবং আকারের আকার দেখুন। ছোট + দ্রুত সেরা!


1

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


সত্য, তবে এটি কি কেবল বাইট আকারের জন্য গুরুত্বপূর্ণ? প্রকারটি কি সূচীকরণ অ্যালগরিদমকে প্রভাবিত করে না?
ভ্লাদ মিহলসিয়া

@ ভ্লাদ আমি এসকিউএল সার্ভার ব্যবহার করি। বি-ট্রি (বা মেমোরির জন্য 2104 এর জন্য একটি হ্যাশ সূচক) নির্মাণের সময় আফাইক সমস্ত ডেটা প্রকারগুলি একই হ্যান্ডেল করা হয়। এটি যতটা সম্ভব সংকীর্ণ রাখার যথেষ্ট কারণ রয়েছে
মাইকেল সবুজ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.