Performance Tuning the MySQL Server in Spooler Server - 2009 July
Performance Tuning the MySQL Server in Spooler Server ﺑﻪ ﻣﻨﻈﻮر اﺳﺘﻔﺎده ﺑﻬﯿﻨﻪ ﺗﺮ از ﺣﺎﻓﻈﻪ ﻓﯿﺰﯾﮑﯽ در MySQLو ﺑﺎﻻﺗﺮ ﺑﺮدن ﺳﺮﻋﺖ ﺗﺮاﮐﻨﺶ ﻫﺎ ،ﺑﺎﯾﺪ MySQLرا ﺑﺎ RAM ﻫﻤﺎﻫﻨﮓ ﮐﺮد .ﺑﺮاي رﺳﯿﺪن ﺑﻪ اﯾﻦ ﻫﺪف ﻣﯿﺘﻮاﻧﯿﻢ از روش ﻫﺎي زﯾﺮ اﻗﺪام ﮐﻨﯿﻢ : ﭘﺲ از ﻧﺼﺐ MySQLﺻﻔﺤﻪ اي ﺑﺎز ﻣﯿﺸﻮد ﺑﺎ ﻧﺎم MySQL Server Instance Configuration Wizardﮐﻪ ازﯾﻦ ﺻﻔﺤﻪ ﺑﻪ ﻣﻨﻈﻮر اﻧﺠﺎم ﺗﻨﻈﯿﻤﺎت اوﻟﯿﻪ در MySQLاﺳﺘﻔﺎده ﻣﯿﺸﻮد ) ﺻﻔﺤﻪ ﻣﻮرد ﻧﻈﺮ از ﻣﺴﯿﺮ زﯾﺮ ﻧﯿﺰ ﻗﺎﯾﻞ دﺳﺘﺮﺳﯽ اﺳﺖ( Start-> All Program -> MySQL -> MySQL Server X -> MySQL Server Instance Config Wizard
ﺻﻔﺤﻪ اول و دوم را Nextﮐﺮده و در ﺻﻔﺤﻪ ﺳﻮم ﮔﺰﯾﻨﻪ Detailed Configurationرا ااﻧﺘﺨﺎب ﻣﯿﮑﻨﯿﻢ:
Mahdi.Faraji@Live.com
ﺻﻔﺤﻪ| 1
Performance Tuning the MySQL Server in Spooler Server - 2009 July
در ﺻﻔﺤﻪ ﺑﻌﺪ ) 3 (Server Typeﺣﺎﻟﺖ دارﯾﻢ ﮐﻪ ﺑﻪ ﺷﺮح زﯾﺮ ﻫﺴﺘﻨﺪ : : Developer Machine – 1در اﯾﻦ ﺣﺎﻟﺖ ،ﺗﻨﻈﯿﻤﺎت ﺣﺎﻓﻈﻪ ﺑﻪ ﺻﻮرت Smallﻣﯿﺒﺎﺷﺪ ،ﯾﻌﻨﯽ ﻣﻘﺪار ﮐﻤﯽ ﺣﺎﻓﻈﻪ در اﺧﺘﯿﺎر MySQLﻗﺮار ﻣﯿﮕﯿﺮد و ﺑﻪ ﻫﻤﯿﻦ دﻟﯿﻞ اﯾﻦ روش ﻣﺪ ﻧﻈﺮ ﻧﻤﯿﺒﺎﺷﺪ. : Server Machine – 2در اﯾﻦ ﺣﺎﻟﺖ ،ﺗﻨﻈﯿﻤﺎت ﺣﺎﻓﻈﻪ ﺑﻪ ﺻﻮرت Mediumاﻋﻤﺎل ﻣﯿﮕﺮرد و ﺣﺎﻓﻈﻪ ﺑﯿﺸﺘﺮي در اﺧﺘﯿﺎر MySQLﻗﺮار ﻣﯿﮕﯿﺮد .اﯾﻦ روش ﺑﯿﺸﺘﺮ ﻣﻨﺎﺳﺐ ﺣﺎﻟﺖ ﻫﺎﯾﯽ اﺳﺖ ﮐﻪ MySQLﺑﺮ روي ﯾﮏ ﺳﺮور ﺑﺎ ﭼﻨﺪﯾﻦ ﮐﺎرﺑﺮد ﻧﺼﺐ ﺷﺪه اﺳﺖ .در ﭼﻨﯿﻦ ﻣﻮاردي ﮐﻪ اط ﺳﺮور اﺳﺘﻔﺎده ﻫﺎي دﯾﮕﺮي ﻧﯿﺰ ﻣﯿﺸﻮد ﺑﺎﯾﺪ ازﯾﻦ ﮔﺰﯾﻨﻪ اﺳﺘﻔﺎده ﮐﺮد. : Dedicate MySQL Server Machine – 3در اﯾﻦ ﺣﺎﻟﺖ ،ﻓﺮض ﺑﺮ اﯾﻦ اﺳﺖ ﮐﻪ اﯾﻦ ﺳﺮور ﻓﻘﻂ ﻣﺨﺼﻮص ﺑﻪ MySQLاﺳﺖ و ﻫﯿﭻ ﺳﺮوﯾﺲ دﯾﮕﺮي ﺑﺮ روي آن ﻓﻌﺎﻟﯿﺖ ﻧﻤﯿﮑﻨﺪ ،در ﻧﺘﯿﺠﻪ ﻓﻀﺎي زﯾﺎدي از ﺣﺎﻓﻈﻪ را ﺑﻪ MySQL اﺧﺘﺼﺎص ﻣﯿﺪﻫﺪ .اﯾﻦ روش ﻣﻨﺎﺳﺐ ﺗﺮﯾﻦ روش ﺑﺮاي Tuneﮐﺮدن MySQLدر ﺳﺮورﻫﺎي SPOOLERاﺳﺖ .و ﻣﺪ ﻧﻈﺮ ﻣﺎ ﻣﯿﺒﺎﺷﺪ ,اﻟﺒﺘﻪ ﻣﻘﺎدﯾﺮ ﺗﻌﺮﯾﻒ ﺷﺪه در اﯾﻦ ﺣﺎﻟﺖ ﺑﺎز ﻫﻢ ﻗﺎﺑﻞ ارﺗﻘﺎء ﻫﺴﺘﻨﺪ ﮐﻪ ﺑﻪ آﻧﻬﺎ اﺷﺎره ﺧﻮاﻫﺪ ﺷﺪ.
ﺗﻤﺎﻣﯽ ﺻﻔﺤﺎت ﺑﻌﺪي را Nextﻣﯿﮑﻨﯿﻢ ﺗﺎ ﺑﻪ ﺻﻔﺤﻪ آﺧﺮ ﯾﻌﻨﯽ Ready to Executeﺑﺮﺳﯿﻢ .در اﯾﻦ ﺻﻔﺤﻪ ﺑﺮ روي Executeﮐﻠﯿﮏ ﻣﯿﮑﻨﯿﻢ و ﺻﺒﺮ ﻣﯿﮑﻨﯿﻢ ﺗﺎ ﺗﻨﻈﯿﻤﺎت اﻋﻤﺎل ﮔﺮدد.
Mahdi.Faraji@Live.com
ﺻﻔﺤﻪ| 2
Performance Tuning the MySQL Server in Spooler Server - 2009 July
. را ﮐﻠﯿﮏ ﻣﯿﮑﻨﯿﻢFinish در آﺧﺮ دﮐﻤﻪ
ﺑﺮاي دﺳﺘﺮﺳﯽ ﺑﻪ اﯾﻦ ﻗﺴﻤﺖ. وارد ﺷﻮﯾﻢMySQL Administrator ﺑﺮاي ﻣﺸﺎﻫﺪات ﺗﻐﯿﯿﺮا اﻋﻤﺎل ﺷﺪه ﺑﺎﯾﺪ ﺑﻪ : ﻣﯿﺘﻮاﻧﯿﺪ از ﻣﺴﯿﺮ زﯾﺮ اﻗﺪام ﮐﻨﯿﺪ Start-> All Program -> MySQL -> MySQL Server X -> MySQL Administrator
3 |ﺻﻔﺤﻪ
Mahdi.Faraji@Live.com
Performance Tuning the MySQL Server in Spooler Server - 2009 July
. وارد ﻣﯿﺸﻮﯾﻢAdministrator ﺑﻪ ﻣﺤﯿﻂPassword وUser ، Host ﭘﺲ از وارد ﮐﺮدن
. را اﻧﺘﺨﺎب ﻣﯿﮑﻨﯿﻢStartup Variables در ﺳﻤﺖ ﭼﭗ ﺻﻔﺤﻪ ﮔﺰﯾﻨﻪء
4 |ﺻﻔﺤﻪ
Mahdi.Faraji@Live.com
Performance Tuning the MySQL Server in Spooler Server - 2009 July
در ﺳﺮﺑﺮگ ، General Parametersﮔﺰﯾﻨﻪ Key Bufferﺑﺮاي ﻣﺎ ﺑﺴﯿﺎر ﻣﻬﻢ اﺳﺖ:
: Key Buffer – 1اﯾﻦ ﮔﺰﯾﻨﻪ ﺳﺎﯾﺰ ﺑﺎﻓﺮ اﺧﺘﺼﺎص داد ه ﺷﺪه ﺑﻪ ﺑﻠﻮك ﻫﺎي اﯾﻨﺪﮐﺲ ﺷﺪه را ﺗﻌﯿﯿﻦ ﻣﯿﮑﻨﯿﺪ ﺑﺮاي ﻫﻨﺪﻟﯿﻨﮓ ﺑﻬﺘﺮ اﯾﻨﺪﮐﺲ ﻫﺎ ﻣﯿﺘﻮان اﯾﻦ ﮔﺰﯾﻨﻪ را اﻓﺰاﯾﺶ داد .ﻣﻘﺪار اﯾﻦ ﮔﺰﯾﻨﻪ ﺑﺎ ﺗﻘﺴﯿﻢ Buffer Pool Sizeﺑﻪ ﻋﺪد 1.9ﺣﺎﺻﻞ ﻣﯿﮕﺮدد. Key Buffer = Buffer Pool Size / 1.9
ﺣﺎﮐﺜﺮ ﻣﻘﺪار اﯾﻦ ﮔﺰﯾﻨﻪ ﺗﻘﺮﯾﺒﺎ %40از ﻓﻀﺎي RAMﺳﺨﺖ اﻓﺰاري ﻣﯿﺒﺎﺷﺪ. : Sort Buffer Size – 2 ﻫﺮ Threadﺑﻪ ﻣﻨﻈﻮر Sortﮐﺮدن ﺑﺎﻓﺮي ﮐﻪ ﺑﻪ آن اﺧﺘﺼﺎي داده ﺷﺪه اﺳﺖ ﺑﻪ اﯾﻦ ﻓﻀﺎ ﻧﯿﺎز دارد .ﺑﻬﺘﺮ اﺳﺖ ﮐﻪ اﯾﻦ ﻣﻘﺪار ﺑﻪ ﺻﻮرت ﭘﯿﺸﻔﺮض ﺑﺎﻗﯽ ﺑﻤﺎﻧﺪ ﮐﻪ ﻣﻌﻤﻮﻻ ﻋﺪد 256Kﺑﺮ روي آن ﺳﺖ ﺷﺪه اﺳﺖ. در ﺳﺮﺑﺮگ InnoDB Parametersﻧﯿﺰ ﭼﻨﺪ ﮔﺰﯾﻨﻪ ﺑﺮاي ﻣﺎ ﻣﻬﻢ ﻫﺴﺘﻨﺪ ﮐﻪ ﺑﻪ ﺷﺮح زﯾﺮﻧﺪ :
Mahdi.Faraji@Live.com
ﺻﻔﺤﻪ| 5
Performance Tuning the MySQL Server in Spooler Server - 2009 July
:Buffer Pool Size اﯾﻦ ﮔﺰﯾﻨﻪ ﻓﻀﺎي ﺗﺨﺼﯿﺺ داده ﺷﺪه ﺑﻪ ﻣﻨﻈﻮر ﻋﻤﻠﯿﺎت I/Oدر دﺳﺘﺮﺳﯽ ﺑﻪ ﻣﺤﺘﻮﯾﺎت ﺟﺪاول ﻣﯿﺒﺎﺷﺪ .در ﺳﺮورﻫﺎي ) Dedicateﮐﻪ ﻣﺪ ﻧﻈﺮ ﻣﺎ ﻣﯿﺒﺎﺷﺪ( ﻣﯿﺘﻮان اﯾﻦ ﮔﺰﯾﻨﻪ را ﺗﺎ %80ﻓﻀﺎي RAM ﺳﺨﺖ اﻓﺰاري اﻓﺰاﯾﺶ داد .ﺗﻨﻈﯿﻢ اﯾﻦ ﮔﺰﯾﻨﻪ ﺑﺮ روي ﻣﻘﺪاري ﺑﯿﺶ از ﻣﻘﺪار ﻣﺠﺎز ﺑﺎﻋﺚ ﻣﯿﮕﺮرد ﮐﻪ MySQLﺑﻪ ﺻﻮرت اﺗﻮﻣﺎﺗﯿﮏ Stopﺷﻮد و ﯾﺎ در ﻣﻮاردي ﺳﯿﺴﺘﻢ ﻋﺎﻣﻞ ﻫﻨﮓ ﮐﻨﺪ و ﻣﺠﺒﻮر ﺑﻪ راه اﻧﺪازي ﻣﺠﺪد ﺳﺮور ﺷﻮﯾﻢ. :Add. Mem Pool Size از اﯾﻦ ﮔﺰﯾﻨﻪ ﺑﺮاي ذﺧﯿﺮهء ﺳﺎﺧﺘﺎرﻫﺎي داﺧﻠﯽ اﻃﻼﻋﺎت اﺳﺘﻔﺎده ﻣﯿﺸﻮد .ﺣﺪاﻗﻞ ﻣﻘﺪار ﭘﯿﺸﻔﺮض اﯾﻦ ﮔﺰﯾﻨﻪ 2Mاﺳﺖ اﻣﺎ در ﺻﻮرﺗﯽ ﮐﻪ ﺗﻌﺪاد Tableﻫﺎي ﻣﺎ زﯾﺎد ﺑﺎﺷﺪ ،ﺑﺮاي ﮐﺎراﯾﯽ ﺑﻬﺘﺮ ﻣﯿﺘﻮان آﻧﺮا اﻓﺰاﯾﺶ داد .اﮔﺮ InnoDBدر اﯾﻦ ﮔﺰﯾﻨﻪ ﺧﻮب ﺗﻨﻈﯿﻢ ﻧﺸﺪه ﺑﺎﺷﺪ و ﺑﺎ ﮐﻤﺒﻮد ﻣﻮاﺟﻪ ﮔﺮد ،اﯾﻦ ﻗﺴﻤﺖ ﺑﻪ ﺻﻮرت اﺗﻮاﺗﯿﮏ ﻣﻘﺪار ﻣﻮرد ﻧﯿﺎز ﺣﺎﻓﻈﻪ را از ﺳﯿﺴﺘﻢ ﻋﺎﻣﻞ ﮐﺴﺐ ﻣﯿﮑﻨﺪ و ﭘﯿﻐﺎم ﺧﻄﺎﯾﯽ را در MySQL Log درج ﻣﯿﻨﻤﺎﯾﺪ .ﻣﻘﺪار ﻣﻔﯿﺪ اﯾﻦ ﮔﺰﯾﻨﻪ ﺑﺎ ﺗﻘﺴﯿﻢ Buffer Pool Sizeﺑﺮ ﻋﺪد 47ﺑﺪﺳﺖ ﻣﯿﺎﯾﺪ. :Log Buffer Size اﯾﻦ ﮔﺰﯾﻨﻪ ﻣﯿﺰان ﻓﻀﺎي ﭘﯿﺸﻔﺮض در ﺑﺎﻓﺮ ﮐﺮدن ﺗﺮاﮐﻨﺶ ﻫﺎ را ﻧﺸﺎن ﻣﯿﺪﻫﺪ .ﻫﺮ ﭼﻪ ﻓﻀﺎي ﺑﯿﺸﺘﺮي را اﺧﺘﺼﺎص ﺑﺪﻫﯿﻢ،ﺗﺮاﮐﻨﺶ ﻫﺎي ﺑﯿﺸﺘﺮ و ﺑﺰرﮔﺘﺮي را ﻣﯿﺘﻮاﻧﯿﻢ اﻧﺠﺎم دﻫﯿﻢ ﺑﺪون اﯾﻨﮑﻪ ﺗﺎ ﻗﺒﻞ از ﭘﺎﯾﺎن ﺗﺮاﮐﻨﺶ ،ﻻزم ﺑﻪ ﻓﺎﯾﻞ Logﺟﺪﯾﺪي ﺑﺎﺷﺪ. :Flush Log at در اﯾﻦ ﻗﺴﻤﺖ ﻣﯿﺘﻮاﻧﯿﻢ ﺗﻌﯿﯿﻦ ﮐﻨﯿﻢ ﮐﻪ ﻣﻘﺪار ﻓﻀﺎي اﺧﺘﺼﺎص داده ﺷﺪه ﺑﻪ ﻓﺎﯾﻞ Log Bufferدر ﭼﻪ زﻣﺎﻧﯽ و ﺑﻪ ﭼﻪ ﻧﺤﻮي ﭘﺎك ﺷﺪه و ﻣﺤﺘﻮاﯾﺖ آن ﺧﺎﻟﯽ ﺷﻮد .ﺑﻬﺘﺮ اﺳﺖ ﮐﻪ از ﮔﺰﯾﻨﻪ 3ﯾﻌﻨﯽ Write to log and flush every secondاﺳﺘﻔﺎده ﮐﺮد ،ﺗﺎ ﭘﺲ از ﻫﺮ ﺗﺮاﮐﻨﺶ ﻣﻮﻓﻖ ،ﺑﺎﻓﺮ ﺗﺨﻠﯿﻪ ﺷﻮد.
در ﭘﺎﯾﺎن ﺗﻮﺟﻪ ﺑﻪ اﯾﻦ ﻧﮑﺘﻪ ﺿﺮوري اﺳﺖ ﮐﻪ ،در ﺻﻮرﺗﯽ ﮐﻪ ﺑﻪ ﻫﺮ دﻟﯿﻠﯽ MySQLرا Stopﮐﺮدﯾﺪ و دﯾﮕﺮ Start ﻧﺸﺪ ﻓﻘﻂ ﮐﺎﻓﯽ اﺳﺖ ﮐﻪ دوﺑﺎره MySQL Server Instance Config Wizardرا اﺟﺮا ﮐﺮده و ﺗﻨﻈﯿﻤﺎت ﭘﯿﻔﺮض را اﻋﻤﺎل ﻧﻤﺎﯾﯿﺪ ﺗﺎ ﻓﺎﯾﻞ My.iniدوﺑﺎره ﺑﺎزﺳﺎزي ﺷﺪه و Startﺷﻮد. ﭘﺎﯾﺎن Mahdi.Faraji@Live.com
ﺻﻔﺤﻪ| 6