মাইআইএসএএম-তে পার্টিশন সহ মাইএসকিউএল সন্নিবেশকে অনন্য কী দিয়ে গতি বাড়ান


9

আমার কাছে একটি বড় মাইআইএসএএম টেবিল (M 30M সারি) রয়েছে। এক পর্যায়ে আমি এটিকে স্থির সারি বিন্যাসে স্যুইচ করেছি, সুতরাং এখন টেবিলটি ডিস্কের জন্য ~ 40Gb এবং সূচিগুলির জন্য 2Gb লাগে। সারণীর একটি অনন্য সূচক রয়েছে এবং প্রতি সেকেন্ডে 100 টি 'ডুপ্লিকেট কী আপডেটে সন্নিবেশ' অনুসন্ধান রয়েছে। টেবিল বাড়ার সাথে সাথে এই সন্নিবেশগুলি ধীর এবং ধীর হয়ে উঠছে।

আমি নিশ্চিত নই, তবে পার্টিশনগুলি কী আমাকে প্রবেশের গতি বাড়িয়ে তুলতে সহায়তা করবে?

উত্তর:


1

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

আপনি যদি এখনও আপনার মাইআইএসএএম-টেবিলগুলিতে ডেটা লোড করতে চান এবং এটি দ্রুত করতে চান তবে আমি LOAD DATA INFILEসন্নিবেশগুলির পরিবর্তে ব্যবহার করার পরামর্শ দিতে পারি । বৃহত পরিমাণে ডেটা টেবিলে লোড করার এটি দ্রুততম উপায়। এবং হ্যাঁ, সূচকগুলি সূচকীয় উপায়ে performanceোকানো কার্যকারিতাটি কমিয়ে দেবে।

পার্টিশন সম্পর্কে একটি শব্দ: মাইএসকিউএল-তে INSERT- স্টেটমেন্টগুলি ছাঁটাই সমর্থন করে না, সুতরাং আপনার সমস্ত পার্টিশন অনন্য সূচক ম্যাচের জন্য প্রতিটি বিবৃতিতে স্ক্যান করা হবে। সন্নিবেশ শেষ না হওয়া পর্যন্ত সমস্ত পার্টিশন লক হয়ে যাবে।


আরও একটি আকর্ষণীয় ইঞ্জিন: কোড. facebook.com/posts/190251048047090/…
গ্রেইউল্ফ

0

এইগুলি কি সন্নিবেশ করা প্রশ্নগুলি সমবর্তী বা একই প্রক্রিয়া থেকে উত্পন্ন? যদি তারা একযোগে থাকে তবে এই টেবিলটির জন্য ইনোডিবি স্টোরেজ ব্যবহার করা আরও ভাল কারণ মাইআইএসএএম পুরো টেবিলটি লক করে এবং ইনোডিবি সারি লকগুলি ব্যবহার করে। যদি অন্য স্টোরেজে স্যুইচ করা কোনও বিকল্প না হয় তবে আপনি INSERT DELAYED বিবৃতি এবং অন্যান্য সংখ্যক অন্যান্য optimোকানো অপ্টিমাইজেশান চেষ্টা করতে পারেন । আপনি বিভিন্ন শারীরিক ডিস্কে আলাদা আলাদা পার্টিশন না রাখলে পার্টিশনটি কার্যকর হবে না।


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

INSERT DELAYED কেবলমাত্র INSERT বিবৃতিতে ব্যবহার করা উচিত যা মান তালিকাগুলি নির্দিষ্ট করে। সার্ভার INSERT এর জন্য বিলম্বিত বিষয়টিকে উপেক্ষা করে ... নির্বাচন করুন বা সন্নিবেশ করান ... কী কী আপডেটের বিবরণীটি তৈরি করুন ON
llazzaro

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