মাইএসকিউএল লেনদেনের আকার - কত বড় বড়?


23

আমার একটি আমদানি প্রক্রিয়া রয়েছে যা প্রায়শই প্রায়শই চালিত হয় এবং আমি এটি একটি 'সমস্ত বা কিছুই নয়' ধরণের চুক্তি হতে চাই, ওরফে: লেনদেন।

অনেকগুলি দিক রয়েছে, এবং আমদানিগুলি 100k-1 মিলিল + রেকর্ডের মধ্যে যে কোনও জায়গায় ফল পেতে পারে। এটি বেশ কয়েকটি এমবি থেকে কয়েকশ এমবি ডেটা অবধি পেলোডের সমান।

আমি জানি টেম্প টেবিলগুলি অন্য বিকল্প - তবে এই পদ্ধতিটি খুব সহজ বলে মনে হচ্ছে।

কমিটের মধ্যে বিপুল পরিমাণে ডেটা ম্যানিপুলেশন সহ এই ধরণের অনুশীলন সম্পর্কে সচেতন হওয়ার জন্য কি কোনও সতর্কতা রয়েছে? (সাধারণ রাইটিং / ইনডেক্সিং লোডের বাইরে একবার প্রতিশ্রুতিবদ্ধ)


ব্যক্তিগতভাবে, আমি একটি ভারসাম্য রাখতে চাই like আমি 1 কে বা 10 কে লেনদেনে আমদানি করি, 'কারণ আমি কেবল জানি যে এটি প্রায় 900k সারিতে পৌঁছে যাবে এবং তারপরে বাফার আকার বা অন্য কোনও হাস্যকর কিছু কারণে ক্রাশ হবে। এটি থেকে নেওয়া খুব সহজ, এবং আমি / হে যতটা না।
ক্যাপ্টেন হাইপারটেক্সট

উত্তর:


20

সচেতন হওয়ার জন্য একটি বাধা হ'ল ইনোডিবি লগ বাফার। আকারটি ইনোডাব_লগ_বাফলার_সাইজ সেট করে । মাইএসকিউএল ডকুমেন্টেশন এটি সম্পর্কে যা বলে তা এখানে:

InnoDB ডিস্কের লগ ফাইলগুলিতে লিখতে ব্যবহার করে এমন বাফারের আকারের বাইট। ডিফল্ট মান 8MB। একটি বড় লগ বাফার লেনদেনগুলি করার আগে ডিস্কে লগ লেখার প্রয়োজন ছাড়াই বড় লেনদেনগুলি পরিচালনা করতে সক্ষম করে। সুতরাং, আপনার যদি বড় লেনদেন হয়, লগ বাফারকে আরও বড় করে ডিস্ক I / O কে সংরক্ষণ করে ves

InnoDB লগ বাফারকে InnoDB বাফার পুলের সাথে বিভ্রান্ত করা উচিত নয়। তাদের মধ্যে প্রধান পার্থক্য তাদের উদ্দেশ্য। InnoDB লগ বাফারটি মূলত স্বল্প-মেয়াদী পরিবর্তনগুলি রেকর্ড করবে যা পুনরায় লগগুলিতে লিখিত হয় (ib_logfile0, ib_logfile1)। InnoDB বাফার পুল ( ইনোডাব_বফার_পুল_সাইজ আকারযুক্ত ) ডেটা এবং সূচী পৃষ্ঠাগুলি ক্যাশে করে যা প্রতিশ্রুতিবদ্ধ হতে হবে (যদি পৃষ্ঠাগুলি নোংরা হয়) এবং শেষ পর্যন্ত লিখিত থাকে) disk প্রতিশ্রুতিবদ্ধ হয়ে গেলে, পরিবর্তনগুলি পৃষ্ঠাগুলি র‌্যামে থাকবে যতক্ষণ না এলআরইউ বিধি দ্বারা সরানো হয়।

বড় লেনদেনগুলি অবশ্যই লগ বাফারের মাধ্যমে কার্যকর করতে হবে। উল্লিখিত হিসাবে, একটি বৃহত্তর লগ বাফার ডিস্ক I / O হ্রাস করবে। কেবল একটি বৃহত প্রতিশ্রুতিই একটি বাধা উপস্থিত করবে।

আপনি কনফিগার করতে অন্য InnoDB বিকল্পগুলি সন্ধান করতে পারেন।

আরও গবেষণার জন্য ইনোডিবি অনুকূলকরণ সম্পর্কে আমার অন্যান্য পোস্ট রয়েছে


একরকম আমি জানতাম যে আপনি এই দিকে থাকবেন। আপনি সর্বদা যে উত্তর দিয়েছেন বলে মনে হয় তার জন্য ধন্যবাদ। পার্শ্ব প্রশ্ন: ইনোডাব_ইও_ক্যাপাসিটি ব্যবহার সম্পর্কে আপনার কি কোনও সংস্থান আছে? ডকুমেন্টেশন যখন 5400 / 7200RPM গ্রাহক SATA এর মান 100 এর মান দেয়, তখন আপনার কৌশলটি কি এই মানটিকে এত বেশি সেট করে কেবল 'সীমা সরিয়ে দেওয়ার' পরামর্শ দেয়?
দু'বার

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