15 ഉപയോഗപ്രദമായ MySQL/MariaDB പെർഫോമൻസ് ട്യൂണിംഗും ഒപ്റ്റിമൈസേഷൻ നുറുങ്ങുകളും


MySQL ഒരു ശക്തമായ ഓപ്പൺ സോഴ്സ് റിലേഷണൽ ഡാറ്റാബേസ് മാനേജ്മെന്റ് സിസ്റ്റം അല്ലെങ്കിൽ ചുരുക്കത്തിൽ RDBMS ആണ്. ഇത് 1995-ൽ (20 വയസ്സ്) വീണ്ടും പുറത്തിറങ്ങി. ഇത് ഘടനാപരമായ അന്വേഷണ ഭാഷ ഉപയോഗിക്കുന്നു, ഇത് ഒരു ഡാറ്റാബേസിൽ ഉള്ളടക്കം കൈകാര്യം ചെയ്യുന്നതിനുള്ള ഏറ്റവും ജനപ്രിയമായ തിരഞ്ഞെടുപ്പാണ്. ഏറ്റവും പുതിയ MySQL പതിപ്പ് 5.6.25 ആണ്, ഇത് 2015 മെയ് 29-ന് പുറത്തിറങ്ങി.

MySQL നെക്കുറിച്ചുള്ള രസകരമായ ഒരു വസ്തുത, മൈക്കൽ വൈഡെനിയസിന്റെ (MySQL-ന്റെ സ്രഷ്ടാവ്) മകൾ മൈയിൽ നിന്നാണ് ഈ പേര് വന്നത് എന്നതാണ്. MySQL-നെ കുറിച്ച് ധാരാളം രസകരമായ വസ്തുതകൾ ഉണ്ടെങ്കിലും, ഈ ലേഖനം നിങ്ങളുടെ MySQL സെർവർ മാനേജ് ചെയ്യാൻ സഹായിക്കുന്ന ചില ഉപയോഗപ്രദമായ സമ്പ്രദായങ്ങൾ കാണിക്കാനാണ് ഉദ്ദേശിക്കുന്നത്.

2009 ഏപ്രിലിൽ MySQL പ്രോജക്റ്റ് ഒറാക്കിൾ വാങ്ങി. അതിന്റെ ഫലമായി MariaDB എന്ന പേരിൽ ഒരു MySQL കമ്മ്യൂണിറ്റി ഫോർക്ക് സൃഷ്ടിക്കപ്പെട്ടു. ജനറൽ പബ്ലിക് ലൈസൻസിന് കീഴിൽ പ്രോജക്റ്റ് സ്വതന്ത്രമായി നിലനിർത്തുക എന്നതായിരുന്നു ഫോർക്ക് സൃഷ്ടിക്കുന്നതിനുള്ള പ്രധാന കാരണം.

ഇന്ന് MySQL ഉം MariaDB ഉം WordPress, Joomla, Magento എന്നിവയും മറ്റുള്ളവയും പോലുള്ള വെബ് ആപ്ലിക്കേഷനുകൾക്കായി പതിവായി ഉപയോഗിക്കുന്ന (ഏറ്റവും കൂടുതലല്ലെങ്കിൽ) RDBMS ആണ്.

MySQL/MariaDB-യുടെ മികച്ച ട്യൂൺ എങ്ങനെ ഒപ്റ്റിമൈസ് ചെയ്യാം എന്നതിന് അടിസ്ഥാനപരവും എന്നാൽ ഉപയോഗപ്രദവുമായ ചില നുറുങ്ങുകൾ ഈ ലേഖനം കാണിക്കും. നിങ്ങൾ ഇതിനകം MySQL അല്ലെങ്കിൽ MariaDB ഇൻസ്റ്റാൾ ചെയ്തിട്ടുണ്ടെന്ന് ഈ ലേഖനം അനുമാനിക്കുന്നു എന്നത് ദയവായി ഓർക്കുക. നിങ്ങളുടെ സിസ്റ്റത്തിൽ അവ എങ്ങനെ ഇൻസ്റ്റാൾ ചെയ്യാമെന്ന് നിങ്ങൾ ഇപ്പോഴും ചിന്തിക്കുന്നുണ്ടെങ്കിൽ, ഞങ്ങളുടെ വിപുലമായ ഗൈഡുകൾ നിങ്ങൾക്ക് ഇവിടെ പിന്തുടരാം:

  1. RHEL/CentOS 7-ൽ LAMP ഇൻസ്റ്റാൾ ചെയ്യുന്നു
  2. Fedora 22-ൽ LAMP ഇൻസ്റ്റാൾ ചെയ്യുന്നു
  3. ഉബുണ്ടു 15.04-ൽ LAMP സജ്ജീകരിക്കുന്നു
  4. Debian 8-ൽ MariaDB ഇൻസ്റ്റാൾ ചെയ്യുന്നു
  5. Gentoo Linux-ൽ MariaDB ഇൻസ്റ്റാൾ ചെയ്യുക
  6. Arch Linux-ൽ MariaDB ഇൻസ്റ്റാൾ ചെയ്യുക

പ്രധാനം: ഞങ്ങൾ ആരംഭിക്കുന്നതിന് മുമ്പ് - ഈ നിർദ്ദേശങ്ങൾ അന്ധമായി സ്വീകരിക്കരുത്. ഓരോ MySQL സജ്ജീകരണവും അദ്വിതീയമാണ് കൂടാതെ എന്തെങ്കിലും മാറ്റങ്ങൾ വരുത്തുന്നതിന് മുമ്പ് അധിക ചിന്ത ആവശ്യമാണ്.

നിങ്ങൾ അറിഞ്ഞിരിക്കേണ്ട കാര്യങ്ങൾ:

  1. MySQL/MariaDB കോൺഫിഗറേഷൻ ഫയൽ /etc/my.cnf-ൽ സ്ഥിതി ചെയ്യുന്നു. ഓരോ തവണയും നിങ്ങൾ ഈ ഫയൽ പരിഷ്കരിക്കുമ്പോൾ MySQL സേവനം പുനരാരംഭിക്കേണ്ടതുണ്ട്, അതുവഴി പുതിയ മാറ്റങ്ങൾ പ്രാബല്യത്തിൽ വരും.
  2. ഈ ലേഖനം എഴുതുന്നതിന് MySQL പതിപ്പ് 5.6 ടെംപ്ലേറ്റായി ഉപയോഗിച്ചു.

1. InnoDB ഫയൽ-പെർ-ടേബിൾ പ്രവർത്തനക്ഷമമാക്കുക

InnoDB ഒരു സ്റ്റോറേജ് എഞ്ചിനാണെന്ന് ആദ്യം വിശദീകരിക്കേണ്ടത് പ്രധാനമാണ്. MySQL ഉം MariaDB ഉം InnoDB ഡിഫോൾട്ട് സ്റ്റോറേജ് എഞ്ചിനായി ഉപയോഗിക്കുന്നു. മുൻകാലങ്ങളിൽ MySQL ഒരു സിസ്റ്റം ടേബിൾസ്പേസിൽ ഡാറ്റാബേസ് പട്ടികകളും സൂചികകളും സൂക്ഷിച്ചിരുന്നു. ഈ സമീപനം ഡാറ്റാബേസ് പ്രോസസ്സിംഗ് മാത്രമുള്ള സെർവറുകളെ ഉദ്ദേശിച്ചുള്ളതാണ്, കൂടാതെ അവയുടെ സ്റ്റോറേജ് ഡിസ്ക് മറ്റ് ആവശ്യങ്ങൾക്ക് ഉപയോഗിക്കില്ല.

InnoDB കൂടുതൽ വഴക്കമുള്ള സമീപനം നൽകുന്നു കൂടാതെ ഓരോ ഡാറ്റാബേസ് വിവരങ്ങളും ഒരു .ibd ഡാറ്റാ ഫയലിൽ സൂക്ഷിക്കുന്നു. ഓരോ .ibd ഫയലും അതിന്റേതായ ഒരു ടേബിൾസ്പേസിനെ പ്രതിനിധീകരിക്കുന്നു. അതുവഴി \TRUNCATE പോലുള്ള ഡാറ്റാബേസ് പ്രവർത്തനങ്ങൾ വേഗത്തിൽ പൂർത്തിയാക്കാൻ കഴിയും, കൂടാതെ ഒരു ഡാറ്റാബേസ് ടേബിൾ ഡ്രോപ്പ് ചെയ്യുമ്പോഴോ വെട്ടിച്ചുരുക്കുമ്പോഴോ നിങ്ങൾക്ക് ഉപയോഗിക്കാത്ത ഇടം വീണ്ടെടുക്കാം.

ഈ കോൺഫിഗറേഷന്റെ മറ്റൊരു നേട്ടം, നിങ്ങൾക്ക് ചില ഡാറ്റാബേസ് ടേബിളുകൾ ഒരു പ്രത്യേക സ്റ്റോറേജ് ഉപകരണത്തിൽ സൂക്ഷിക്കാൻ കഴിയും എന്നതാണ്. ഇത് നിങ്ങളുടെ ഡിസ്കുകളിലെ I/O ലോഡ് വളരെയധികം മെച്ചപ്പെടുത്തും.

innodb_file_per_table MySQL 5.6-ലും അതിനുമുകളിലും സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു. നിങ്ങൾക്ക് അത് /etc/my.cnf ഫയലിൽ കാണാം. നിർദ്ദേശം ഇതുപോലെ കാണപ്പെടുന്നു:

innodb_file_per_table=1

2. MySQL ഡാറ്റാബേസ് ഡാറ്റ പ്രത്യേക പാർട്ടീഷനിൽ സംഭരിക്കുക

ശ്രദ്ധിക്കുക: ഈ സജ്ജീകരണം MySQL-ൽ മാത്രമേ പ്രവർത്തിക്കൂ, പക്ഷേ MariaDB-ൽ അല്ല.

ചിലപ്പോൾ OS റീഡ്/റൈറ്റുകൾ നിങ്ങളുടെ MySQL സെർവറിന്റെ പ്രകടനത്തെ മന്ദഗതിയിലാക്കിയേക്കാം, പ്രത്യേകിച്ചും അതേ ഹാർഡ് ഡ്രൈവിൽ സ്ഥിതി ചെയ്യുന്നെങ്കിൽ. പകരം, MySQL സേവനത്തിനായി പ്രത്യേക ഹാർഡ് ഡ്രൈവ് (വെയിലത്ത് SSD) ഉപയോഗിക്കാൻ ഞാൻ ശുപാർശ ചെയ്യുന്നു.

ഇത് പൂർത്തിയാക്കാൻ, നിങ്ങളുടെ കമ്പ്യൂട്ടർ/സെർവറിലേക്ക് പുതിയ ഡ്രൈവ് അറ്റാച്ചുചെയ്യേണ്ടതുണ്ട്. ഈ ലേഖനത്തിന്റെ ഉദ്ദേശ്യത്തിനായി, ഡ്രൈവ് /dev/sdb-ന് കീഴിലായിരിക്കുമെന്ന് ഞാൻ അനുമാനിക്കും.

അടുത്ത ഘട്ടം പുതിയ ഡ്രൈവ് തയ്യാറാക്കുക എന്നതാണ്:

# fdisk /dev/sdb

ഇപ്പോൾ പുതിയ പാർട്ടീഷൻ സൃഷ്ടിക്കാൻ \n അമർത്തുക. പുതിയ പാർട്ടീഷൻ പ്രാഥമികമാക്കാൻ അടുത്തതായി \p അമർത്തുക. അതിനുശേഷം, പാർട്ടീഷൻ നമ്പർ 1-4 മുതൽ സജ്ജമാക്കുക. അതിനുശേഷം നിങ്ങൾ പാർട്ടീഷൻ വലുപ്പം തിരഞ്ഞെടുക്കും. ഇവിടെ എന്റർ അമർത്തുക. അടുത്ത ഘട്ടത്തിൽ നിങ്ങൾ പാർട്ടീഷന്റെ വലുപ്പം ക്രമീകരിക്കേണ്ടതുണ്ട്.

നിങ്ങൾക്ക് മുഴുവൻ ഡിസ്കും ഉപയോഗിക്കണമെങ്കിൽ ഒരിക്കൽ കൂടി എന്റർ അമർത്തുക. അല്ലെങ്കിൽ നിങ്ങൾക്ക് പുതിയ പാർട്ടീഷന്റെ വലുപ്പം സ്വയം സജ്ജമാക്കാൻ കഴിയും. തയ്യാറാകുമ്പോൾ, മാറ്റങ്ങൾ എഴുതാൻ \w അമർത്തുക. ഇപ്പോൾ നമ്മുടെ പുതിയ പാർട്ടീഷനായി ഒരു ഫയൽസിസ്റ്റം സൃഷ്ടിക്കേണ്ടതുണ്ട്. ഇത് ഇതുപയോഗിച്ച് എളുപ്പത്തിൽ ചെയ്യാം:

# mkfs.ext4 /dev/sdb1

ഇപ്പോൾ നമ്മൾ നമ്മുടെ പുതിയ പാർട്ടീഷൻ ഒരു ഫോൾഡറിൽ മൌണ്ട് ചെയ്യും. ഞാൻ എന്റെ ഫോൾഡറിന് \ssd എന്ന് പേരിട്ട് റൂട്ട് ഡയറക്ടറിയിൽ സൃഷ്ടിച്ചു:

# mkdir /ssd/

പുതിയ ഫോൾഡറിൽ ഞങ്ങൾ ഉണ്ടാക്കിയ പുതിയ പാർട്ടീഷൻ മൌണ്ട് ചെയ്യാൻ ഞങ്ങൾ തയ്യാറാണ്:

# mount /dev/sdb1  /ssd/

/etc/fstab ഫയലിൽ ഇനിപ്പറയുന്ന വരി ചേർത്തുകൊണ്ട് നിങ്ങൾക്ക് സ്റ്റാർട്ടപ്പിൽ മൗണ്ട് ചെയ്യാൻ കഴിയും.

/dev/sdb1 /ssd ext3 defaults 0 0

ഇപ്പോൾ നിങ്ങൾ MySQL പുതിയ ഡിസ്കിലേക്ക് നീക്കാൻ തയ്യാറാണ്. ആദ്യം MySQL സേവനം നിർത്തുക:

# service mysqld stop

ഡാറ്റാബേസുകളിൽ എഴുതാനുള്ള ശ്രമങ്ങൾ തടയാൻ അപ്പാച്ചെ/എൻജിഎൻഎക്സ് നിർത്താൻ ഞാൻ ശുപാർശചെയ്യുന്നു:

# service httpd stop
# service nginx stop

ഇപ്പോൾ മുഴുവൻ MySQL ഡയറക്ടറിയും പുതിയ ഡ്രൈവിൽ പകർത്തുക:

# cp /var/lib/mysql /ssd/ -Rp

നിങ്ങളുടെ MySQL ഡാറ്റാബേസുകളുടെ സൈറ്റിനെ ആശ്രയിച്ച് ഇതിന് കുറച്ച് സമയമെടുത്തേക്കാം. ഈ പ്രക്രിയ പൂർത്തിയായാൽ MySQL ഡയറക്ടറിയുടെ പേര് മാറ്റുക:

# mv /var/lib/mysql /var/lib/mysql-backup

അടുത്തതായി നമ്മൾ ഒരു സിംലിങ്ക് ഉണ്ടാക്കും.

# ln -s /ssd/mysql /var/lib/mysql

ഇപ്പോൾ നിങ്ങൾ MySQL-ഉം വെബ് സേവനവും ആരംഭിക്കാൻ തയ്യാറാണ്:

# service mysqld start
# service httpd start
# service nginx start

ഈ സമയത്ത് നിങ്ങളുടെ MySQL ഡാറ്റാബേസുകൾ പുതിയ ഡ്രൈവിൽ നിന്ന് ആക്സസ് ചെയ്യപ്പെടും.