mysql 優化日志。本站提示廣大學習愛好者:(mysql 優化日志)文章只能為提供參考,不一定能成為您想要的結果。以下是mysql 優化日志正文
同時在線拜訪量持續增年夜 關於1G內存的辦事器顯著感到到費勁嚴重時乃至天天都邑逝世機 或許時不時的辦事器卡一下 這個成績已經困擾了我半個多月MySQL應用是很具伸縮性的算法,是以你平日能用很少的內存運轉或給MySQL更多的被存以獲得更好的機能。
裝置好mysql後,配制文件應當在/usr/local/mysql/share/mysql目次中,配制文件有幾個,有my-huge.cnf my-medium.cnf my-large.cnf my-small.cnf,分歧的流量的網站和分歧配制的辦事器情況,固然須要有分歧的配制文件了。
普通的情形下,my-medium.cnf這個配制文件就可以知足我們的年夜多須要;普通我們會把設置裝備擺設文件拷貝到/etc/my.cnf 只須要修正這個設置裝備擺設文件便可以了,應用mysqladmin variables extended-status –u root –p 可以看到今朝的參數,有3個設置裝備擺設參數是最主要的,即key_buffer_size,query_cache_size,table_cache。
key_buffer_size只對MyISAM表起感化,
key_buffer_size指定索引緩沖區的年夜小,它決議索引處置的速度,特別是索引讀的速度。普通我們設為16M,現實上略微年夜一點的站點 這個數字是遠遠不敷的,經由過程檢討狀況值Key_read_requests和Key_reads,可以曉得key_buffer_size設置能否公道。比例key_reads / key_read_requests應當盡量的低,至多是1:100,1:1000更好(上述狀況值可使用SHOW STATUS LIKE ‘key_read%'取得)。 或許假如你裝了phpmyadmin 可以經由過程辦事器運轉狀況看到,筆者推舉用phpmyadmin治理mysql,以下的狀況值都是自己經由過程phpmyadmin取得的實例剖析:
這個辦事器曾經運轉了20天
key_buffer_size – 128M
key_read_requests – 650759289
key_reads - 79112比例接近1:8000 安康狀態異常好
別的一個估量key_buffer_size的方法 把你網站數據庫的每一個表的索引所占空間年夜小加起來看看以此辦事器為例:比擬年夜的幾個表索引加起來年夜概125M 這個數字會跟著表變年夜而變年夜。
從4.0.1開端,MySQL供給了查詢緩沖機制。應用查詢緩沖,MySQL將SELECT語句和查詢成果寄存在緩沖區中,往後關於異樣的SELECT語句(辨別年夜小寫),將直接從緩沖區中讀取成果。依據MySQL用戶手冊,應用查詢緩沖最多可以到達238%的效力。
經由過程調理以下幾個參數可以曉得query_cache_size設置得能否公道
Qcache inserts
Qcache hits
Qcache lowmem prunes
Qcache free blocks
Qcache total blocksQcache_lowmem_prunes的值異常年夜,則注解常常湧現緩沖不敷的情形,同時Qcache_hits的值異常年夜,則注解查詢緩沖應用異常頻仍,此時須要增長緩沖年夜小Qcache_hits的值不年夜,則注解你的查詢反復率很低,這類情形下應用查詢緩沖反而會影響效力,那末可以斟酌不消查詢緩沖。另外,在SELECT語句中參加SQL_NO_CACHE可以明白表現不應用查詢緩沖。
Qcache_free_blocks,假如該值異常年夜,則注解緩沖區中碎片許多query_cache_type指定能否應用查詢緩沖
我設置:
query_cache_size = 32M
query_cache_type= 1獲得以下狀況值:
Qcache queries in cache 12737 注解今朝緩存的條數
Qcache inserts 20649006
Qcache hits 79060095 看來反復查詢率還挺高的
Qcache lowmem prunes 617913 有這麼屢次湧現緩存太低的情形
Qcache not cached 189896
Qcache free memory 18573912 今朝殘剩緩存空間
Qcache free blocks 5328 這個數字仿佛有點年夜 碎片很多
Qcache total blocks 30953假如內存許可32M應當要往上加點
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。
筆者設置table_cache = 256
獲得以下狀況:
Open tables 256
Opened tables 9046固然open_tables曾經等於table_cache,然則絕對於辦事器運轉時光來講,曾經運轉了20天,opened_tables的值也異常低。是以,增長table_cache的值應當用途不年夜。假如運轉了6個小時就湧現上述值 那就要斟酌增年夜table_cache。
假如你不須要記載2進制log 就把這個功效關失落,留意關失落今後就不克不及恢復出成績前的數據了,須要您手動備份,二進制日記包括一切更新數據的語句,其目標是在恢單數據庫時用它來把數據盡量恢復到最初的狀況。別的,假如做同步復制( Replication )的話,也須要應用二進制日記傳送修正情形。
log_bin指定日記文件,假如不供給文件名,MySQL將本身發生缺省文件名。MySQL會在文件名前面主動添加數字引,每次啟動辦事時,都邑從新生成一個新的二進制文件。另外,應用log-bin-index可以指定索引文件;應用binlog-do-db可以指定記載的數據庫;應用binlog-ignore-db可以指定不記載的數據庫。留意的是:binlog-do-db和binlog-ignore-db一次只指定一個數據庫,指定多個數據庫須要多個語句。並且,MySQL會將一切的數據庫稱號改成小寫,在指定命據庫時必需全體應用小寫名字,不然不會起感化。
關失落這個功效只須要在他後面加上#號
#log-bin開啟慢查詢日記( 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今後引入的參數,它指導記載不應用索引的查詢。筆者設置long_query_time=10
筆者設置:
sort_buffer_size = 1M
max_connections=120
wait_timeout =120
back_log=100
read_buffer_size = 1M
thread_cache=32
interactive_timeout=120
thread_concurrency = 4參數解釋:
back_log
請求MySQL能有的銜接數目。當重要MySQL線程在一個很短時光內獲得異常多的銜接要求,這就起感化,然後主線程花些時光(雖然很短)檢討銜接而且啟動一個新線程。back_log值指出在MySQL臨時停滯答復新要求之前的短時光內若干個要求可以被存在客棧中。只要假如希冀在一個短時光內有許多銜接,你須要增長它,換句話說,這值對到來的TCP/IP銜接的偵聽隊列的年夜小。你的操作體系在這個隊列年夜小上有它本身的限制。 Unix listen(2)體系挪用的手冊頁應當有更多的細節。檢討你的OS文檔找出這個變量的最年夜值。試圖設定back_log高於你的操作體系的限制將是有效的。
max_connections
並發銜接數量最年夜,120 跨越這個值就會主動恢復,出了成績能主動處理
thread_cache
沒找到詳細解釋,不外設置為32後 20天賦創立了400多個線程 而之前一天就創立了上千個線程 所以照樣有效的
thread_concurrency
#設置為你的cpu數量x2,例如,只要一個cpu,那末thread_concurrency=2
#有2個cpu,那末thread_concurrency=4
skip-innodb
#去失落innodb支撐代碼:
# Example MySQL config file for medium systems.
#
# This is for a system with little memory (32M - 64M) where MySQL plays
# an important part, or systems up to 128M where MySQL is used together with
# other programs (such as a web server)
#
# You can copy this file to
# /etc/my.cnf to set global options,
# mysql-data-dir/my.cnf to set server-specific options (in this
# installation this directory is /var/lib/mysql) or
# ~/.my.cnf to set user-specific options.
#
# In this file, you can use all long options that a program supports.
# If you want to know which options a program supports, run the program
# with the "--help" option.
# The following options will be passed to all MySQL clients
[client]
#password = your_password
port = 3306
socket = /tmp/mysql.sock
#socket = /var/lib/mysql/mysql.sock
# Here follows entries for some specific programs
# The MySQL server
[mysqld]
port = 3306
socket = /tmp/mysql.sock
#socket = /var/lib/mysql/mysql.sock
skip-locking
key_buffer = 128M
max_allowed_packet = 1M
table_cache = 256
sort_buffer_size = 1M
net_buffer_length = 16K
myisam_sort_buffer_size = 1M
max_connections=120
#addnew config
wait_timeout =120
back_log=100
read_buffer_size = 1M
thread_cache=32
skip-innodb
skip-bdb
skip-name-resolve
join_buffer_size=512k
query_cache_size = 32M
interactive_timeout=120
long_query_time=10
log_slow_queries= /usr/local/mysql4/logs/slow_query.log
query_cache_type= 1
# Try number of CPU's*2 for thread_concurrency
thread_concurrency = 4
#end new config
# Don't listen on a TCP/IP port at all. This can be a security enhancement,
# if all processes that need to connect to mysqld run on the same host.
# All interaction with mysqld must be made via Unix sockets or named pipes.
# Note that using this option without enabling named pipes on Windows
# (via the "enable-named-pipe" option) will render mysqld useless!
#
#skip-networking
# Replication Master Server (default)
# binary logging is required for replication
#log-bin
# required unique id between 1 and 2^32 - 1
# defaults to 1 if master-host is not set
# but will not function as a master if omitted
server-id = 1
# Replication Slave (comment out master section to use this)
#
# To configure this host as a replication slave, you can choose between
# two methods :
#
# 1) Use the CHANGE MASTER TO command (fully described in our manual) -
# the syntax is:
#
# CHANGE MASTER TO MASTER_HOST=, MASTER_PORT=,
# MASTER_USER=, MASTER_PASSWORD= ;
#
# where you replace , , by quoted strings and
# by the master's port number (3306 by default).
#
# Example:
#
# CHANGE MASTER TO MASTER_HOST='125.564.12.1', MASTER_PORT=3306,
# MASTER_USER='joe', MASTER_PASSWORD='secret';
#
# OR
#
# 2) Set the variables below. However, in case you choose this method, then
# start replication for the first time (even unsuccessfully, for example
# if you mistyped the password in master-password and the slave fails to
# connect), the slave will create a master.info file, and any later
# change in this file to the variables' values below will be ignored and
# overridden by the content of the master.info file, unless you shutdown
# the slave server, delete master.info and restart the slaver server.
# For that reason, you may want to leave the lines below untouched
# (commented) and instead use CHANGE MASTER TO (see above)
#
# required unique id between 2 and 2^32 - 1
# (and different from the master)
# defaults to 2 if master-host is set
# but will not function as a slave if omitted
#server-id = 2
#
# The replication master for this slave - required
#master-host =
#
# The username the slave will use for authentication when connecting
# to the master - required
#master-user =
#
# The password the slave will authenticate with when connecting to
# the master - required
#master-password =
#
# The port the master is listening on.
# optional - defaults to 3306
#master-port =
#
# binary logging - not required for slaves, but recommended
#log-bin
# Point the following paths to different dedicated disks
#tmpdir = /tmp/
#log-update = /path-to-dedicated-directory/hostname
# Uncomment the following if you are using BDB tables
#bdb_cache_size = 4M
#bdb_max_lock = 10000
# Uncomment the following if you are using InnoDB tables
#innodb_data_home_dir = /var/lib/mysql/
#innodb_data_file_path = ibdata1:10M:autoextend
#innodb_log_group_home_dir = /var/lib/mysql/
#innodb_log_arch_dir = /var/lib/mysql/
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
#innodb_buffer_pool_size = 16M
#innodb_additional_mem_pool_size = 2M
# Set .._log_file_size to 25 % of buffer pool size
#innodb_log_file_size = 5M
#innodb_log_buffer_size = 8M
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates
[isamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M
[myisamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout彌補
優化table_cachetable_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 – 512open_tables – 103opened_tables – 1273uptime – 4021421 (measured in seconds)該案例中table_cache仿佛設置得太高了。在峰值時光,翻開表的數量比table_cache要少很多。
案例2:該案例來自一台開辟辦事器。table_cache – 64open_tables – 64opened-tables – 431uptime – 1662790 (measured in seconds)固然open_tables曾經等於table_cache,然則絕對於辦事器運轉時光來講,opened_tables的值也異常低。是以,增長table_cache的值應當用途不年夜。案例3:該案例來自一個upderperforming的辦事器table_cache – 64open_tables – 64opened_tables – 22423uptime – 19538該案例中table_cache設置得太低了。固然運轉時光不到6小時,open_tables到達了最年夜值,opened_tables的值也異常高。如許就須要增長table_cache的值。優化key_buffer_sizekey_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 – 597579931key_reads - 56188案例2:警報狀況key_buffer_size – 16777216 (16M)key_read_requests – 597579931key_reads - 53832731案例1中比例低於1:10000,是安康的情形;案例2中比例到達1:11,警報曾經拉響。
1)、back_log: 請求 MySQL 能有的銜接數目。當重要MySQL線程在一個很短時光內獲得異常多的銜接要求,這就起感化,然後主線程花些時光(雖然很短)檢討銜接而且啟動一個新線程。
back_log值指出在MySQL臨時停滯答復新要求之前的短時光內若干個要求可以被存在客棧中。只要假如希冀在一個短時光內有許多銜接,你須要增長它,換句話說,這值對到來的TCP/IP銜接的偵聽隊列的年夜小。你的操作體系在這個隊列年夜小上有它本身的限制。 試圖設定back_log高於你的操作體系的限制將是有效的。 當你不雅察你的主機過程列表,發明年夜量 264084 | unauthenticated user | xxx.xxx.xxx.xxx | NULL | Connect | NULL | login | NULL 的待銜接過程時,就要加年夜 back_log 的值了。默許數值是50,我把它改成500。
(2)、interactive_timeout: 辦事器在封閉它前在一個交互銜接上期待行為的秒數。一個交互的客戶被界說為對 mysql_real_connect()應用 CLIENT_INTERACTIVE 選項的客戶。 默許數值是28800,我把它改成7200。
(3)、key_buffer_size: 索引塊是緩沖的而且被一切的線程同享。key_buffer_size是用於索引塊的緩沖區年夜小,增長它可獲得更利益理的索引(對一切讀和多重寫),到你能累贅得起那樣多。假如你使它太年夜,體系將開端換頁而且真的變慢了。默許數值是8388600(8M),我的MySQL主機有2GB內存,所以我把它改成402649088(400MB)。
(4)、max_connections: 許可的同時客戶的數目。增長該值增長 mysqld 請求的文件描寫符的數目。這個數字應當增長,不然,你將常常看到 Too many connections 毛病。 默許數值是100,我把它改成1024 。
(5)、record_buffer: 每一個停止一個次序掃描的線程為其掃描的每張表分派這個年夜小的一個緩沖區。假如你做許多次序掃描,你能夠想要增長該值。默許數值是131072(128K),我把它改成16773120 (16M)
(6)、sort_buffer: 每一個須要停止排序的線程分派該年夜小的一個緩沖區。增長這值加快ORDER BY或GROUP BY操作。默許數值是2097144(2M),我把它改成 16777208 (16M)。
(7)、table_cache: 為一切線程翻開表的數目。增長該值能增長mysqld請求的文件描寫符的數目。MySQL對每一個獨一翻開的表須要2個文件描寫符。默許數值是64,我把它改成512。
(、thread_cache_size: 可以復用的保留在中的線程的數目。假如有,新的線程從緩存中獲得,當斷開銜接的時刻假如有空間,客戶的線置在緩存中。假如有許多新的線程,為了進步機能可以這個變量值。經由過程比擬 Connections 和 Threads_created 狀況的變量,可以看到這個變量的感化。我把它設置為 80。
(10)、wait_timeout: 辦事器在封閉它之前在一個銜接上期待行為的秒數。 默許數值是28800,我把它改成7200。 注:參數的調劑可以經由過程修正 /etc/my.cnf 文件偏重啟 MySQL 完成。這是一個比擬謹嚴的任務,下面的成果也僅僅是我的一些意見,你可以依據你本身主機的硬件情形(特殊是內存年夜小)進一步修正。
我從網上找到的,我剛看了一下,還算不錯,發在這裡,年夜家看看,最好有牛人彌補完美然後,再整頓整頓!
========================================在Apache, PHP, MySQL的系統架構中,MySQL關於機能的影響最年夜,也是症結的焦點部門。關於Discuz!服裝論壇t.vhao.net法式也是如斯,MySQL的設置能否公道優化,直接影響到服裝論壇t.vhao.net的速度和承載量!同時,MySQL也是優化難度最年夜的一個部門,不只須要懂得一些MySQL專業常識,同時還須要長時光的不雅察統計而且依據經歷停止斷定,然後設置公道的參數。 上面我們懂得一下MySQL優化的一些基本,MySQL的優化我分為兩個部門,一是辦事器物理硬件的優化;二是MySQL本身(my.cnf)的優化。
(1) 辦事器硬件對MySQL機能的影響
a) 磁盤尋道才能(磁盤I/O),以今朝高轉速SCSI硬盤(7200轉/秒)為例,這類硬盤實際上每秒尋道7200次,這是物理特征決議的,沒有方法轉變。MySQL每秒鐘都在停止年夜量、龐雜的查詢操作,對磁盤的讀寫量可想而知。所以,平日以為磁盤I/O是制約MySQL機能的最年夜身分之一,關於日均拜訪量在100萬PV以上的Discuz!服裝論壇t.vhao.net,因為磁盤I/O的制約,MySQL的機能會異常低下!處理這一制約身分可以斟酌以下幾種處理計劃: 應用RAID-0+1磁盤陣列,留意不要測驗考試應用RAID-5,MySQL在RAID-5磁盤陣列上的效力不會像你等待的那樣快; 擯棄傳統的硬盤,應用速度更快的閃存式存儲裝備。經由Discuz!公司技巧工程的測試,應用閃存式存儲裝備可比傳統硬盤速度凌駕6-10倍閣下。
b) CPU 關於MySQL運用,推舉應用S.M.P.架構的多路對稱CPU,例如:可使用兩顆Intel Xeon 3.6GHz的CPU。
c) 物理內存關於一台應用MySQL的Database Server來講,辦事器內存建議不要小於2GB,推舉應用4GB以上的物理內存。
(2) MySQL本身身分當處理了上述辦事器硬件制約身分後,讓我們看看MySQL本身的優化是若何操作的。對MySQL本身的優化重要是對其設置裝備擺設文件my.cnf中的各項參數停止優化調劑。上面我們引見一些對機能影響較年夜的參數。 因為my.cnf文件的優化設置是與辦事器硬件設置裝備擺設互相關注的,因此我們指定一個設想的辦事器硬件情況:
CPU: 2顆Intel Xeon 2.4GHz 內存: 4GB DDR 硬盤: SCSI 73GB
上面,我們依據以上硬件設置裝備擺設聯合一份曾經優化好的my.cnf停止解釋:
# vi /etc/my.cnf以下只列出my.cnf文件中[mysqld]段落中的內容,其他段落內容對MySQL運轉機能影響甚微,因此權且疏忽。
[mysqld]
port = 3306
serverid = 1
socket = /tmp/mysql.sock
skip-locking
# 防止MySQL的內部鎖定,削減失足概率加強穩固性。
skip-name-resolve制止MySQL對內部銜接停止DNS解析,應用這一選項可以清除MySQL停止DNS解析的時光。但須要留意,假如開啟該選項,則一切長途主機銜接受權都要應用IP地址方法,不然MySQL將沒法正常處置銜接要求!
back_log = 384指定MySQL能夠的銜接數目。當MySQL主線程在很短的時光內吸收到異常多的銜接要求,該參數失效,主線程消費很短的時光檢討銜接而且啟動一個新線程。
back_log參數的值指出在MySQL臨時停滯呼應新要求之前的短時光內若干個要求可以被存在客棧中。 假如體系在一個短時光內有許多銜接,則須要增年夜該參數的值,該參數值指定到來的TCP/IP銜接的偵聽隊列的年夜小。分歧的操作體系在這個隊列年夜小上有它本身的限制。 試圖設定back_log高於你的操作體系的限制將是有效的。默許值為50。關於Linux體系推舉設置為小於512的整數。
key_buffer_size = 256M
# key_buffer_size指定用於索引的緩沖區年夜小,增長它可獲得更好的索引處置機能。關於內存在4GB閣下的辦事器該參數可設置為256M或384M。留意:該參數值設置的過年夜反而會是辦事器全體效力下降!
max_allowed_packet = 4M
thread_stack = 256K
table_cache = 128K
sort_buffer_size = 6M查詢排序時所能應用的緩沖區年夜小。留意:該參數對應的分派內存是每銜接獨有!假如有100個銜接,那末現實分派的總共排序緩沖區年夜小為100 × 6 = 600MB。所以,關於內存在4GB閣下的辦事器推舉設置為6-8M。
read_buffer_size = 4M讀查詢操作所能應用的緩沖區年夜小。和sort_buffer_size一樣,該參數對應的分派內存也是每銜接獨享!
join_buffer_size = 8M結合查詢操作所能應用的緩沖區年夜小,和sort_buffer_size一樣,該參數對應的分派內存也是每銜接獨享!
myisam_sort_buffer_size = 64M
table_cache = 512
thread_cache_size = 64
query_cache_size = 64M指定MySQL查詢緩沖區的年夜小。可以經由過程在MySQL掌握台履行以下敕令不雅察:
# > SHOW VARIABLES LIKE ‘%query_cache%';
# > SHOW STATUS LIKE ‘Qcache%';
# 假如Qcache_lowmem_prunes的值異常年夜,則注解常常湧現緩沖不敷的情形;假如Qcache_hits的值異常年夜,則注解查詢緩沖應用異常頻仍,假如該值較小反而會影響效力,那末可以斟酌不消查詢緩沖;Qcache_free_blocks,假如該值異常年夜,則注解緩沖區中碎片許多。
tmp_table_size = 256M
max_connections = 768指定MySQL許可的最年夜銜接過程數。假如在拜訪服裝論壇t.vhao.net時常常湧現Too Many Connections的毛病提 示,則須要增年夜該參數值。
max_connect_errors = 10000000
wait_timeout = 10指定一個要求的最年夜銜接時光,關於4GB閣下內存的辦事器可以設置為5-10。
thread_concurrency = 8該參數取值為辦事器邏輯CPU數目×2,在本例中,辦事器有2顆物理CPU,而每顆物理CPU又支撐H.T超線程,所以現實取值為4 × 2 = 8
skip-networking開啟該選項可以完全封閉MySQL的TCP/IP銜接方法,假如WEB辦事器是以長途銜接的方法拜訪MySQL數據庫辦事器則不要開啟該選項!不然將沒法正常銜接!
————————————————————————————————–
my.ini設置裝備擺設建議:
table_cache=1024
物理內存越年夜,設置就越年夜.默許為2402,調到512-1024最好
innodb_additional_mem_pool_size=4M
默許為2M
innodb_flush_log_at_trx_commit=1
(設置為0就是比及innodb_log_buffer_size排隊滿後再同一貯存,默許為1)
innodb_log_buffer_size=2M
默許為1M
innodb_thread_concurrency=8
你的辦事器CPU有幾個就設置為幾,建議用默許普通為8
key_buffer_size=256M
默許為218 調到128最好
tmp_table_size=64M
默許為16M 調到64-256最掛
read_buffer_size=4M
默許為64K
read_rnd_buffer_size=16M
默許為256K
sort_buffer_size=32M
默許為256K
max_connections=1024
默許為1210
thread_cache_size=120
默許為60
query_cache_size=32M
————————————————————————————————–
以下是另外一個的my.ini設置裝備擺設建議:
port=3306
default-character-set=latin1
default-storage-engine=INNODB
sql-mode=”STRICT_TRANS_TABLES,NO_AUTO_Create_USER,NO_ENGINE_SUBSTITUTION”
max_connections=120
query_cache_size=32M
#緩存數據表數目,設置這個參數可以拜見體系狀況中的 open_tables(表現以後翻開的數據表總數) 和 opened_tables(表現一切翻開的數據表總數)
table_cache=256
#暫時表的年夜小
tmp_table_size=12M
#緩存可重用的線程數
thread_cache_size = 64
myisam_max_sort_file_size=100G
myisam_max_extra_sort_file_size=100G
myisam_sort_buffer_size=64M
#這對MyISAM表來講異常主要。假如只是應用MyISAM表,可以把它設置為可用內存的 30-40%。公道的值取決於索引年夜小、數據量和負載 — #記住,MyISAM表會應用操作體系的緩存來緩存數據,是以須要留出部門內存給它們,許多情形下數據比索引年夜多了。
key_buffer_size=128M
read_buffer_size=1M
read_rnd_buffer_size=512K
sort_buffer_size=1M
#這對innodb表來講異常主要
innodb_buffer_pool_size = 256M
#這取決於你須要的答復速度.128M這個數值是恰當的恢復時光和優越機能之間的一個好的均衡.
innodb_log_file_size = 128M
#年夜多半情形4M足夠,除非正將很年夜的blob數據導入到Innodb中可以增長一點.
innodb_log_buffer_size=4M
#這個值取決於你的法式,能夠高或許低.8是代表肇端值.
innodb_thread_concurrency=8
innodb_additional_mem_pool_size=100M
#假如你不是很關懷ACID,可以允許在體系完整crash的情形下喪失最初一兩秒的事務,那末可以設置這個值.它可以極年夜的進步”短”的寫事務的效力.
innodb_flush_log_at_trx_commit=2
留意:
許多情形須要詳細情形詳細剖析
1>假如Key_reads太年夜,則應當把my.cnf中Key_buffer_size變年夜,堅持Key_reads/Key_read_requests至多1/100以上,越小越好。
2>假如Qcache_lowmem_prunes很年夜,就要增長Query_cache_size的值。