কম্পিউটার

গুরুত্বপূর্ণ MYSQL পারফরম্যান্স টিউনিং এবং ইনস্টলেশনের পরে সেটিংস


এই নিবন্ধে, আমরা MySQL এর জন্য কিছু গুরুত্বপূর্ণ পারফরম্যান্স টিউনিং সেটিংস শিখব এবং আলোচনা করব যা আমাদের MySQL ইনস্টলেশনের পরে আরও ভাল এবং দ্রুত কর্মক্ষমতা প্রয়োগ করতে হবে৷

প্রাক-প্রয়োজনীয়তা

ধরে নিচ্ছি যে আমরা ইতিমধ্যেই MySQL ইনস্টল করেছি, MySQL-এর জন্য পারফরম্যান্স টিউনিং সেটিংস সম্পর্কে জানা শুরু করার আগে আমি কিছু টিপস দিচ্ছি৷

এমনকি অভিজ্ঞ আইটি ব্যক্তিরাও কিছু ভুল করতে পারে যা অনেক সমস্যার কারণ হতে পারে, তাই এই নিবন্ধে দেখানো যেকোন সুপারিশ প্রয়োগ করার আগে, আমরা সমস্যা বা সমস্যা এড়াতে নিচের বিষয়গুলো মাথায় রাখব।

  • আমরা একটি সময়ে শুধুমাত্র একটি সেটিং প্রয়োগ করব যাতে আমরা একটি উপকারী উপায়ে পরিবর্তনগুলি অনুমান করতে পারি৷

  • "SET GLOBAL" দিয়ে রানটাইম লেভেলে প্রায় সব পরিবর্তনই পরিবর্তন করা যেতে পারে যা খুবই সহজ এবং আমরা যে পরিবর্তনগুলি প্রয়োগ করি এবং যেকোন সমস্যা সৃষ্টি করে সেগুলিকে প্রত্যাবর্তন করার অনুমতি দেয়। অবশেষে, আমরা কনফিগারেশন ফাইলে সেট করে স্থায়ী পরিবর্তনগুলি প্রয়োগ করতে পারি।

  • যদি কনফিগারেশনের পরিবর্তনটি পরিষেবা পুনরায় চালু করার পরেও প্রয়োগ না করা হয় (MySQL) এটি ভুল কনফিগারেশন ফাইলের কারণে হতে পারে? অথবা সেটিংটি কি সঠিক বিভাগে প্রযোজ্য?.

  • মাইএসকিউএল ডুপ্লিকেট সেটিংস অনুমোদন করবে না। আমরা যদি পরিবর্তনগুলি ট্র্যাক রাখতে চাই তবে সংস্করণ নিয়ন্ত্রণ ব্যবহার করার পরামর্শ দেওয়া হচ্ছে৷

কিছু ​​পারফরম্যান্স টিউনিং MySQL সেটিংস

এখানে [mysqld] বিভাগে কিছু পারফরম্যান্স টিউনিং সেটিংস রয়েছে যেখানে আমরা কিছু পারফরম্যান্স টিউনিং সেটিংস সম্পর্কে জানতে পারি। শুধুমাত্র ইনস্টলেশনের সময় এই সেটিংস পরিবর্তন করার পরামর্শ দেওয়া হয়।

innodb_buffer_pool_size − InnoDB ব্যবহার করে ইন্সটলেশনের পর অবিলম্বে দেখতে এটি একটি অত্যন্ত গুরুত্বপূর্ণ সেটিং। InnoDB হল বাফার পুল যেখানে ডেটা ক্যাশে ইনডেক্স করা হয়, যার একটি খুব বড় সম্ভাব্য আকার রয়েছে যা নিশ্চিত করবে এবং মেমরি ব্যবহার করবে ডিস্ক স্পেস বেশির ভাগ রিড-রাইট অপারেশনের জন্য, সাধারণত InnoDB মানগুলির আকার 5 হয় -8GB RAM এর জন্য 6GB।

innodb_log_file_size - এই সেটিংসটি আবার লগ করার জন্য। রিডু লগগুলি নিশ্চিত করে যে পড়া এবং লেখা দ্রুত এবং টেকসই হয় এমনকি ক্র্যাশ পুনরুদ্ধারের সময়েও, MySQL 5.1 এর পূর্ববর্তী সংস্করণগুলিতে, এটি সামঞ্জস্য করা খুব কঠিন কারণ আমাদের আরও ভাল পারফরম্যান্সের জন্য একটি খুব বড় রিডো লগ প্রয়োজন এবং একটি ছোট Redo log হল MySQL এর দ্রুত ক্র্যাশ পুনরুদ্ধারের জন্য একটি ver। MySQL সংস্করণ 5.5 এর পরে ক্র্যাশ পুনরুদ্ধারের কর্মক্ষমতা উন্নত হয়েছে। MySQL রিডো লগ সাইজের সীমা MySQL 5.5-এ 4GB-তে সীমাবদ্ধ ছিল এখন MySQL 5.6-এ রিডো লগ সাইজ সরিয়ে দেওয়া হয়েছে।

সর্বোচ্চ_সংযোগ − "অনেকগুলি সংযোগ" ত্রুটি এড়াতে আমাদেরকে max_connections বাড়াতে হবে ডিফল্ট সংযোগগুলি হল 151, max_connections-এর জন্য উচ্চ মানের প্রধান ত্রুটি সার্ভারটিকে প্রতিক্রিয়াহীন করে তোলে যদি সংযোগের সংখ্যা বেশি হয় এবং সক্রিয় লেনদেন হয়৷

Innodb_log_buffer_size − এই সেটিং হল লেনদেনের জন্য বাফারের আকার যা এখনও প্রতিশ্রুতিবদ্ধ হয়নি৷ ডিফল্ট মান হল 1MB, যেহেতু আমরা টেক্সট/ব্লব ফিল্ডের সাথে বড় লেনদেন করেছি বাফার সাইজ খুব দ্রুত পূর্ণ হবে এবং অতিরিক্ত ইনপুট এবং আউটপুট লোড ট্রিগার করবে, আমরা innodb_log_buffer_size বাড়াতে পারি।

Innodb_flush_method − কিভাবে লগ এবং ডেটা ডিস্কে ফ্লাশ করা হয় তা নিয়ন্ত্রণ করার জন্য এই সেটিং। সবচেয়ে ভালো মানগুলি হল O_DIRECT যখন আমাদের কাছে একটি RAID কন্ট্রোলার হার্ডওয়্যার থাকে যেখানে রাইট-ব্যাক ক্যাশে থাকে এবং বেশিরভাগ পরিস্থিতিতে ডেটা সিঙ্ক থাকে৷ Sysbench একটি ভাল টুল যা আপনাকে মান নির্বাচন করতে সাহায্য করবে।

query_cache_size − এই সেটিংটি এমন বাধার জন্য সুপরিচিত যা আমরা দেখতে পাচ্ছি এমনকি আমাদের একযোগে মাঝারি স্তর রয়েছে। সর্বোত্তম বিকল্প হল যদি শুরু থেকে নিষ্ক্রিয় করা হয়, নিষ্ক্রিয় করার জন্য আমাদের query_cache_size=0 পাঠাতে হবে যদি আমরা MySQL 5.6 সংস্করণটি ডিফল্টরূপে অক্ষম করা থাকে। উদাহরণের জন্য মেমক্যাচে বা রেডিস ব্যবহার করে সূচীকরণের গতি বাড়ানোর জন্য আমাদের কাছে অন্যান্য উপায় রয়েছে। যদি আমরা ইতিমধ্যেই ক্যোয়ারী ক্যাশে সক্ষম করে অ্যাপ্লিকেশানটি কনফিগার করে থাকি এবং আমাদের কোন সমস্যা না থাকে তাহলে ক্যোয়ারী ক্যাশেটি কার্যকর, আমাদের ক্যোয়ারী ক্যাশে নিষ্ক্রিয় করার জন্য খুব সতর্ক হতে হবে৷

লগ_বিন − এই সেটিংটি খুবই উপযোগী যদি আমরা সার্ভারটিকে একটি রেপ্লিকেশন মাস্টার সার্ভার হিসেবে বানাতে চাই। এটি একটি একক সার্ভারের জন্যও খুব দরকারী যখন আমরা করতে সক্ষম হতে চাই (পয়েন্ট-ইন-টাইম-রিকভারি) সর্বশেষ ব্যাকআপ পুনরুদ্ধার করতে এবং বাইনারি লগগুলি প্রয়োগ করতে। একবার log_bin লগগুলি সক্রিয় হয়ে গেলে চিরকালের জন্য রাখা হয় এবং সার্ভারে ডিস্কের স্থান সংরক্ষণ করার জন্য আমাদের পুরানো লগগুলি পরিষ্কার করতে হবে, আমরা এটি করতে পারি সেটিংস PURGE BINARY LOGS বা expir_logs_days সেটিং সেট করে নির্দিষ্ট করে যে log_bin কত দিন পরে লগ স্বয়ংক্রিয়ভাবে মুছে ফেলা হয়.

skip_name_resolve − এই সেটিংটি সম্পূর্ণরূপে ব্যবহৃত হয় যখন কোনো ক্লায়েন্ট MySQL সার্ভারের সাথে সংযোগ করে। সার্ভার হোস্টনাম রেজোলিউশন সঞ্চালন করবে এবং যখন DNS ধীর হবে, সংযোগটিও খুব ধীর হয়ে যাবে, তাই DNS লুকআপগুলিকে নিষ্ক্রিয় করতে skip_name_resolve দিয়ে সার্ভারটি শুরু করার পরামর্শ দেওয়া হচ্ছে, তাই যখন আমরা GRANT বিবৃতি ব্যবহার করি, তখন আমাদের অবশ্যই IP ঠিকানা ব্যবহার করতে হবে। হোস্টনামের পরিবর্তে, তাই, যখন আমরা একটি বিদ্যমান অ্যাপ্লিকেশন কনফিগারেশনে এই সেটিংটি যোগ করি তখন সতর্ক থাকুন৷

উপরের প্রবন্ধে আমরা শিখেছি কিভাবে MySQL টিউন করে আরও ভালো পারফরম্যান্স দিতে হয়, এবং log_bins, skip_name_resolve, query_cache_size, max_connections, innodb_log_buffer_size, max_connections, innodb_log_bize_fize, innodb_log_bizeer_nof> পরিবর্তন করে MySQL-এর পঠন ও লেখার মাত্রা বাড়াতে হয়।


  1. MS SQL সার্ভার 2019 ইনস্টলেশন গাইড:মৌলিক সেটিংস এবং সুপারিশ

  2. মারিয়াডিবি:ইনস্টলেশন এবং পারফরম্যান্স অপ্টিমাইজেশান

  3. মাইএসকিউএল ইনস্টলেশন সম্পর্কিত প্রোগ্রাম

  4. মাইএসকিউএল সার্ভার এবং সার্ভার-স্টার্টআপ প্রোগ্রাম