mysql参数及解释

时间:2023-03-29 11:17:50

key_buffer_size:globalDynamic#*** MyISAM 特有的选项。即使你不使用 MyISAM 表,你仍应该将它设置为 8-64M,因为它也被用于内部的临时磁盘表。这个参数是用来设置索引块(index blocks)缓存的大小,它被所有线程共享,严格说是它决定了数据库索引处理的速度,尤其是索引读的速度。若果应用系统的表基本上都是myisam表,可以将这个值设为机器内存的25%。

 

max_allowed_packet:globalDynamic #**通用配置选项,能够处理的最大通信信息包大小,在客户端或者服务器端都可以设置,默认为16M。

 

table_open_cacheglobalDynamic#**通用配置选项,参数设置表高速缓存的数目。每个连接进来,都会至少打开一个表缓存。因此, table_cache 的大小应与 max_connections 的设置有关。例如,对于 200 个并行运行的连接,应该让表的缓存至少有 200 × N ,这里 N 是应用可以执行的查询的一个联接中表的最大数量。此外,还需要为临时表和文件保留一些额外的文件描述符。MySQL Open_tables表示打开表的数量,如果MySQL Opened_tables数量过大,说明配置中table_cache(5.1.3之后这个值叫做table_open_cache)值可能太小

 

Sort_Buffer_Size(BothDynamic)#**通用配置,是一个connection级参数,在每个connection第一次需要使用这个buffer的时候,一次性分配设置的内存

 

net_buffer_length(BothDynamic),用于建立连接时的连接缓冲和结果缓冲。最小值是1K,最大值是1M(可以加快mysqldump的导入导出速度)

 

read_buffer_size(BothDynamic) #*** MyISAM 特有的选项,用于进行 MyISAM 表全表扫描的缓冲区大小。,如果全表扫描是需要的,将分配给每个线程。

 

read_rnd_buffer_size(BothDynamic)#*** MyISAM 特有的选项, 当在一个有序的排序中读取行时,可以通过该缓冲区来读取行,以避免对磁盘的查找。如果将该值设置为一个很高的值,你可以大幅度提高 ORDER BY 的性能。当需要时,分配给每个线程。

 

myisam_sort_buffer_size(BothDynamic)#*** MyISAM 特有的选项, MySQL 需要通过 REPAIROPTIMIZEALTER 表语句重建索引,以及 LOAD DATA INFILE 到一个空表时,该缓冲区被分配。它是给每个线程分配的,因此小心比较大的设置。

 

log-bin#**通用配置选项启用二进制日志。这在一个复制配置中,对于充当 MASTER 的是必要的。如果你需要有能力及时从你最后的备份点中进行恢复,你也需要二进制日志。

 

binlog_format#**通用配置选项,推荐的二进制日志格式

 

binlog_cache_size#**通用配置选项,在一个事务中能够为二进制日志 SQL 语句保持的缓存大小。如果你经常使用大的、多语句的事务,你可以提高该值以获得更好的性能。来自事务的所有语句被缓冲到二进制日志缓存,并在 COMMIT 之后立即被写入到二进制日志中。如果事务大于该值,磁盘上的临时文件将被替代使用。该缓冲在事务中第一个更新语句时分配给每个连接

 

max_connections #**通用配置选项, MySQL 允许的并发会话的最大数量。其中的一个连接将被保留给拥有 SUPER 特权的用户,即使已经到达了连接限制,仍可以允许管理者登录。

 

max_connect_errors#**通用配置选项, 每个主机允许的最大错误数量。如果已到达该限制,主机将阻止对 MySQL 服务器的连接,直到运行“FLUSH HOSTS”或者服务器被重启。在连接阶段的无效密码和其它错误将导致该值被提高。请看全局计数器的“Aborted_connects”状态变量。

 

log-bin-trust-function-creators#**通用配置选项,二进制日志打开时有效,该参数决定存储函数创建者是否可以创建会导致不安全的时间记录到二进制日志的存储函数。当为0,此时这也是默认值,除了拥有super权限除了create routinealter routine权限.同时也会强制函数必须和deterministicreads sql data又或者no sql的字符集一致.当设为1MySQL不会去限制这些,这个变量同样作用于触发器

 

slow_query_log #**通用配置选项,记录慢查询。慢查询是指消耗时间超过“long_query_time”中定义的总时间的查询,或者如果 log_short_format 没有启用,不使用索引的查询。如果你频繁地添加新查询到系统中,打开这个是一个比较好的注意。

 

slow_query_log_file #**通用配置选项,用于指定慢查询日志的文件路径和文件名

 

long_query_time #**通用配置选项,所有消耗时间超过该总时间的查询都将被视为是缓慢的。不要在这里使用“1”值,因为这会导致甚至非常快的查询都会被不时地被记录(MySQL 当前的度量时间只精确到秒)。

 

log-queries-not-using-indexes#**通用配置选项,用于把所有没有使用索引的查询也记录到慢查询日志中

 

transaction_isolation#**通用配置选项, 设置默认的事务隔离等级。可用的级别有:READ-UNCOMMITTEDREAD-COMMITTEDREPEATABLE-READSERIALIZABLE

 

query_cache_size #**通用配置选项,指定MySQL查询缓冲区的大小。可以通过在MySQL控制台执行以下命令观察: # > SHOW VARIABLES LIKE '%query_cache%';
         # > SHOW STATUS LIKE 'cache%';

如果cache_lowmem_prunes的值非常大,则表明经常出现缓冲不够的情况;
如果cache_hits的值非常大,则表明查询缓冲使用非常频繁,如果该值较小反而会影响效率,那么可以考虑不用查询缓冲;cache_free_blocks,如果该值非常大,则表明缓冲区中碎片很多。

 

query_cache_limit#**通用配置选项,只缓存结果集是小于该限制的。这可以保护一个非常大结果集的查询缓存覆盖所有其它查询结果。

 

query_cache_type#**通用配置选项, 指定是否使用查询缓冲1使用,0不使用

 

init_connect#**通用配置选项,服务器为每个连接的客户端执行的字符串。字符串由一个或多个SQL语句组成。要想指定多个语句,用分号间隔开。

 

bind-address #**通用配置选项, 绑定MySQL服务器的IP地址。如果MySQL服务器所在的计算机有多个IP地址,这个选项将非常重要。

 

ft_min_word_len#**通用配置选项,全文索引的最小单词长度工。这个选项的默认设置是4,意思是在创建全文索引时不考虑那些由3个或更少的字符构建单词。

 

thread_concurrency #**通用配置选项, 这个函数使应用程序给同一时间运行的线程系统提供期望的线程数目。该值只在支持 thread_concurrency() 函数调用的系统上有意义(例如 Sun Solaris)。你应该对 thread_concurrency 尝试 CPU 数量的 2/4/6/... 倍。

 

join_buffer_size #**通用配置选项, 该缓冲被用来优化 FULL JOIN(没有索引的 JOIN)。无论如何,该 JOIN 在大多数情况下对性能是非常坏的,但是设置该变量为一个大值将减少对性能的影响。请看针对一定数量的 FULL JOIN 的“Select_full_join”状态变量。如果 FULL JOIN 被发现,将分配给每个线程

 

thread_cache_size#**通用配置选项,我们保持在一个缓存中的可重用的线程数。当一个客户端断开连接时,如果在这之前的线程没有超过 thread_cache_size,客户端的线程将放在缓存中。根据物理内存设置规则如下:1G  ---> 8  2G  ---> 16  3G  ---> 32  >3G  ---> 64

 

thread_stack #**通用配置选项,使用的线程堆栈大小。该内存量总是在连接时间被保留的。MySQL 自己通常需要不超过 64K 的内存,然而如果你使用的是你自己的堆栈 UDF 函数或者你的系统针对某些操作需要更多堆栈,你可能需要设置该值为一个更高的值。

 

tmp_table_size#**通用配置选项,tmp_table_size内部(内存中的)临时表的最大容量。如果一个表的增长超过该值,它将自动地转换到基于磁盘的表。该限制是针对一个单一的表,但可以有很多这样的表。

 

basedir #**通用配置选项,该参数指定了安装 MySQL 的安装路径,填写全路径可以解决相对路径所造成的问题。

 

datadir#**通用配置选项, 该参数指定了 MySQL 的数据库文件放在什么路径下。数据库文件即我们常说的 MySQL data 文件。

 

wait_timeout#**通用配置选项, 服务器关闭非交互连接之前等待活动的秒数。

 

skip-name-resolve #**通用配置选项,mysql接收到连接请求后,获得的是客户端的ip,为了更好的匹配mysql.user里的权限记录(某些是用hostname定义的)。如果mysql服务器设置了dns服务器,并且客户端ipdns上并没有相应的hostname,那么这个过程很慢,导致连接等待。添加skip-name-resolve以后就跳过着一个过程了。

 

log_long_format#**通用配置选项,打开此项会记录使得那些没有使用索引的查询也被作为到慢速查询附加到慢速日志里

 

relay-log#**通用配置选项,从服务器I/O线程将主服务器的二进制日志读取过来记录到从服务器本地文件,然后SQL线程会读取relay-log日志的内容并应用到从服务器

 

relay-log-index#**通用配置选项,作为slave的时候存放binlog的索引文件

 

skip-slave-start#**通用配置选项,告诉从服务器当服务器启动时不启动从服务器线程。使用START SLAVE语句在以后启动线程。

 

innodb_data_home_dir #**innodb配置选项,如果你希望 InnoDB 表空间文件存储到其它的地方,设置该选项。默认的是 MySQL 数据目录。

 

innodb_data_file_path #**innodb配置选项,InnoDB 存储数据到一个或多个数据文件,形成表空间。如果对于你对你的数据有一个单一的物理设备,那么一个单一的自动扩展文件就已经足够了。在其它情况下,每设备一个单一文件是一个非常好的选择。你也可以配置 InnoDB 来使用原始的磁盘分区 - 请参考手册以获取更多有关这个的信息

 

innodb_log_group_home_dir#**innodb配置选项, InnoDB 日志文件的位置。默认为 MySQL 的数据目录。你可能希望指定它到一个专用的硬盘或一个 RAID1 卷标来改善性能。

 

innodb_additional_mem_pool_size#**innodb配置选项,该参数指定InnoDB用来存储数据字典和其他内部数据结构的内存池大小。缺省值是1M。通常不用太大,只要够用就行,应该与表结构的复杂度有关系。如果不够用,MySQL会在错误日志中写入一条警告信息。根据MySQL手册,对于2G内存的机器,推荐值是20M

 

innodb_buffer_pool_size(GLOBAL、STATIC) #**innodb配置选项,InnoDB,不像 MyISAM,使用一个缓冲池来缓存索引和行数据。你将该值设得越大,在表中访问需要的数据时,磁盘 I/O 就越少。在一个专用的数据库服务器上,你可以设置该参数到机器物理内存大小的 80%。不要把它设置得太大,因为物理内存的竞争可能导致操作系统中的分页。注意,在 32 位的系统上,你可能在每个处理器的用户级内存上被限制在 2-3.5G,因此不要把它设置得太高。

 

innodb_file_io_threads #**innodb配置选项,InnoDB,异步 IO 操作所使用的 IO 线程数。该值在 Unix 系统上被硬编码为 4,但在 Windows 上,磁盘 I/O 可能受益于一个更大的数字。

 

innodb_thread_concurrency(GLOBALDynamic) #**innodb配置选项,InnoDB 内核里面允许的线程数量。最佳的值高度取决于应用程序、硬件以及操作系统的调度属性。一个太高的值可能导致线程颠簸。

 

innodb_flush_log_at_trx_commit(GLOBALDynamic) #**innodb配置选项,如果设置为 1InnoDB 在每次提交(提供完整的 ACID 行为)时刷新事务日志到磁盘。如果你想安全地进行折中,并且你正在运行小事务,你可以为 0 2 来减少日志的磁盘 I/O。值 0 表示日志只被写入到日志文件,并且日志文件大约每秒一次刷新到磁盘。值 2 表示日志在每次提交时被写入到日志文件,但是日志文件只是大约每秒一次被刷新到磁盘。

 

innodb_log_buffer_size(GLOBALDynamic) #**innodb配置选项,InnoDB 缓冲日志数据所使用的缓冲区大小。一旦它满了,InnoDB 将刷新它到磁盘。因为不管怎么它都是每秒刷新一次,所以没有必要让它变得很大(甚至是很长的事务)。

 

innodb_log_file_size(GLOBALDynamic)#**innodb配置选项,一个日志组中每个日志文件的大小。你可以设置日志文件的联合大小为你的缓冲池大小的 25%-100%,以避免对日志文件不必要的缓冲池动态刷新重写。然而,注意,一个更大的日志文件大小将增加恢复处理所需的时间。

 

innodb_log_files_in_group(GLOBALDynamic)#**innodb配置选项,日志组中文件的总数。通常值为 2-3 就已足够了。

 

innodb_max_dirty_pages_pct(GLOBALDynamic)#**innodb配置选项,InnoDB 缓冲池中允许的脏页面的最大百分比。如果它到达了,InnoDB 将开始积极地清理它们,以避免消耗完所有的干净页面。这是一个软限制,不保证能够一直保持。

 

innodb_lock_wait_timeout(BothDynamic)  #**innodb配置选项, 一个 InnoDB 事务应等待的在回滚之前被授权锁定的时长。InnoDB 在它自己的锁定表中自动地检测事务死锁,并回滚事务。如果你在相同的事务中使用 LOCK TABLES 命令,或者其它比 InnoDB 更加事务安全的存储引擎,那么稍后会出现 InnoDB 不能提示的死锁。如果像这样,超时对于解决问题是很有用的。

log-slave-updates(配置文件使用) #**通用配置选项,配置从库上的更新操作是否写二进制文件,如果这台从库,还要做其他从库的主库,那么就需要打这个参数,以便从库的从库能够进行日志同步这个参数要和—logs-bin一起使用。

 

slave-skip-errors(配置文件使用)#**通用配置选项, 在复制过程,由于各种原因导致binlog中的sql出错,默认情况下,从库会停止复制,要用户介入。可以设置Slave-skip-errors来定义错误号,如果复制过程中遇到的错误号是定义的错误号,便可以跳过。如果从库是用来做备份,设置这个参数会存在数据不一致,不要使用。如果是分担主库的查询压力,可以考虑。

 

sync_binlog(GLOBALDynamic)  #**通用配置选项,这个参数对于mysql系统来说是至关重要的,它不仅影响binlogmysql所带来的性能损耗,而且还影响Mysql中数据的完整性。对于”sync_binlog“参数说明”sync_binlog=0 当事物提交之后,mysql 仅仅是将binlog_cache 中的数据写入binlog文件。但不执行fsync 之类的磁盘同步指令通知文件系统将缓存刷新到磁盘而让Filesystem 自行决定什么时候做同步sync_binlog=n在进行n次事物提交之后,mysql 将执行一次fsync 之类的磁盘同步指令,通知文件系统将binlog文件的缓存刷新到磁盘。

 

auto_increment_increment=2 (BothDynamic)#**通用配置选项,自增长ID,必须相同,两台就为2,三台就为3,如果就主从就可以不设置

 

auto_increment_offset=1(BothDynamic)
#**通用配置选项,自增长的起始位置这里为1,第二台就必须为2