程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 對MySQL設置裝備擺設參數 my.ini/my.cnf的具體解析

對MySQL設置裝備擺設參數 my.ini/my.cnf的具體解析

編輯:MySQL綜合教程

對MySQL設置裝備擺設參數 my.ini/my.cnf的具體解析。本站提示廣大學習愛好者:(對MySQL設置裝備擺設參數 my.ini/my.cnf的具體解析)文章只能為提供參考,不一定能成為您想要的結果。以下是對MySQL設置裝備擺設參數 my.ini/my.cnf的具體解析正文


以下的文章重要描寫的是對MySQL設置裝備擺設參數 my.ini/my.cnf的具體解析,我們重要是以實例演示的方法來對MySQL設置裝備擺設參數 my.ini/my.cnf的現實操作步調停止解釋,以下就是相干內容的詳細描寫。

1.獲得以後設置裝備擺設參數

要優化MySQL設置裝備擺設參數,起首要懂得以後的設置裝備擺設參數和運轉情形。應用以下敕令可以取得今朝辦事器應用的設置裝備擺設參數:

mysqld –verbose –help
mysqladmin variables extended-status –u root –p

在MySQL掌握台外面,運轉以下敕令可以獲得狀況變量的值:

mysql> SHOW STATUS; 假如只需檢討某幾個狀況變量,可使用以下敕令:
mysql> SHOW STATUS LIKE ‘[婚配形式]'; ( 可使用%、?等 )

2.優化參數
參數優化基於一個條件,就是在我們的數據庫中平日都應用InnoDB表,而不應用MyISAM表。在優化MySQL時,有兩個MySQL設置裝備擺設參數是最主要的,即table_cache和key_buffer_size。

table_cache

table_cache指定表高速緩存的年夜小。每當MySQL拜訪一個表時,假如在表緩沖區 中還有空間,該表就被翻開並放入個中,如許可以更快地拜訪表內容。經由過程檢討峰值時光的狀況值Open_tables和Opened_tables,可以決 定能否須要增長table_cache的值。假如你發明 open_tables等於table_cache,而且opened_tables在赓續增加,那末你就須要增長table_cache的值了(上述狀 態值可使用SHOW STATUS LIKE ‘Open%tables'取得)。留意,不克不及自覺地把table_cache設置成很年夜的值。假如設置得太高,能夠會形成文件描寫符缺乏,從而形成機能 不穩固或許銜接掉敗。

關於有1G內存的機械,推舉值是128-256。

案例1:該案例來自一個不是特殊忙碌的辦事器

table_cache – 512
open_tables – 103
opened_tables – 1273
uptime – 4021421 (measured in seconds)

該案例中table_cache仿佛設置得太高了。在峰值時光,翻開表的數量比table_cache要少很多。

案例2:該案例來自一台開辟辦事器。


table_cache – 64
open_tables – 64
opened-tables – 431
uptime – 1662790 (measured in seconds)

固然open_tables曾經等於table_cache,然則絕對於辦事器運轉時光來講,opened_tables的值也異常低。是以,增長table_cache的值應當用途不年夜。

案例3:該案例來自一個upderperforming的辦事器


table_cache – 64
open_tables – 64
opened_tables – 22423
uptime – 19538

該案例中table_cache設置得太低了。固然運轉時光不到6小時,open_tables到達了最年夜值,opened_tables的值也異常高。如許就須要增長table_cache的值。

key_buffer_size

key_buffer_size指定索引緩沖區的年夜小,它決議索引處置的速度,特別是索引讀 的速度。經由過程檢討狀況值 Key_read_requests和Key_reads,可以曉得key_buffer_size設置能否公道。比例key_reads / key_read_requests應當盡量的低,至多是1:100,1:1000更好(上述狀況值可使用SHOW STATUS LIKE ‘key_read%'取得)。

key_buffer_size只對MyISAM表起感化。即便你不應用MyISAM表,然則外部的暫時磁盤表是MyISAM表,也要應用該值。可使用檢討狀況值created_tmp_disk_tables得知概況。

關於1G內存的機械,假如不應用MyISAM表,推舉值是16M(8-64M)。

案例1:安康狀態

key_buffer_size – 402649088 (384M)
key_read_requests – 597579931
key_reads – 56188

案例2:警報狀況


key_buffer_size – 16777216 (16M)
key_read_requests – 597579931
key_reads – 53832731

案例1中比例低於1:10000,是安康的情形;案例2中比例到達1:11,警報曾經拉響。

優化query_cache_size

從4.0.1開端,MySQL設置裝備擺設參數供給了查詢緩沖機制。應用查詢緩沖,MySQL將SELECT語句和查詢成果寄存在緩沖區中,往後關於異樣的SELECT語句(辨別年夜小寫),將直接從緩沖區中讀取成果。依據MySQL用戶手冊,應用查詢緩沖最多可以到達238%的效力。

經由過程檢討狀況值Qcache_*,可以曉得query_cache_size設置能否公道 (上述狀況值可使用SHOW STATUS LIKE ‘Qcache%'取得)。假如Qcache_lowmem_prunes的值異常年夜,則注解常常湧現緩沖不敷的情形,假如Qcache_hits的值也 異常年夜,則注解查詢緩沖應用異常頻仍,此時須要增長緩沖年夜小;

假如Qcache_hits的值不年夜,則注解你的查詢反復率很低,這類情形下應用查詢緩沖反 而會影響效力,那末可以斟酌不消查詢緩沖。另外,在SELECT語句中參加SQL_NO_CACHE可以明白表現不應用查詢緩沖。

與查詢緩沖有關的參數還有query_cache_type、 query_cache_limit、 query_cache_min_res_unit。query_cache_type指定能否應用查詢緩沖,可以設置為0、1、2,該變量是 SESSION級的變量。

query_cache_limit指訂單個查詢可以或許應用的緩沖區年夜小,缺省為1M。 query_cache_min_res_unit是在4.1版本今後引入的,它指定分派緩沖區空間的最小單元,缺省為4K。檢討狀況值 Qcache_free_blocks,假如該值異常年夜,則注解緩沖區中碎片許多,這就注解查詢成果都比擬小,此時須要減小 query_cache_min_res_unit。

開啟二進制日記( Binary Log )

二進制日記包括一切更新數據的語句,其目標是在恢單數據庫時用它來把數據盡量恢復到最初的狀況。別的,假如做同步復制( Replication )的話,也須要應用二進制日記傳送修正情形。

開啟二進制日記,須要設置參數log-bin。log_bin指定日記文件,假如不供給文件名,MySQL將本身發生缺省文件名。MySQL會在文件名前面主動添加數字索引,每次啟動辦事時,都邑從新生成一個新的二進制文件。

另外,應用log-bin-index可以指定索引文件;應用binlog-do-db可以 指定記載的數據庫;應用binlog-ignore- db可以指定不記載的數據庫。留意的是:binlog-do-db和binlog-ignore-db一次只指定一個數據庫,指定多個數據庫須要多個語 句。並且,MySQL會將一切的數據庫稱號改成小寫,在指定命據庫時必需全體應用小寫名字,不然不會起感化。

在MySQL中應用SHOW MASTER STATUS敕令可以檢查今朝的二進制日記狀況。

開啟慢查詢日記( slow query log )

慢查詢日記關於跟蹤有成績的查詢異常有效。它記載一切查過long_query_time的查詢,假如須要,還可以記載不應用索引的記載。上面是一個慢查詢日記的例子:

開啟慢查詢日記,須要設置參數log_slow_queries、 long_query_times、log-queries-not-using -indexes。log_slow_queries指定日記文件,假如不供給文件名,MySQL將本身發生缺省文件名。 long_query_times指定慢查詢的阈值,缺省是10秒。log-queries-not-using-indexes是4.1.0今後引入的 參數,它指導記載不應用索引的查詢。

設置裝備擺設InnoDB

絕對於MyISAM表來講,准確MySQL設置裝備擺設參數關於InnoDB表加倍症結。個中,最主要的參數是 innodb_data_file_path。它指定表數據和索引存儲的空間,可所以一個或許多個文件。最初一個數據文件必需是主動擴大的,也只要最初一 個文件許可主動擴大。如許,當空間用完後,主動擴大數據文件就會主動增加(以8MB為單元)以包容額定的數據。例如:

innodb_data_file_path=/disk1/ibdata1:900M;/disk2/ibdata2:50M:autoextend

兩個數據文件放在分歧的磁盤上。數據起首放在ibdata1中,當到達900M今後,數據就放在ibdata2中。一旦到達50MB,ibdata2將以8MB為單元主動增加。

假如磁盤滿了,你須要在別的的磁盤下面增長一個數據文件。為此,你須要檢查最初一個文件的尺寸,然後盤算最接近的整數(MB)。然背工工修正該文件的年夜小,並添加新的數據文件。例如:假定ibdata2曾經有109MB數據,那末可以修正以下:


innodb_data_file_path=/disk1/ibdata1:900M;/disk2/ibdata2:109M;/disk3/ibdata3:500M:autoextend
flush_time

假如體系有成績而且常常鎖逝世或從新引誘,應將該變量設置為非零值,這將招致辦事器按flush_time 秒來刷新表的高速緩存。用這類辦法來寫出對表的修正將下降機能,但可削減表訛誤或數據喪失的機遇。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved