আপনার কাছে থাকা সবচেয়ে বড় BLOB সম্পর্কে একটি প্রশ্নের একটি আকর্ষণীয় উত্তর আমি দেখেছি। সার্ভারফল্টে আমি যে বিবৃতিটি দেখেছি তা এখানে: ইনোডাব_ব্লগ_ফিল_সাইজ এবং ইনানোডব_লগ_বফার_সাইজ সমন্বিত আপনার বড় ব্লব অবজেক্টের চেয়ে দশগুণ বেশি হতে হবে ।
নীলস-অ্যান্ডার্স ন্যাটসিটারের সার্ভারফল্ট পোস্টের ভিত্তিতে , আপনি টেবিলটি জিজ্ঞাসা করতে হবে এবং কোনটি বিএলওবি সবচেয়ে বড় তা খুঁজে পাওয়া উচিত, সেই সংখ্যাটি 11 বা আরও বেশি করে গুণক করুন এবং সেই উত্তরটি সর্বাধিক_নয়েড_প্যাককেট হিসাবে এগিয়ে যাওয়া উচিত।
এটি মজার বিষয় যে আমি আরও একটি প্রশ্নের সমাধান করেছি যেখানে আমি আশা করছি যে সমস্যাটি সমাধান করার জন্য সর্বোচ্চ_নোকলা প্যাকেট আকার দেওয়ার পরামর্শ দেওয়া হয়েছিল ।
বিচারকার্য স্থগিত রাখার আদেশ
মতে বইয়ের
মাইএসকিউএল প্যাকেট সম্পর্কে পৃষ্ঠা 99 অনুচ্ছেদ 1-3 যা বলেছে তা এখানে:
মাইএসকিউএল নেটওয়ার্ক যোগাযোগ কোড এই অনুমানের অধীনে লেখা হয়েছিল যে প্রশ্নগুলি সর্বদা যুক্তিযুক্তভাবে সংক্ষিপ্ত থাকে এবং তাই সার্ভারের মাধ্যমে একটি অংশে প্রেরণ এবং প্রক্রিয়া করা যায়, যা মাইএসকিউএল পরিভাষায় একটি প্যাকেট বলে called প্যাকেটটি সংরক্ষণ করার জন্য সার্ভার অস্থায়ী বাফারের জন্য মেমরির বরাদ্দ করে এবং এটি পুরোপুরি ফিট করার জন্য এটি যথেষ্ট অনুরোধ করে। এই আর্কিটেকচারটির জন্য সার্ভারের স্মৃতিশক্তি শেষ না হওয়া এড়ানোর জন্য একটি সতর্কতা প্রয়োজন --- প্যাকেটের আকারের একটি ক্যাপ, যা এই বিকল্পটি সম্পাদন করে।
এই বিকল্পের সাথে সম্পর্কিত আগ্রহের কোডটি স্কুয়েল / নেট_জারি.সি.সি তে পাওয়া যায়
। কটাক্ষপাত my_net_read () , তারপর থেকে কল অনুসরণ my_real_read () এবং বিশেষভাবে নজর দিতে
net_realloc () ।
এই পরিবর্তনশীলটি অনেকগুলি স্ট্রিং ফান্টাক্টনের ফলাফলের দৈর্ঘ্যও সীমাবদ্ধ করে। দেখুন SQL / field.cc এবং
SQL / intem_strfunc.cc বিস্তারিত জানার জন্য।
মাইএসকিউএল প্যাকেটগুলি সম্পর্কে এটি জানার সাথে সাথে ডিবিএ তাদের মাপ দিতে সক্ষম করে একটি মাইএসকিউএল প্যাকেটের ভিতরে একাধিক বিএলএলবি সমন্বিত করতে, এমনকি যদি তারা বড় আকারের হয় না।
আপনার পরিস্থিতি সম্পর্কে, আপনার ডাটাবেসের বৃহত্তম বিএলএলওবি কি তা খুঁজে বের করা উচিত, সেই সংখ্যাকে 11 দিয়ে একাধিক করুন এবং আপনার সর্বোচ্চ_গোলিত_প্যাকেটটি সেই সংখ্যায় সেট করুন । আপনার এটি কোনও মাইএসকিএল পুনরায় চালু না করে সার্ভারের জন্য সেট করতে সক্ষম হওয়া উচিত (ব্যক্তিগতভাবে, আমি এটি 256 এম সেট করব কারণ এটি স্থানান্তর এবং প্রতিরূপ সংক্রান্ত অন্যান্য সমস্যাগুলির সমাধান করবে, যা এই ফোরামের আওতার বাইরে)। সমস্ত আগত সংযোগগুলির জন্য আপনার ডাটাবেসের জন্য এটি 256M তে সেট করতে, দয়া করে এটি চালান:
SET GLOBAL max_allowed_packet = 1024 * 1024 * 256;
এরপরে, [mysqld]
বিভাগের অধীনে my.cnf এ এই সেটিংটি যুক্ত করুন :
[mysqld]
max_allowed_packet = 256M