মাইএসকিউএলে "আইআরএন্ডেক্স তৈরি করুন" লিনিয়ার অপারেশন?


20

আমি যা বলতে চাইছি তা হল:

nসারিগুলির সাথে কোনও টেবিলে সূচি তৈরি করতে tসময় লাগে । 1000*nপ্রায় 1000*tসময় নিয়ে একই টেবিলে একটি সূচক তৈরি করবে ।

আমি যেটি অর্জন করতে চাইছি তা হ'ল অনেক ছোট পরীক্ষার ডাটাবেসে একই সূচক তৈরি করে উত্পাদন ডাটাবেজে সূচক তৈরি করতে যে সময় লাগে তা অনুমান করা ।

উত্তর:


16

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

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

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


7

আরও লক্ষণীয় যে আপনি যদি টেবিলের জন্য স্পিন্ডলগুলি থেকে সূচকগুলির জন্য স্পিন্ডলগুলি বিভক্ত করতে পারেন তবে আপনি একবারে দুটি ডিস্ক থেকে কাজ করতে সক্ষম হবেন (এখনও মাঝখানে ডিস্ক নিয়ামকের গতিতে সীমাবদ্ধ থাকুন, একটি RAID বা মত, তবে এটি একটি ডিস্কের চেয়ে দ্রুত হবে)।

আমি বুঝতে পারি যে একটি সূচক তৈরি করা সম্পূর্ণরূপে সিমুল-পঠন-রচনা অপারেশন নয়, তবে এটি গতিতে জিনিসগুলিকে যথেষ্ট গতি দেয়।

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


1
ওরাকল-তে খুব একই জিনিস - কেবল ফাইল গ্রুপগুলিকে টেবিল স্পেস
জো

2

1

এটা নির্ভর করে.

পরিবর্তনশীল # 1: মাইএসকিউএল যদি ফ্লাইতে সূচি (এস) তৈরি করতে পছন্দ করে বা সমস্ত ডেটা না আসা পর্যন্ত অপেক্ষা করে, তবে সূচিটি তৈরির জন্য বাছাই করুন, ইত্যাদি করুন। দ্রষ্টব্য: অনন্য সূচীগুলি (আমার মনে হয়) ফ্লাইতে তৈরি করতে হবে যাতে অনন্যতা যাচাই করা যায়। InnoDB- র জন্য প্রাথমিক কী তথ্য সহ সংরক্ষণ করা হয় (বা আপনি এটি বিপরীতে বলতে পারেন), যাতে এলোমেলোভাবে নির্মিত হতে হবে be

পরিবর্তনশীল # 2: সূচকটি ডেটা (যেমন: অটোপ্রেমিক বা টাইমস্ট্যাম্প) বনাম এলোমেলো (জিইউডি, এমডি 5), বা এর মধ্যে কোথাও (পার্ট সংখ্যা, নাম, ফ্রেন্ড_আইডি) ট্র্যাক করে।

পরিবর্তনশীল # 3 (যদি সূচকে ফ্লাইয়ে তৈরি করা হয়): সূচকটি ক্যাশে (কী_বফার বা ইনডোডবি_ফুফার_পুল) ফিট করতে পারে বা এটি ডিস্কে ছড়িয়ে পড়ে।

সূচকগুলি যা ডেটা ট্র্যাক করে কার্যকর এবং কার্যত রৈখিক, # 1 এর উত্তর নির্বিশেষে।

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

3.53 5.6 এর মাধ্যমে - খুব বেশি পরিবর্তন হয়নি।

একাধিক স্পিন্ডল? এটিকে এখানে এবং সেখান থেকে ম্যানুয়ালি নির্ধারণের চেয়ে প্রায় কোনও পরিস্থিতিতে RAID স্ট্রাইপিং ভাল। ম্যানুয়াল বিভাজন ভারসাম্যহীন পরিস্থিতির দিকে পরিচালিত করে - একটি টেবিল স্ক্যান ডেটা ডিস্কে আটকে থাকে; কেবলমাত্র একটি সূচক অপারেশন সূচক ডিস্কে আটকে থাকে; একটি একক জিজ্ঞাসা প্রথমে সূচক ডিস্কে আঘাত করে, তারপরে ডেটা ডিস্ক (কোনও ওভারল্যাপ নেই); প্রভৃতি

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