MySQL my.cnf Parameter Description

Source: Internet
Author: User
Tags one table

MySQL 5.5.13

Parameter description:

[Client]

Character-set-server = UTF8

Port = 3306

Socket =/data/mysql/3306/mysql.sock

[Mysqld]

Character-set-server = UTF8

user = MySQL

Port = 3306

Socket =/data/mysql/3306/mysql.sock

Basedir =/usr/local/webserver/mysql

DataDir =/data/mysql/3306/data

Log-error =/data/mysql/3306/mysql_error.log

Pid-file =/data/mysql/3306/mysql.pid

# Table_cache parameter sets the number of table caches. Each connection comes in with at least one table cache open. #因此, the size of the Table_cache should be related to the Max_connections setting. For example, for a 200 # parallel run connection, the table should have a cache of at least 200xN, where N is the maximum number of tables in a join of the query # that the application can execute. In addition, some additional file descriptors need to be reserved for temporary tables and files.

#当 MySQL accesses a table, the cache can be accessed directly if the table is already open in the cache, and if # has not been cached, but there is room in the MySQL table buffer, then the table is opened and placed in the table slow # flush; If the table cache is full, the currently unused table will be released in accordance with certain rules , or temporarily expand the table cache to hold, the advantage of using table caching is that you can access the contents of the table more quickly. Execute flush tables # to empty the cached content. In general, you can determine if you need to increase the value of Table_cache (where Open_tables is the number of tables opened before #, by looking at the status value of the database running peak time open_tables #和 Opened_tables, Opened_ Tables is the number of tables that are already open). That is, if open_tables approach Table_cache, and opened_tables this value is gradually increasing, then consider increasing the size of this # value. There is table_locks_waited higher than the time, also need to increase the table_cache.

Open_files_limit = 10240

Table_cache = 512

#非动态变量, restart service required

#指定MySQL可能的连接数量. When the MySQL main thread receives very many connection requests in a very short time, this parameter takes effect and the main thread takes a short time to check the connection and start a new thread. The value of the Back_log parameter indicates how many requests can be present in the stack for a short period of time before MySQL temporarily stops responding to a new request. If the system has many connections in a short period of time, you need to increase the value of this parameter, which specifies the size of the listening queue for incoming TCP/IP connections. Different operating systems have its own limitations on this queue size. Attempting to set a limit of back_log above your operating system will be invalid. The default value is 50. For Linux systems, the recommended setting is an integer less than 512.

Back_log = 600

#MySQL允许最大连接数

Max_connections = 5000

#可以允许多少个错误连接

Max_connect_errors = 6000

#使用 –skip-external-locking mysql option to avoid external locking. This option is turned on by default

external-locking = FALSE

#设置最大包, limit the size of packets accepted by the server, avoid a problem with long SQL execution The default value is 16M, and when a MySQL client or mysqld server receives packets larger than Max_allowed_packet bytes, it will issue a "packet too large" error. and close the connection. For some clients, if the communication packet is too large, you may encounter a "missing connection to the MySQL server" error during query execution. The default value is 16M.

#dev-doc:http://dev.mysql.com/doc/refman/5.5/en/packet-too-large.html

Max_allowed_packet = 32M

# sort_buffer_size is a connection-level parameter that allocates the set of memory once for the first time each connection (session) needs to use this Buffer.

#Sort_Buffer_Size is not as large as possible, because it is a connection-level parameter, too large a setting + high concurrency may deplete system memory resources. For example: 500 connections will consume 500*sort_buffer_size (8M) =4g memory

When the #Sort_Buffer_Size exceeds 2KB, memory allocations are made using mmap () rather than malloc (), resulting in reduced efficiency.

#技术导读http://blog.webshuo.com/2011/02/16/mysql-sort_buffer_size/

#dev-doc: http://dev.mysql.com/doc/refman/5.5/en/server-parameters.html

#explain select*from table where order limit; appears Filesort

#属重点优化参数

Sort_buffer_size = 8M

#用于表间关联缓存的大小

Join_buffer_size = 1M

#服务器线程缓存这个值表示可以重新利用保存在缓存中线程的数量, if there is room in the cache when the connection is disconnected, the client's thread will be placed in the cache, and if the thread is requested again, the request will be read from the cache if it is empty or a new request in the cache. Then this thread will be recreated, and if there are many new threads, adding this value can improve system performance. By comparing the variables of the Connections and threads_created states, you can see the effect of this variable

Thread_cache_size = 300

#设置thread_concurrency的值的正确与否, the performance of MySQL is very significant, in the case of multiple CPUs (or multicore), the error setting the value of Thread_concurrency, will lead to MySQL can not take full advantage of multi-CPU (or multicore), Occurs at the same moment only one CPU (or core) is in the working condition. The thread_concurrency should be set to twice times the number of CPU cores. For example, there is a dual-core CPU, then the thread_concurrency should be 4; 2 Dual-core CPUs, the value of thread_concurrency should be 8

#属重点优化参数

Thread_concurrency = 8

#对于使用MySQL的用户, we must not be unfamiliar with this variable. In previous years of MyISAM engine optimization, this parameter was also an important optimization parameter. But with the development, this parameter also reveals some problems. The memory of the machine is getting bigger and larger, and people are accustomed to allocating the previously useful parameters more and more. This increase in parameters also raises a number of questions. Let's start by analyzing how Query_cache_size works: When a select query works in DB, the DB caches the statement, and when the same SQL comes back to the DB, the DB returns the result from the cache to the client if the table does not change. There is a shut-down point, that is, when DB is working with Query_cache, it requires that the table involved in the statement not be changed during this time period. So what happens to the data in Query_cache if the table is changed? The first thing to do is to invalidate the Query_cache and the table-related statements, and then write the update. So if the query_cache is very large, the query structure of the table is more, the query statement invalidation is slow, an update or insert will be very slow, so see is update or insert how slow. Therefore, in the database write volume or update volume is also relatively large system, this parameter is not suitable for allocation too large. And in the high concurrency, write a large-scale system, built to disable the function.

#重点优化参数 (Main library additions and deletions changed-myisam)

Query_cache_size = 512M

#指定单个查询能够使用的缓冲区大小, default is 1M

Query_cache_limit = 2M

#默认是4KB, setting a big value is good for big data queries, but if your queries are small data queries, it's easy to create memory fragmentation and waste.

# Query Cache Fragmentation Rate = Qcache_free_blocks/qcache_total_blocks * 100%

#如果查询缓存碎片率超过20%, you can use flush query cache to defragment the cache, or try to reduce query_cache_min_res_unit if your queries are small data volumes.

# Query Cache utilization = (query_cache_size–qcache_free_memory)/ query_cache_size * 100%

#查询缓存利用率在25% below indicates that the Query_cache_size setting is too large, can be appropriately reduced; query cache utilization is above 80% and Qcache_lowmem_prunes > 50 description query_cache_ Size may be a little bit small, or too much fragmentation.

# Query Cache Hit Ratio = (qcache_hits–qcache_inserts)/qcache_hits * 100%

Query_cache_min_res_unit = 2k

Default-storage-engine = MyISAM

#限定用于每个数据库线程的栈大小. The default setting is sufficient to meet most applications

Thread_stack = 192K

# Set the default transaction isolation level. The available levels are as follows:

# read-uncommitted, read-committed, Repeatable-read, SERIALIZABLE

# 1.READ uncommitted-READ UNCOMMITTED 2.READ committe-Read Committed 3.REPEATABLE read-repeatable read 4. SERIALIZABLE-Serial

Transaction_isolation = read-committed

# The default size of Tmp_table_size is 32M. If a temporary table exceeds that size, MySQL produces an error in the form of the table tbl_name is, and if you do many advanced GROUP by queries, increase the tmp_table_size value.

Tmp_table_size = 246M

Max_heap_table_size = 246M

#索引缓存大小: It determines the speed of database index processing, especially the speed of index reads

Key_buffer_size = 512M

# MySQL read into buffer size. A request to sequentially scan a table allocates a read-in buffer, and MySQL allocates a memory buffer for it. The read_buffer_size variable controls the size of this buffer. If the sequential scan requests for a table are frequent, and you think that frequent scans are going too slowly, you can improve their performance by increasing the value of the variable and the size of the memory buffer.

Read_buffer_size = 4M

# mysql Random read (query operation) buffer size. When rows are read in any order (for example, in sort order), a random read buffer is allocated. When you sort a query, MySQL scans the buffer first to avoid disk searches, improve query speed, and, if you need to sort large amounts of data, raise the value appropriately. However, MySQL will issue this buffer space for each client connection, so you should set this value as appropriately as possible to avoid excessive memory overhead.

Read_rnd_buffer_size = 16M

#批量插入数据缓存大小, can effectively improve the efficiency of insertion, the default is 8M

Bulk_insert_buffer_size = 64M

# MyISAM the buffer required to reorder when the table is changed

Myisam_sort_buffer_size = 128M

# The size of the maximum temporary file allowed when MySQL rebuilds the index (when REPAIR, ALTER TABLE or LOAD DATA INFILE).

# If the file size is larger than this value, the index will be created by the key buffer (slower)

Myisam_max_sort_file_size = 10G

# If a table has more than one index, MyISAM can use more than one thread to fix them by using parallel sorting.

# This is a good choice for users with multiple CPUs and a lot of memory.

Myisam_repair_threads = 1

#自动检查和修复没有适当关闭的 MyISAM Table

Myisam_recover

Interactive_timeout = 120

Wait_timeout = 120

Innodb_data_home_dir =/data/mysql/3306/data

#表空间文件 Important data

Innodb_data_file_path = Ibdata1:2000m;ibdata2:10m:autoextend

#这个参数用来设置 the memory pool size of the data directory information and other internal data structures stored by the InnoDB, similar to Oracle's library cache. This is not a mandatory parameter and can be breached.

Innodb_additional_mem_pool_size = 16M

#这对Innodb表来说非常重要. InnoDB is more sensitive to buffering than the MyISAM table. MyISAM can be run under the default Key_buffer_size settings, but InnoDB is snail-like under the default Innodb_buffer_pool_size settings. Since InnoDB caches both data and indexes, there is no need to leave too much memory on the operating system, so if you only need to use InnoDB, you can set it up to 70-80% of usable memory. Some rules apply to Key_buffer-if your data volume is small and does not increase, then you do not need to set the innodb_buffer_pool_size too large

Innodb_buffer_pool_size = 512M

#文件IO的线程数, typically 4, but under Windows, you can set it larger.

Innodb_file_io_threads = 4

# The number of allowed threads within the InnoDB core.

# The optimal value depends on how the application, hardware, and operating system are scheduled.

# High values can cause mutually exclusive bumps on the thread.

Innodb_thread_concurrency = 8

#如果将此参数设置为1, the log is written to disk after each commit transaction. To provide performance, you can set to 0 or 2, but assume the risk of losing data in the event of a failure. A setting of 0 indicates that the transaction log is written to the log file, and the log file is flushed to disk once per second. A setting of 2 indicates that the transaction log will be written to the log at commit time, but the log file is flushed to disk one at a time.

Innodb_flush_log_at_trx_commit = 2

#此参数确定些日志文件所用的内存大小, in M. Larger buffers can improve performance, but unexpected failures will cause data loss. MySQL developer recommends setting the 1-8m between

Innodb_log_buffer_size = 16M

#此参数确定数据日志文件的大小, in M, larger settings can improve performance, but also increase the time it takes to recover a failed database

Innodb_log_file_size = 128M

#为提高性能, MySQL can write log files to multiple files in a circular fashion. Recommended set to 3M

Innodb_log_files_in_group = 3

#推荐阅读http://www.taobaodba.com/html/221_innodb_max_dirty_pages_pct_checkpoint.html

# The amount of dirty_page in Buffer_pool directly affects the closing time of the InnoDB. The parameter innodb_max_dirty_pages_pct can directly control the ratio of dirty_page in Buffer_pool, and fortunately innodb_max_dirty_pages_pct can be changed dynamically. Therefore, the innodb_max_dirty_pages_pct is reduced before closing the InnoDB, forcing the data block to flush for a period of time, which can greatly shorten the time of MySQL shutdown.

innodb_max_dirty_pages_pct = 90

# InnoDB has its built-in deadlock detection mechanism that can cause incomplete transactions to be rolled back. However, if you combine InnoDB with a MYISAM lock tables statement or a third-party transaction engine, the INNODB does not recognize the deadlock. To eliminate this possibility, you can set Innodb_lock_wait_timeout to an integer value that indicates how long (in seconds) the MySQL waits before allowing other transactions to modify data that is eventually rolled back by the transaction.

Innodb_lock_wait_timeout = 120

#独享表空间 (OFF)

innodb_file_per_table = 0

#start mysqld With–slow-query-log-file=/data/mysql/3306/slow.log

Slow_query_log

Long_query_time = 1

replicate-ignore-db = MySQL

REPLICATE-IGNORE-DB = Test

Replicate-ignore-db = Information_schema

#配置从库上的更新操作是否写二进制文件, if this from the library, but also to do other from the library's main library, then you need to hit this parameter, so that the library from the library to be able to log synchronization this parameter to be used with-logs-bin

Log-slave-updates

Log-bin =/data/mysql/3306/binlog/binlog

Binlog_cache_size = 4M

#STATEMENT, row,mixed

#基于SQL语句的复制 (statement-based replication, SBR), row-based replication (row-based replication, RBR), Mixed mode replication (mixed-based replication, MBR )。 Accordingly, there are three types of Binlog: statement,row,mixed.

Binlog_format = MIXED

Max_binlog_cache_size = 64M

Max_binlog_size = 1G

Relay-log-index =/data/mysql/3306/relaylog/relaylog

Relay-log-info-file =/data/mysql/3306/relaylog/relaylog

Relay-log =/data/mysql/3306/relaylog/relaylog

Expire_logs_days = 30

Skip-name-resolve

#master-connect-retry = 10

Slave-skip-errors = 1032,1062,126,1114,1146,1048,1396

Server-id = 1

[Mysqldump]

Quick

Max_allowed_packet = 32M

[Myisamchk]

Key_buffer_size = 256M

Sort_buffer_size = 256M

Read_buffer = 2M

Write_buffer = 2M

[Mysqlhotcopy]

Interactive-timeout

Transferred from: http://blog.sina.com.cn/s/blog_593bf1da0100xznj.html

MySQL my.cnf Parameter Description

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.