মাইএসকিউএল-এর জন্য কোন কনফিগারেশন বিকল্পগুলি সবচেয়ে গতির উন্নতি সরবরাহ করে?


29

মাইএসকিউএল-এর জন্য কোন কনফিগারেশন বিকল্পগুলি সবচেয়ে গতির উন্নতি সরবরাহ করে?

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

আপনি মাইএসকিউএল এর কার্যকারিতা উন্নত করতে অন্য কোন সেটিংস / পরিবর্তন করেছেন?

দ্রষ্টব্য: আমি বুঝতে পারি এগুলি খুব ব্যবহার নির্ভর (যেমন, ছোট ওয়েবসাইট বনাম ডেটা গুদাম), তবে যেহেতু আমি মনে করি আমাদের বেশিরভাগই সম্ভবত বিভিন্ন সাইট / সিস্টেমে কাজ করে, বিভিন্ন কৌশল প্রয়োগ করা ভাল যা বিভিন্ন ক্ষেত্রে প্রয়োগ করতে পারে পরিস্থিতিতে। এছাড়াও, আমি মনে করি কিছু কৌশল পরিস্থিতিগুলির মধ্যে স্থানান্তর করা যেতে পারে।


সম্পূর্ণ সম্পর্কিত নয়, তবে আপনার মাস্টারের জন্য InnoDB ব্যবহার করা উচিত। আপনি মাইআইএসএএম দাসদের প্রতিলিপি তৈরি করতে পারেন এবং তাদের বিল্ট-ইন ফুল-টেক্সট অনুসন্ধান ব্যবহার করতে পারেন যা পাঠ্যের চেহারাগুলি লাইকের চেয়ে অনেক দ্রুত তৈরি করতে পারে
নীল ম্যাকগুইগান

উত্তর:


20

এখানে আমার প্রস্তাবনাগুলি রয়েছে (আপনার মাইলেজ পরিবর্তিত হতে পারে)

  • হার্ডওয়্যার RAID ব্যবহার করুন। এটি অন্যান্য পোস্টগুলিতে সফ্টওয়্যার RAID ব্যবহার করার জন্য আমার প্রস্তাবনার বিপরীতে চলেছে, তবে এটি একটি নির্দিষ্ট পরিস্থিতি যেখানে আপনি হার্ডওয়্যার RAID কার্ড চান। বিশেষত আপনি চাইছেন যে রেড কার্ডে থাকা ব্যাটারি ব্যাকড এনভিআরএএম লিনাক ফাইলটিকে ডিস্কে নেওয়ার সময় কমিয়ে আনবে।
  • কেবলমাত্র RAID 1 বা RAID 10 ভলিউম ব্যবহার করুন। মিশ্র পঠন / লেখার কাজের চাপ সহ্য করতে RAID 5 বা 6 রাইটের ব্যয় খুব বেশি।
  • ডেটা, লগ এবং টিএমপি ভলিউমের জন্য পৃথক LUNs ব্যবহার করুন। এগুলি সমস্ত ওএস এবং অদলবদল ভলিউম থেকে পৃথক হওয়া উচিত।
  • InnoDB ব্যবহার করুন ।
  • ইনোডোবি_ফাইল_পার_ টেবিল ব্যবহার করুন
  • একটি 64-বিট ওএস ব্যবহার করুন
  • আপনার InnoDB বাফার পুলটি আপনার উপলব্ধ র‌্যামের ~ 80% এ সেট করুন
  • আপনার লগ ফাইলগুলি আপনার বাফার পুল আকারের 1/4 সেট করুন, আপনি 2 থেকে 4 লগ ফাইলের মধ্যে রয়েছেন। বড় লগ ফাইলগুলির অর্থ ধীর শটডাউন এবং পুনরুদ্ধারের সময়, তবে আপনাকে বৃহত ডাটাবেস ডাম্পগুলি দ্রুত পুনরুদ্ধার করতে দেয়।
  • লগ_স্লো_উইকিউরিস, লগ-ক্যোয়ারী-না-ব্যবহার-সূচকগুলি, সেট-ভেরিয়েবল = দীর্ঘ_কোয়রি_টাইম = 1, সেই লগের প্রতিটি ক্যোয়ারী তদন্ত করুন, টেবিল স্ক্যানগুলি এবং tmp টেবিলগুলি যখনই সম্ভব এড়াতে আপনার স্কিমাটিকে রিফেক্টর করুন।

11

আবার ডেভ চেনি এটিকে এখানে পার্কের বাইরে ফেলেছে। আপনার প্রশ্নের উত্তর আমি আসলেই কিছু যোগ করতে পারি না। তবে, আপনি কী জিজ্ঞাসা করলেন না তা আমি উল্লেখ করতে চাই। যেমন জেরেমি জাওদনি এবং পিটার জায়েটসেভ আমাকে বছর কয়েক আগে শিখিয়েছিলেন, আপনার আরওআই সময়ের জন্য ট্র্যাকিং এবং খারাপ অনুসন্ধানগুলি অনুকূল করে তুলতে ব্যয় করেছে আপনার রইআইএর জন্য কনফিগারেশন পরিবর্তনগুলি করতে 10 গুণ বেশি সময় ব্যয় করবে। অবশ্যই, আপনি একটি দুর্বল কনফিগারেশন, ভুল RAID সেটআপ, বা অপর্যাপ্ত র‌্যাম রাখতে চান না। কিন্তু, চমৎকার, এবং এমনকি প্রান্তিক, মাইএসকিউএল DBAs খারাপ প্রশ্নের মধ্যে (সাধারণত ডেভেলপার / পরিকাঠামোর দ্বারা DBA না থেকে) একটি হল দীর্ঘস্থায়ী অবস্থা, যেখানে খারাপ কনফিগারেশন একটি হল সহনীয় করুন।

(আমি কিছুক্ষণের জন্য এই বিশেষণগুলির জন্য খনন করেছি এবং এখনও আমি যেগুলি বেছে নিয়েছি তাতে সন্তুষ্ট নই))

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


4

কয়েকটি অন্যান্য জিনিস (যা ডেভ চেনি এর উত্তরে উল্লেখ করা হয়নি)

  • ডেটা ডাবল বাফারিং এড়ানোর জন্য ইনোডাব_ফ্লুশ_মোথারকে ও_ডিআরইসিটিতে সেট করার চেষ্টা করুন। আপনার রেড কার্ডে ব্যাটারি ব্যাকড রাইটিং ক্যাশে না থাকলে বা আপনার ডেটা কোনও সান-এ থাকে যদি এটি এড়ান।

  • ইন্নাডব_থ্রেড_কোনসিটির সাথেও খেলুন। আমি বিশ্বাস করি যে ডিফল্টটি 8 হ'ল তবে এটি কার্যকারিতা উন্নত করে কিনা তা দেখার জন্য এটি টুইট করার মতো

  • নিশ্চিত করুন যে ক্যোয়ারী ক্যাশে চালু হয়েছে এবং হিট রেট কী তা দেখতে স্ট্যাটাসটি পরীক্ষা করুন। এটি হিট রেটের উন্নতি করে কিনা তা দেখার জন্য এটি ভাল করার চেষ্টা করুন।

  • অ্যাপ্লিকেশন চলমান উপর নির্ভর করে আপনি ডিফল্ট বিচ্ছিন্নতা স্তর পরিবর্তন করতে সক্ষম হতে পারে। ডিফল্টটি REPEATABLE_READ তবে READ_COMMITTED আপনাকে আরও ভাল পারফরম্যান্স দিতে পারে

  • যদি আপনার বক্তব্যগুলি বেশিরভাগ আপডেট এবং মুছে ফেলা হয় তবে আপনি স্লেভ কোয়েরি করে গোলামের উপর ক্যাশে প্রাইমিংয়ের চেষ্টা করতে পারেন যা পরিবর্তিত হওয়া ফলাফল সেটটি ফেরত দেয়। পরীক্ষা করে দেখুন MK-দাস-অগ্রিম নিয়ে টুল যা আপনার জন্য এই কি করতে হবে

  • মাইআইএসএএম এবং ইনোডিবি বাদে অন্য স্টোরেজ ইঞ্জিনগুলি দেখুন


3

হার্ডওয়্যার সম্পর্কে কিছু বলতে পারি না তবে আপনি http://blog.mysqltuner.com ব্যবহার করে দেখতে পারেন। এটি একটি পার্ল স্ক্রিপ্ট যা আপনার মাইএসকিউএল সেটিংস বিশ্লেষণ করে।

আপনি http://www.thomas-krenn.com/de/wiki/MySQL_Performance_Tuning#mysqltuner.pl এ একটি নমুনা আউটপুট দেখতে পারেন


1

আপনার প্রথমে সাধারণ জিনিসটি হ'ল মেমোরি পরামিতিগুলি দেখুন। মাইএসকিউএল-এর জন্য ডিফল্ট সেটিংস খুব রক্ষণশীল। আপনি যে ইঞ্জিনটি ব্যবহার করুন না কেন আপনার সম্ভবত মেমরি পরামিতিগুলির সংখ্যা দশ বা একশতগুণ বাড়িয়ে তুলতে হবে।

আপনার পরবর্তী কাজটি করা উচিত টেবিল ক্যাশে তাকান। ডিফল্ট মান is৪, যা কেবলমাত্র তখনই কার্যকর যখন আপনার প্রায় 60০ টি টেবিলের বেশি না থাকে। আপনি এটি দীর্ঘ পথ বাড়াতে চাইবেন।

তৃতীয় জিনিসটি আপনার করা উচিত থ্রেড এবং সংযোগের পরামিতিগুলি look ডিফল্ট ওয়েটটাইমআউটটি বেশিরভাগ ওয়েব-ভিত্তিক অ্যাপ্লিকেশনগুলির জন্য দীর্ঘ দীর্ঘ এবং 30 সেকেন্ডের মতো কিছুতে হ্রাস করা যায়। এটি মেমরির ব্যবহারেরও উন্নতি করবে, যেহেতু মাইএসকিউএল শীঘ্রই সংযোগগুলি কাটবে, একটি 'ঘুম' অবস্থায় পড়বে না।

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