MySQL系统参数

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
日志服务 SLS,月写入数据量 50GB 1个月
简介: 1. auto_increment_increment  和  auto_increment_offset  (重)     这两个参数用于高可用中M-M复制。auto_increment_increment控制AUTO_INCREMENT列的增量,auto_increment_offset确定AUTO_INCREMENT列值的起点。

1. auto_increment_increment  和  auto_increment_offset  (重)

    这两个参数用于高可用中M-M复制。auto_increment_increment控制AUTO_INCREMENT列的增量,auto_increment_offset确定AUTO_INCREMENT列值的起点。例:

    设置auto_increment_increment=10,auto_increment_offset=1,对自增列insert后的结果就是1,11,21,31...

2.back_log(重)

   当主MySQL线程在短时间内有许多连接请求时发挥作用。说明MySQL临时停止响应新请求前在短时间内可以堆起多少请求。如果你需要在短时间内允许大量连接,可以增加该数值。

   此处设置不足会出现“connection refused” 报错。

3.basedir (重)

   MySQL安装基准目录。

4.binlog_cache_size (重)

  二进制日志的缓存大小。如果经常使用比较大的,或多语句的事务,可以增加这个值。

5.bulk_insert_buffer_size

  这个参数主要用来改善INSERT ... SELECT、INSERT ... VALUES (...)、(...)、 ...和LOAD DATA INFILE的性能,设置为0时禁用优化。

  释:只有向非空表添加数据时才使用该缓存。

6.character_set_client(重)

   来自客户端的语句的字符集。

7.character_set_connection

   用于没有字符集导入符的文字和数字-字符串转换。

8.character_set_database(重)

   默认数据库使用的字符集。

9.character_set_results

   用于向客户端返回查询结果的字符集。

10.character_set_ server

     服务器的默认字符集。该值一定是utf8。

11.character_sets_dir

     字符集安装目录。默认即可

12.collation_connection

     连接字符集的校对规则。

13.collation_database

默认数据库使用的校对规则。当默认数据库改变时服务器则设置该变量。如果没有默认数据库,变量的值同collation_server。

14.collation_server

服务器的默认校对规则。

15.completion_type

    事务结束类型:

    o     COMMIT和ROLLBACK不受影响。

    1     COMMIT和ROLLBACK分别等同于COMMIT AND CHAIN和ROLLBACK AND CHAIN。(新事务用刚刚结束的事务相同的间隔等级立即启动)。

    2     COMMIT和ROLLBACK分别等同于COMM它RELEASE和ROLLBACK RELEASE。(事务终止后,服务器断开)。 

16.concurrent_insert

     如果为ON(默认值),MySQL允许INSERT和SELECT语句在中间没有空数据块的MyISAM表中并行运行。可以用--safe或--skip-new关闭该选项。

描述

0

1

(默认)在没有空数据块的MyISAM表中启用并行插入

2

为所有MyISAM表启用并行插入。如果表有空记录或正被另一线程使用,新行将插入到表的最后。如果表未使用,MySQL将进行普通读锁定并将新行插入空记录

17.connect_timeout

     mysql服务器用Bad handshake响应前等待连接包的秒数。

18.datadir(重)

     MySQL数据目录。

19.date_format

     该变量未使用。

20.datetime_format

     该变量未使用。

21.default_week_format

     WEEK() 函数使用的默认模式。

22.delay_key_write

     该选项只适用MyISAM表,如果启用了DELAY_KEY_WRITE,说明使用该项的表的键缓冲区在每次更新索引时不被清空,只有关闭表时才清空。这样可以大大加快键的写操作,但如果使用该特性,应用--myisam-recover选项启动服务器,为所有MyISAM表添加自动检查

选项

描述

OFF

DELAY_KEY_WRITE被忽略。

ON

MySQL在CREATE TABLE中用DELAY_KEY_WRITE选项。这是 默认值。

ALL

用启用DELAY_KEY_WRITE选项创建表的相同方法对所有新打开表的进行处理。

23.delayed_insert_limit

     插入delayed_insert_limit 延迟行后,INSERT DELAYED 处理器线程检查是否有挂起的SELECT语句。如果有,在继续插入延迟的行之前,允许它们先执行。

24.delayed_insert_timeout

     INSERT DELAYED处理器线程终止前应等待INSERT语句的时间。

25.delayed_queue_size 

     这是各个表中处理INSERT DELAYED语句时队列中行的数量限制。如果队列满了,执行INSERT DELAYED语句的客户端应等待直到队列内再有空间。

26.div_precision_increment

     该变量说明用/操作符执行除操作的结果可增加的精确度的位数。 默认值是4。最小和最大值分别为0和30。

27.engine_condition_pushdown

     该变量适用于NDB。默认值为0(OFF)

28.expire_logs_days(重)

     二进制日志自动删除的天数。默认值为0,表示“没有自动删除”。

29.flush

     如果用--flush选项启动mysqld该值为ON。默认为OFF

30.flush_time

     如果设为非零值,每隔flush_time秒则关闭所有表以释放硬盘资源并同步未清空的数据。不建议使用

31.ft_boolean_syntax

     全文搜索支持的操作符系列

32.ft_max_word_len

     FULLTEXT索引中所包含的字的最大长度。

33.ft_min_word_len

     FULLTEXT索引中所包含的字的最小长度。

34.ft_query_expansion_limit

     使用WITH QUERY EXPANSION进行全文搜索的最大匹配数。

35.ft_stopword_file

用于读取全文搜索的停止字清单的文件。更改该变量或停止字文件的内容后必须重建FULLTEXT索引。

36.group_concat_max_len

     允许的GROUP_CONCAT()函数结果的最大长度。

37.have_compress

     是否zlib压缩库适合该服务器。如果不适合,不能使用COMPRESS()和UNCOMPRESS()函数。

38.have_crypt

     是否crypt()系统调用适合该服务器。如果不适合,不能使用CRYPT()函数。

39.have_csv

     是否支持csv存储引擎

40.have_geometry

     是否服务器支持空间数据类型。

41.have_innodb(重)

     如果mysqld支持InnoDB表则为YES。如果使用--skip-innodb则为DISABLED。

42.have_ndbcluster

     如果mysqld支持NDB CLUSTER表则为YES。如果使用了--skip-ndbcluster则为NO。默认为NO

43.have_partitioning

     如果mysqld支持分区则为YES。

44.have_openssl

     如果mysqld支持客户端/服务器协议的SSL(加密)则为YES。

45.have_query_cache(重)

     如果mysqld支持查询缓存则为YES。

46.have_rtree_keys

     RTREE索引是否可用。(用于MyISAM表的空间索引)。

47.have_symlink

     是否启用符号链接支持。在Unix中需要用于支持DATA DIRECTORY和INDEX DIRECTORY表选项。

48.init_connect

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

     例如,每个客户端开始时默认启用autocommit模式。SET GLOBAL init_connect='SET AUTOCOMMIT=0';

     还可以在命令行或选项文件中设置该变量。

[mysqld]
init_connect='SET AUTOCOMMIT=0'

49.init_file

     启动服务器时用--init-file选项指定的文件名。文件中包含服务器启动时要执行的SQL语句。每个语句必须在同一行中并且不能包括注释。

50.init_slave

     类似init_connect,每次SQL线程启动时从服务器应执行该字符串。该字符串的格式与init_connect变量相同。

51.innodb_xxx(重)

1)innodb_additional_mem_pool_size

     InnoDB用来存储数据目录信息&其它内部数据结构的内存池的大小。表越多,就需要在这里分配越多的内存。如果InnoDB用光了这个池内的内存,InnoDB开始从操作系统分配内存,并且往MySQL错误日志写警告信息。默认值是1MB。

2)innodb_autoextend_increment

     当自动扩展表空间被填满之时,为扩展而增加的尺寸(MB为单位)。默认值是8。这个选项可以在运行时作为全局系统变量而改变。

3)innodb_buffer_pool_size

     InnoDB用来缓存它的数据和索引的内存缓冲区的大小。你把这个值设得越高,访问表中数据需要得磁盘I/O越少。在一个专用的数据库服务器上,你可以设置这个参数达机器物理内存大小的80%。尽管如此,还是不要把它设置得太大,因为对物理内存的竞争可能在操作系统上导致内存调度。

4)innodb_checksums

     InnoDB在所有对磁盘的页面读取上使用校验和验证以确保额外容错防止硬件损坏或数据文件。尽管如此,在一些少见的情况下(比如运行标准检查之时)这个额外的安全特征是不必要的。在这些情况下,这个选项(默认是允许的)可以用--skip-innodb-checksums来关闭。

5)innodb_data_file_path

      共享表空间的定义和它的尺寸。通过把innodb_data_home_dir连接到这里指定的每个路径,到每个数据文件的完整目录路径可被获得。文件大小通过给尺寸值尾加M或G以MB或者GB为单位被指定。

6)innodb_data_home_dir

      共享表空间的路径。如果你不设置这个值,默认是MySQL数据目录。值为空字符串的情况下,可以在innodb_data_file_path中使用绝对文件路径。

7)innodb_doublewrite

     默认地,InnoDB存储所有数据两次,第一次存储到doublewrite缓冲,然后存储到数据文件。这个选项用--skip-innodb-doublewrite来关闭。

8)innodb_fast_shutdown

     如果你把这个参数设置为0,InnoDB在关闭之前做一个完全净化和一个插入缓冲合并。这些操作要花几分钟时间,设置在极端情况下要几个小时。如果你设置这个参数为1,InnoDB在关闭之时跳过这些操作。默认值为1。如果你设置这个值为2 (在Netware无此值), InnoDB将刷新它的日志然后冷关机,仿佛MySQL崩溃一样。已提交的事务不会被丢失,但在下一次启动之时会做一个崩溃恢复。

9)innodb_file_io_threads

     InnoDB中文件I/O线程的数量。正常地,这个参数是用默认的,默认值是4,但是大数值对Windows磁盘I/O有益。在Unix上,增加这个数没有效果,InnoDB总是使用默认值。

10)innodb_file_per_table

      独立表空间选项,这个选项使InnoDB用独立的.ibd文件创建新表,而不是在共享表空间中创建。

11)innodb_flush_log_at_trx_commit

     当innodb_flush_log_at_trx_commit被 设置为0,日志缓冲每秒一次地被写到日志文件,并且对日志文件做到磁盘操作的刷新,但是在一个事务提交不做任何操作。当这个值为1(默认值)之时,在每个事务提交时,日志缓冲被写到日志文件,对日志文件做到磁盘操作的刷新。当设置为2之时,在每个提交,日志缓冲被写到文件,但不对日志文件做到磁盘操作的刷新。尽管如此,在对日志文件的刷新在值为2的情况也每秒发生一次。我们必须注意到,因为进程安排问题,每秒一次的刷新不是100%保证每秒都发生。你可以通过设置这个值不为1来获得较好的性能,但随之你会在一次崩溃中损失二分之一价值的事务。如果你设置这个值为0,那么任何mysqld进程的崩溃会删除崩溃前最后一秒的事务,如果你设置这个值为2,那么只有操作系统崩溃或掉电才会删除最后一秒的事务。尽管如此,InnoDB的崩溃恢复不受影响,而且因为这样崩溃恢复开始作用而不考虑这个值。注意,许多操作系统和一些磁盘硬件会欺骗刷新到磁盘操作。尽管刷新没有进行,你可以告诉mysqld刷新已经进行。即使设置这个值为1,事务的持久程度不被保证,且在最坏情况下掉电甚至会破坏InnoDB数据库。在SCSI磁盘控制器中,或在磁盘自身中,使用有后备电池的磁盘缓存会加速文件刷新并且使得操作更安全。你也可以试着使用Unix命令hdparm来在硬件缓存中禁止磁盘写缓存,或使用其它一些对硬件提供商专用的命令。这个选项的默认值是1。不推荐使用0

12)innodb_flush_method

     这个选项只在Unix系统上有效。如果这个选项被设置为fdatasync (默认值),InnoDB使用fsync()来刷新数据和日志文件。如果被设置为O_DSYNC,InnoDB使用O_SYNC来打开并刷新日志文件,但使用fsync()来刷新数据文件。如果O_DIRECT被指定了(在一些GNU/Linux版本商可用),InnoDB使用O_DIRECT来打开数据文件,并使用fsync()来刷新数据和日志文件。注意,InnoDB使用fsync()来替代fdatasync(),并且它默认不使用O_DSYNC,因为这个值在许多Unix变种上已经发生问题。

13)innodb_force_recovery

     警告:这个选项仅在紧急情况下使用,当你想要从损坏的数据库转储表时。可选的值为从1到6。

14)innodb_lock_wait_timeout

     InnoDB事务在被回滚之前可以等待一个锁定的超时秒数。InnoDB在它自己的锁定表中自动检测事务死锁并且回滚事务。InnoDB用LOCK TABLES语句注意到锁定设置。默认值是50秒。

     为在一个复制建立中最大可能的持久程度和连贯性,应该在主服务器上的my.cnf文件里使用innodb_flush_log_at_trx_commit=1和sync-binlog=1。

15)innodb_locks_unsafe_for_binlog

     这个选项在InnoDB搜索和索引扫描中关闭next-key locking。这个选项的默认值是假(false)。

16)innodb_log_buffer_size

       InnoDB用来往磁盘上的日志文件写操作的缓冲区的大小。明智的值是从1MB到8MB。默认是1MB。一个大的日志缓冲允许大型事务运行而不需要在事务提交之前往磁盘写日志。因此,如果你有大型事务,使日志缓冲区更大以节约磁盘I/O。

17)innodb_log_file_size

     在日志组里每个日志文件的大小。默认是5MB。明智的值从1MB到N分之一缓冲池大小,其中N是组里日志文件的数目。值越大,在缓冲池越少需要检查点刷新行为,以节约磁盘I/O。但更大的日志文件也意味这在崩溃时恢复得更慢。

18)innodb_log_files_in_group

     在日志组里日志文件的数目。InnoDB以循环方式写进文件。默认是2(推荐)。

19)innodb_log_group_home_dir

     InnoDB日志文件的目录路径。如果你不指定任何InnoDB日志参数,默认的是在MySQL数据目录里创建两个5MB大小名为ib_logfile0和ib_logfile1的文件。

20)innodb_max_dirty_pages_pct

     这是一个范围从0到100的整数。默认是90。InnoDB中的主线程试着从缓冲池写页面,使得脏页(没有被写的页面)的百分比不超过这个值。可以动态修改,Google的建议值是80

21)innodb_max_purge_lag

     这个选项控制在净化操作被滞后之时,如何延迟INSERT, UPDATE和DELETE操作。这个参数的默认值是零,意为无延迟。这个参数可以动态修改。

22)innodb_mirrored_log_groups

     我们为数据库保持的日志组内同样拷贝的数量。当前这个值应该被设为1。

23)innodb_open_files

     在InnoDB中,这个选项仅与你使用多表空间时有关。它指定InnoDB一次可以保持打开的.ibd文件的最大数目。最小值是10。默认值300。

     对.ibd文件的文件描述符是仅对InnoDB的。它们独立于那些由--open-files-limit服务器选项指定的描述符,且不影响表缓存的操作。

24)innodb_support_xa

     当被设置为ON或者1(默认地),这个变量允许InnoDB支持在XA事务中的双向提交。允许innodb_support_xa导致一个额外的对事务准备的磁盘刷新。如果你对使用XA并不关心,你可以通过设置这个选项为OFF或0来禁止这个变量,以减少磁盘刷新的次数并获得更好的InnoDB性能。

25)innodb_table_locks

     InnoDB重视LOCK TABLES,直到所有其它线程已经释放他们所有对表的锁定,MySQL才从LOCK TABLE .. WRITE返回。默认值是1,这意为LOCK TABLES让InnoDB内部锁定一个表。在使用AUTOCOMMIT=1的应用里,InnoDB的内部表锁定会导致死锁。你可以在my.cnf文件里设置innodb_table_locks=0 来消除这个问题。

26)innodb_thread_concurrency

     InnoDB试着在InnoDB内保持操作系统线程的数量少于或等于这个参数给出的限制。如果有性能问题,并且SHOW INNODB STATUS显示许多线程在等待信号,可以让线程“thrashing” ,并且设置这个参数更小或更大。如果你的计算机有多个处理器和磁盘,你可以试着这个值更大以更好地利用计算机的资源。一个推荐的值是系统上处理器和磁盘的个数之和。值为500或比500大会禁止调用并发检查。默认值是20,并且如果设置大于或等于20,并发检查将被禁止。此选项在MySQL5.5中默认值改为0,意为无并发检查。

52.interactive_timeout

     服务器关闭交互式连接前等待活动的秒数。

53.join_buffer_size(重)

       用于join的缓冲区的大小(当不使用索引的时候使用联接操作)。一般情况获得快速联接的最好方法是添加索引。当增加索引时不可能通过增加join_buffer_size值来获得快速完全联接。将为两个表之间的每个完全联接分配联接缓冲区。对于多个表之间不使用索引的复杂联接,需要多联接缓冲区。

54.key_buffer_size

     global,动态变更

     MyISAM表的索引块分配了缓冲区,由所有线程共享。key_buffer_size是索引块缓冲区的大小。键值缓冲区即为键值缓存。因MyISAM使用越来越少,此参数可分配较小值16M。

55.key_cache_age_threshold

     global,动态变更

     该值控制Cache Block从Hot Area降到Warm Area。如果值更低,则降级更快。最小值为100。 默认值是300。

56.key_cache_block_size

     global,动态变更

     键值缓存内块的字节大小。默认值是1024。

57.key_cache_division_limit

     键值缓存缓冲区链Hot Area和Warm Area的划分点。该值为缓冲区链用于温子链的百分比。允许的值的范围为1到100。 默认值是100。

58.large_file_support

     global,不可变更

     查看编译时是否使用了大文件支持选项。

59.large_pages

     global,不可动态变更

     说明是否启用了大页面支持。

60.license

     服务器的许可类型。

61.local_infile

     global,可动态变更

     是否LOCAL支持LOAD DATA INFILE语句。

62.locked_in_memory

     global,不可动态变更

     是否用–memlock将mysqld锁在内存中。

63.log(重)

     global,可动态变更

     是否启用将所有查询记录到常规查询日志中。

64.log_bin(重)

     global,可动态变更

     是否启用二进制日志。

65.log_bin_trust_routine_creators(重)

     global,可动态变更

     若启用了二进制记录,则该变量适用。它控制是否可以信任保存的程序的作者不会创建向二进制日志写入不安全事件的程序。此参数对复制影响较大。

66.log_error(重)

     错误日志的位置。

加.log-queries-not-using-indexes(重)

     如果运行的SQL语句没有使用索引,则mysql数据库同样会将这条SQL语句记录到慢查询日志文件中。

67.log_slave_updates(重)

     是否从服务器从主服务器收到的更新应记入从服务器自己的二进制日志。要想生效,必须启用从服务器的二进制记录。此参数经常应用在级联复制中。

68.log_slow_queries(重)

     是否记录慢查询。用long_query_time变量的值来确定“慢查询”。

69.log_warnings

     是否产生其它警告消息。默认情况下启用。放弃的连接不记入错误日志,除非值大于1。

70.long_query_time(重)

     如果查询时间超过该值,则增加Slow_queries状态变量。如果你正使用--log-slow-queries选项,则查询记入慢查询日志文件。用实际时间测量该值,而不是CPU时间,因此低于轻负载系统阈值的查询可能超过重负载系统的阈值。

71.low_priority_updates

     如果设置为1,所有INSERT、UPDATE、DELETE和LOCK TABLE WRITE语句将等待直到受影响的表没有挂起的SELECT或LOCK TABLE READ。默认为0。

72.lower_case_file_system

     该变量说明是否数据目录所在的文件系统对文件名的大小写敏感。ON说明对文件名的大小写不敏感,OFF表示敏感。

73.lower_case_table_names(重)

     值=1,表名用小写保存到硬盘上,并且表名比较时不对大小写敏感。

     值=2,按照指定的保存表名,但按照小写来比较。该选项还适合数据库名和表的别名。

     值=0,按指定的保存表名,比较查找表的时候也区分大小写。

74.max_allowed_packet(重)

     包或任何生成的/中间字符串的最大大小。这个参数与net_buffer_length对应,是net_buffer_length的最大值。

75.max_binlog_cache_size(重)

     如果多语句事务需要更大的内存,你会得到错误Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage。

76.max_binlog_size(重)

     如果二进制日志写入的内容超出给定值,日志就会发生滚动。你不能将该变量设置为大于1GB或小于4096字节。 默认值是1GB。

     请注意如果你正使用事务:事务以一个块写入二进制日志,因此不不能被几个二进制日志拆分。因此,如果你有大的事务,二进制日志可能会大于max_binlog_size。

     如果max_relay_log_size为0, max_binlog_size的值也适用于中继日志。

77.max_connect_errors(重)

     如果中断的与主机的连接超过该数目,该主机则阻塞后面的连接。你可以用 FLUSH HOSTS语句解锁锁定的主机。建议值是100000。

78.max_connections(重)

     允许的并行客户端连接数目。增大该值则增加mysqld 需要的文件描述符的数量。

79.max_delayed_threads

     不要启动大于该数目的线程来处理INSERT DELAYED语句。如果所有INSERT DELAYED线程已经在使用,你想在新表中插入数据,行 插入时好像未指定DELAYED属性。如果你将该值设置为0,MySQL不会创建线程来处理DELAYED行;其结果是完全禁用了DELAYED。默认值是20

80.max_error_count

     保存由SHOW ERRORS或SHOW WARNINGS显示的错误、警告和注解的最大数目。

81.max_heap_table_size(重)

     该变量设置MEMORY (HEAP)表可以增长到的最大空间大小。该变量用来计算MEMORY表的MAX_ROWS值。在已有的MEMORY表上设置该变量没有效果,除非用CREATE TABLE或TRUNCATE TABLE等语句重新创建表。

82.max_insert_delayed_threads

     该变量为max_delayed_threads的同义词。

83.max_join_size

     不允许可能需要检查多于max_join_size行(为单个表语句)或行组合(为多个表语句)或可能执行大于max_join_size次硬盘查询的SELECT语句。

84.max_length_for_sort_data

     确定使用的filesort算法的索引值大小的限值。

85.max_relay_log_size

     如果复制从服务器写入中继日志时超出给定值,则滚动中继日志。通过该变量你可以对中继日志和二进制日志设置不同的限制。但是,将该变量设置为0,MySQL可以对二进制日志和中继日志使用max_binlog_size。max_relay_log_size必须设置在4096字节和1GB(包括)之间,或为0。 默认值是0。

86.max_seeks_for_key

     限制根据键值寻找行时的最大搜索数。MySQL优化器假定当用扫描键在表内搜索匹配的行时,不需要超过该数量的键值搜索,而不管键的实际基数是什么。将该值设置为较低的值(100?),你可以强制MySQL选择键值而不选择表扫描。

87.max_sort_length

     当排序BLOB或TEXT值时使用的字节数。只使用每个值的前max_sort_length字节;其它的被忽略。

88.max_tmp_tables

     客户端可以同时打开的临时表的最大数。

89.max_user_connections

     任何给定的MySQL账户允许的最大同时连接数。0值表示“没有限制”。

90.max_write_lock_count

     超过写锁定限制后,允许部分读锁定。

91.myisam_data_pointer_size

     默认指针大小,单位是字节,当未指定MAX_ROWS选项时,CREATE TABLE使用该变量创建MyISAM表。该变量不能小于2或大于7。 默认值是6。

92.myisam_max_sort_file_size

     重建MyISAM索引(在REPAIR TABLE、ALTER TABLE或LOAD DATA INFILE过程中)时,允许MySQL使用的临时文件的最大空间大小。如果文件的大小超过该值,则使用键值缓存创建索引,要慢得多。该值的单位为字节。

93.myisam_recover_options

     --myisam-recover选项的值。

94.myisam_repair_threads

     如果该值大于1,在Repair by sorting过程中并行创建MyISAM表索引(每个索引在自己的线程内)。 默认值是1。

95.myisam_sort_buffer_size

当在REPAIR TABLE或用CREATE INDEX创建索引或ALTER TABLE过程中排序 MyISAM索引分配的缓冲区。

96.myisam_stats_method

     当为MyISAM表搜集关于索引值分发的统计信息时服务器如何处理NULL值。有两个值,nulls_equal和nulls_unequal。

     nulls_equal,认为所有NULL索引值时相等的,并形成一个数值组,其空间大小等于NULL值的数。

     nulls_unequal,NULL值认为是不相等的,每个NULL形成一个数值组,大小为1。

     此方法用于生成表统计信息,影响优化器如何选择索引来执行查询。

97.multi_read_range

     指定范围选择过程中发送到存储引擎的范围的最大值。默认值是256。向引擎发送多个范围可以大大改进某些选择的性能,特别是对NDBCLUSTER。该引擎需要向所有节点发送范围请求,同时发送许多请求可以大大降低通信成本。

98.net_buffer_length

     控制网络缓冲区初始化大小。一般情况不应改变,但如果内存很小,可以将它设置为期望的客户端发送的SQL语句的长度。如果语句超出该长度,缓冲区自动扩大,直到max_allowed_packet字节。

99.net_read_timeout

     中断读前等待连接的其它数据的秒数。当服务器从客户端读数时,net_read_timeout指控制何时中断的超时值。当服务器向客户端写时,net_write_timeout指控制何时中断的超时值。

100.net_retry_count

     如果某个通信端口的读操作中断了,在放弃前重试多次。在FreeBSD中该值应设得很高,因为内部中断将发送至所有线程。

101.net_write_timeout

     中断写之前等待块写入连接的秒数。

102.new

     在MySQL 4.0中使用该变量来打开4.1中的一些行为,并用于向后兼容性。在MySQL 5.1中,它的值一直是OFF.

103.old_passwords

     是否服务器应为MySQL用户账户使用pre-4.1-style密码。

104.open_files_limit

     操作系统允许mysqld打开的文件的数量。这是系统允许的实际值,可能与你在启动选项中赋给mysqld的值不同。默认为0,即使用和OS级别相同的设置。

105.optimizer_prune_level

     设置查询优化器选择的规则,是否允许优化器跳过某些方案。

     0值禁用该方法,以便优化器进行穷举搜索。

     1值使优化器根据中间方案中得出的行数来裁减方案。

106.optimizer_search_depth

       查询优化器进行的搜索的最大深度。如果值大于查询中的关系数则查询方案比较佳,但生成查询执行方案需要的时间更长。值小于查询中的关系数则返回的执行方案更快,但方案远没有优化。如果设置为0, 系统自动选择合理的值。如果设置为63,优化器转换为MySQL 5.0.0(和以前的版本)中使用的算法并搜索。默认值是62.

107.pid_file(重)

      进程ID (PID)文件的路径名。可以用--pid-file选项设置该变量。

108.plugin_dir

      插件目录的路径。

109.port(重)

     服务器帧听TCP/IP连接所用端口。可以用--port选项设置该变量。

110.preload_buffer_size

      重载索引时分配的缓冲区大小。

111.protocol_version

      MySQL服务器使用的客户端/服务器协议的版本。

112.query_alloc_block_size

      为查询分析和执行过程中创建的对象分配的内存块大小。如果内存分段过程中遇到问题,将该变量增加一位会有帮助。

113.query_cache_limit(重)

不要缓存大于该值的结果。默认值是1048576(1MB)。

114.query_cache_min_res_unit

      查询缓存分配的最小块的大小(字节)。 默认值是4096(4KB)。

115.query_cache_size(重)

      为缓存查询结果分配的内存的数量。默认值是0,即禁用查询缓存。请注意即使query_cache_type设置为0也将分配此数量的内存。

116.query_cache_type

      设置查询缓存类型。设置GLOBAL值可以设置后面的所有客户端连接的类型。客户端可以设置SESSION值以影响他们自己对查询缓存的使用。下面的表显示了可能的值:

选项

描述

0或OFF

不要缓存或查询结果。请注意这样不会取消分配的查询缓存区。要想取消,你应将query_cache_size设置为0。

1或ON

缓存除了以SELECT SQL_NO_CACHE开头的所有查询结果。

2或DEMAND

只缓存以SELECT SQL_NO_CACHE开头的查询结果。

该变量默认设为ON。

117.query_cache_wlock_invalidate

      一般情况,当客户端对MyISAM表进行WRITE锁定时,如果查询结果位于查询缓存中,则其它客户端未被锁定,可以对该表进行查询。将该变量设置为1,则可以对表进行WRITE锁定,使查询缓存内所有对该表进行的查询变得非法。这样当锁定生效时,可以强制其它试图访问表的客户端来等待。

118.query_prealloc_size

      用于查询分析和执行的固定缓冲区的大小。在查询之间该缓冲区不释放。如果你执行复杂查询,分配更大的query_prealloc_size值可以帮助提高性能,因为它可以降低查询过程中服务器分配内存的需求。

119.range_alloc_block_size

      范围优化时分配的块的大小。

120.read_buffer_size

      每个线程连续扫描时为扫描的每个表分配的缓冲区的大小(字节)。如果进行多次连续扫描,可能需要增加该值, 默认值为131072。顺序读时使用。

121.read_only(重)

      当变量对复制从服务器设置为ON时,从服务器不允许更新,除非通过从服务器的线程或用户拥有SUPER权限。可以确保从服务器不接受客户端的更新命令。

122.relay_log_purge

      当不再需要中继日志时禁用或启用自动清空中继日志。默认值是1(启用)。

123.read_rnd_buffer_size

      当排序后按排序后的顺序读取行时,则通过该缓冲区读取行,避免搜索硬盘。将该变量设置为较大的值可以大大改进ORDER BY的性能。但是,这是为每个客户端分配的缓冲区,因此你不应将全局变量设置为较大的值。相反,只为需要运行大查询的客户端更改会话变量。随机读时使用。

124.secure_auth

      如果用--secure-auth选项启动了MySQL服务器,它将阻塞有旧格式(4.1之前)密码的所有账户所发起的连接。在这种情况下,该变量的值为ON,否则为OFF。

      如果你想要防止使用旧格式的密码(致使网络通信不安全),你应启用该选项。

      如果启用该选项并且授权表为pre-4.1格式,服务器启动失败并且会出现错误。

      当用于客户端选项时,如果服务器需要该客户端账户的旧格式的密码,则客户端拒绝连接该服务器。

125.server_id(重)

      --server-id选项的值。用于主复制服务器和从复制服务器。

126.skip_external_locking

      如果mysqld使用外部锁定,该值为OFF。默认值是ON.

127.skip_networking(重)

      如果服务器只允许本地(非TCP/IP)连接,该值为ON。在Unix中,本地连接使用Unix套接字文件。在Windows中,本地连接使用命名管道或共享内存。在NetWare中,只支持TCP/IP连接,因此不要将该变量设置为ON。

128.skip_show_database

      防止不具有SHOW DATABASES权限的人们使用SHOW DATABASES语句。如果你担心用户能够看见属于其它用户的数据库,这样设置可以提高安全性。其效果取决于SHOW DATABASES权限:如果变量值为ON,只允许具有SHOW DATABASES权限的人们使用SHOW DATABASES 语句,并且该语句将显示所有数据库名。如果值为OFF,允许所有用户执行SHOW DATABASES,但只显示用户具有SHOW DATABASES或其它权限的数据库的名称。

129.slave_compressed_protocol

      如果主、从服务器均支持,确定是否使用从/主压缩协议。

130.slave_load_tmpdir

      从服务器为复制LOAD DATA INFILE语句创建临时文件的目录名。

131.slave_net_timeout

      放弃读操作前等待主/从连接的更多数据的等待秒数。

132.slave_skip_errors(重)

      从服务器应跳过(忽视)的复制错误。

133.slave_transaction_retries

      如果由于InnoDB死锁或超过InnoDB的innodb_lock_wait_timeout或NDBCLUSTER的TransactionDeadlockDetectionTimeout或TransactionInactiveTimeout,复制从服务器SQL线程未能执行事务,在提示错误并停止前它自动重复slave_transaction_retries次。 默认值是10。

134.slow_launch_time

      如果创建线程的时间超过该秒数,服务器增加Slow_launch_threads状态变量。

135.socket(重)

Unix平台:用于本地客户端连接的套接字文件。默认为/var/lib/mysql/mysql.sock。

Windows:用于本地客户端连接的命名管道名。默认为mysql。

136.sort_buffer_size(重)

      每个排序线程分配的缓冲区的大小。增加该值可以加快ORDER BY或GROUP BY操作。

137.sql_mode(重)

当前的服务器SQL模式,可以动态设置。

138.sql_slave_skip_counter(重)

      从服务器应跳过的来自主服务器的事件数。

139.storage_engine(重)

      该变量是table_typeis的同义词。在MySQL 5.1中,首选storage_engine。

140.sync_binlog(重)

如果为正,当每个sync_binlog'th写入该二进制日志后,MySQL服务器将它的二进制日志同步到硬盘上(fdatasync())。请注意如果在autocommit模式,每执行一个语句向二进制日志写入一次,否则每个事务写入一次。 默认值是0,不与硬盘同步。值为1是最安全的选择,因为崩溃时,你最多丢掉二进制日志中的一个语句/事务;但是,这是最慢的选择(除非硬盘有电池备份缓存,从而使同步工作较快)。

141.sync_frm

      如果该变量设为1,当创建非临时表时它的.frm文件被同步到硬盘上(fdatasync());这样较慢但出现崩溃时较安全。 默认值为1。

142.system_time_zone

      服务器系统时区。当服务器开始执行时,它继承机器默认时区设置值,可以由运行服务器的账户或在启动脚本中进行修改。该值用来设置system_time_zone。典型情况用TZ环境变量来指定时区。还可以用mysqld_safe脚本的--timez选项来指定。

143.table_cache(重)

      所有线程打开的表的数目。增大该值可以增加mysqld需要的文件描述符的数量。你可以检查Opened_tables状态变量来检查你是否需要增加表缓存。如果Opened_tables值较大,并且多次执行FLUSH TABLES(只是强制关闭所有表并重新),则应增加table_cache变量的值。

144.thread_cache_size(重)

       服务器应缓存多少线程以便重新使用。当客户端断开连接时,如果线程少于thread_cache_size,则客户端的线程被放入缓存。当请求线程时如果允许可以从缓存中重新利用线程,并且只有当缓存空了时才会创建新线程。如果新连接很多,可以增加该变量以提高性能。(一般情况,如果线程执行得很好,性能提高不明显)。检查Connections和Threads_created状态变量的差,你可以看见线程缓存的效率。

145.thread_concurrency(重)

      在Solaris中,mysqld用该值调用thr_setconcurrency()。该函数使应用程序向线程系统提供需要同时运行的期望的线程数目的提示。

146.thread_stack

      每个线程的堆栈大小。用crash-me测试检测出的许多限制取决于该值。 默认值足够大,可以满足普通操作。

147.time_format

       该变量未使用。

148.time_zone

       当前的时区。初使值是'SYSTEM'(使用system_time_zone的值),但可以用--default-time-zone选项在服务器启动时显式指定。

149.tmp_table_size(重)

      如果内存内的临时表超过该值,MySQL自动将它转换为硬盘上的MyISAM表。如果你执行许多高级GROUP BY查询并且有大量内存,则可以增加tmp_table_size的值。

150.tmpdir(重)

      保存临时文件和临时表的目录。该变量可以设置为几个路径,按round-robin模式使用。在Unix中应该用冒号(‘:’)间隔开路径,在Windows、NetWare和OS/2中用分号(‘;’)。

      用来将负荷分散到几个物理硬盘上。如果MySQL服务器为复制从服务器,你不应将tmpdir设置为指向基于内存的文件系统上的目录或当服务器主机重启时声明的目录。复制从服务器需要部分临时文件来在机器重启后仍可用,以便它可以复制临时表或执行LOAD DATA INFILE操作。如果服务器重启时临时文件夹中的文件丢失了,则复制失败。但是,如果你使用MySQL 4.0.0或更新版本,你可以使用 slave_load_tmpdir变量设置从服务器的临时目录。在这种情况下,从服务器不再使用常规tmpdir,说明你可以将tmpdir设置到一个非固定位置。

151.transaction_alloc_block_size

      为保存将保存到二进制日志中的事务的查询而分配的内存块的大小(字节)。

152.transaction_prealloc_size

      为transaction_alloc_blocks分配的固定缓冲区的大小(字节),在两次查询之间不会释放。使该值足够大,将所有查询固定到一个事务中,可以避免多次malloc()调用。

153.tx_isolation(重)

      默认事务隔离级别。默认值为REPEATABLE-READ。

154.updatable_views_with_limit

      该变量控制如果更新包含LIMIT子句,是否可以在当前表中使用不包含主关键字的视图进行更新。(通常用GUI工具生成这类更新)。更新指UPDATE或DELETE语句。这儿主关键字指PRIMARY KEY,或一个UNIQUE索引,其中任何列不可以包含NULL。

该变量有两个值:

o        1或YES:只发出警告(没有错误消息)。这是 默认值。

o        0或NO:禁止更新。

155.version

      服务器版本号。

156.version_comment

      configure脚本有一个--with-comment选项,当构建MySQL时可以进行注释。该变量包含注释值。

157.version_compile_machine

      MySQL构建的机器或架构的类型。

158.version_compile_os

MySQL构建的操作系统的类型。

159.wait_timeout(重)

      服务器关闭非交互连接之前等待活动的秒数。

      在线程启动时,根据全局wait_timeout值或全局interactive_timeout值初始化会话wait_timeout值,取决于客户端类型(由mysql_real_connect()的连接选项CLIENT_INTERACTIVE定义)。又见interactive_timeout。

 

my.cnf参考配置:


[client]

port = 3306

socket = /data0/mysqldata/3306/mysql.sock

default-character-set = utf8
[mysqld]

port = 3314

user = mysql

socket = /data0/mysqldata/3314/mysql.sock

pid-file = /data0/mysqldata/3314/mysql.pid

basedir = /usr/local/mysql

datadir = /data0/mysqldata/3314/data

tmpdir = /data0/mysqldata/3314/tmp

server-id = 633314

lower_case_table_names = 1

character_set_server = utf8

skip-name-resolve

max_connections = 500

max_connect_errors = 100000

max_allowed_packet = 512M

max_heap_table_size = 1024M

max_length_for_sort_data = 4096

back_log=100

interactive_timeout = 600

wait_timeout = 600

default_storage_engine = InnoDB

net_buffer_length = 8K

sort_buffer_size = 2M

join_buffer_size = 4M

read_buffer_size = 2M

read_rnd_buffer_size = 16M

query_cache_size = 128M

query_cache_limit = 2M

query_cache_min_res_unit = 2k

thread_cache_size = 300

table_open_cache = 1024

tmp_table_size = 256M

#*********** SLAVE Specific options **********

log_bin_trust_function_creators=1

relay-log=mysql-relay-bin

replicate-do-db = leaguelib
replicate-do-db = leagueodds

replicate-ignore-db = mysql
replicate-ignore-db = test
replicate-ignore-db = information_schema
replicate-ignore-db = performance_schema

#slave_skip_errors = 1032

auto-increment-increment = 2
auto-increment-offset = 1
log-slave-updates
sync_binlog=1

#*********** Logs related settings ***********
log_bin = /data0/mysqldata/3314/binlog/mysql-bin

binlog_format=row

binlog_cache_size=32m

max_binlog_cache_size=512m

max_binlog_size=512m

long_query_time = 1

log_output = FILE

log_error = /data0/mysqldata/3314/mysql-error.log

slow_query_log = 1

slow_query_log_file = /data0/mysqldata/3314/slow_statement.log

#log_queries_not_using_indexes

general_log = 0

general_log_file = /data0/mysqldata/3314/general_statement.log

expire-logs-days = 14

#*********** MyISAM Specific options ***********     
key_buffer_size = 32M

bulk_insert_buffer_size = 32M

myisam_sort_buffer_size = 64M

myisam_max_sort_file_size = 2G

myisam_repair_threads = 1

myisam_recover

#*********** INNODB Specific options ***********
innodb_file_per_table

transaction-isolation = READ-COMMITTED

innodb_additional_mem_pool_size = 16M

innodb_buffer_pool_size = 20480M

innodb_data_home_dir = /data0/mysqldata/3314/innodb_ts

innodb_data_file_path = ibdata1:16M:autoextend:max:8192M

innodb_thread_concurrency = 0

innodb_log_buffer_size = 16M

innodb_log_file_size = 256M

innodb_log_files_in_group = 2

innodb_log_group_home_dir = /data0/mysqldata/3314/innodb_log

innodb_flush_log_at_trx_commit = 2

innodb_max_dirty_pages_pct = 80

innodb_lock_wait_timeout = 120

innodb_flush_method=O_DIRECT

[mysqldump]

quick

max_allowed_packet = 512M

[mysql]

no-auto-rehash

prompt="\\u@\\h \\R:\\m:\\s \\d> "

# Remove the next comment character if you are not familiar with SQL
#safe-updates

[myisamchk]

key_buffer_size = 32M

sort_buffer_size = 20M

read_buffer_size = 2M

write_buffer_size = 2M

[mysqlhotcopy]

interactive-timeout

[mysqld_safe]

open-files-limit = 8192


参考文献:mysql官方文档
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
安全 关系型数据库 MySQL
如何将数据从MySQL同步到其他系统
【10月更文挑战第17天】如何将数据从MySQL同步到其他系统
323 0
|
25天前
|
SQL 存储 关系型数据库
MySQL进阶突击系列(01)一条简单SQL搞懂MySQL架构原理 | 含实用命令参数集
本文从MySQL的架构原理出发,详细介绍其SQL查询的全过程,涵盖客户端发起SQL查询、服务端SQL接口、解析器、优化器、存储引擎及日志数据等内容。同时提供了MySQL常用的管理命令参数集,帮助读者深入了解MySQL的技术细节和优化方法。
|
1月前
|
关系型数据库 MySQL 数据库
【赵渝强老师】MySQL的参数文件
MySQL启动时会读取配置文件my.cnf来确定数据库文件位置及初始化参数。该文件分为Server和Client两部分,包含动态与静态参数。动态参数可在运行中通过命令修改,而静态参数需修改my.cnf并重启服务生效。文中还提供了相关代码示例和视频教程。
|
1月前
|
缓存 监控 关系型数据库
如何根据监控结果调整 MySQL 数据库的参数以提高性能?
【10月更文挑战第28天】根据MySQL数据库的监控结果来调整参数以提高性能,需要综合考虑多个方面的因素
84 1
|
1月前
|
关系型数据库 MySQL Linux
Linux系统如何设置自启动服务在MySQL数据库启动后执行?
【10月更文挑战第25天】Linux系统如何设置自启动服务在MySQL数据库启动后执行?
125 3
|
3月前
|
存储 SQL 关系型数据库
【MySQL调优】如何进行MySQL调优?从参数、数据建模、索引、SQL语句等方向,三万字详细解读MySQL的性能优化方案(2024版)
MySQL调优主要分为三个步骤:监控报警、排查慢SQL、MySQL调优。 排查慢SQL:开启慢查询日志 、找出最慢的几条SQL、分析查询计划 。 MySQL调优: 基础优化:缓存优化、硬件优化、参数优化、定期清理垃圾、使用合适的存储引擎、读写分离、分库分表; 表设计优化:数据类型优化、冷热数据分表等。 索引优化:考虑索引失效的11个场景、遵循索引设计原则、连接查询优化、排序优化、深分页查询优化、覆盖索引、索引下推、用普通索引等。 SQL优化。
655 15
【MySQL调优】如何进行MySQL调优?从参数、数据建模、索引、SQL语句等方向,三万字详细解读MySQL的性能优化方案(2024版)
|
2月前
|
存储 关系型数据库 MySQL
PACS系统 中 dicom 文件在mysql 8.0 数据库中的 存储和读取(pydicom 库使用)
PACS系统 中 dicom 文件在mysql 8.0 数据库中的 存储和读取(pydicom 库使用)
45 2
|
2月前
|
Ubuntu 关系型数据库 MySQL
Linux系统MySQL安装
【10月更文挑战第19天】本文介绍了在 Linux 系统上安装 MySQL 的步骤,包括安装前准备、安装 MySQL、启动 MySQL 服务、配置 MySQL 以及验证安装。适用于 Ubuntu/Debian 和 CentOS/Fedora 系统,提供了详细的命令示例。
343 1
|
2月前
|
SQL JSON 关系型数据库
MySQL是一个广泛使用的开源关系型数据库管理系统,它有许多不同的版本
【10月更文挑战第3天】MySQL是一个广泛使用的开源关系型数据库管理系统,它有许多不同的版本
205 5
|
2月前
|
关系型数据库 MySQL Linux
Linux系统绿色安装MySQL 8.0.39
Linux系统绿色安装MySQL 8.0.39