zoukankan      html  css  js  c++  java
  • 很全的Mysql配置参数说明

    1. back_log

    指定MySQL可能的连接数量。当MySQL主线程在很短的时间内得到非常多的连接请求,该参数就起作用,之后主线程花些时间(尽管很短)检查连接 并且启动一个新线程。

    back_log参数的值指出在MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中。如果系统在一个短时间内有很多连接,则需 要增大该参数的值,该参数值指定到来的TCP/IP连接的侦听队列的大小。不同的操作系统在这个队列大小上有它自己的限制。试图设定back_log高于 你的操作系统的限制将是无效的。

    当观察MySQL进程列表,发现大量 264084 | unauthenticated user | xxx.xxx.xxx.xxx | NULL | Connect | NULL | login | NULL 的待连接进程时,就要加大 back_log 的值。back_log默认值为50。

    2. basedir

    MySQL主程序所在路径,即:--basedir参数的值。

    3. bdb_cache_size

    分配给BDB类型数据表的缓存索引和行排列的缓冲区大小,如果不使用DBD类型数据表,则应该在启动MySQL时加载 --skip-bdb 参数以避免内存浪费。

    4.bdb_log_buffer_size

    分配给BDB类型数据表的缓存索引和行排列的缓冲区大小,如果不使用DBD类型数据表,则应该将该参数值设置为0,或者在启动MySQL时加载 --skip-bdb 参数以避免内存浪费。

    5.bdb_home

    参见 --bdb-home 选项。

    6. bdb_max_lock

    指定最大的锁表进程数量(默认为10000),如果使用BDB类型数据表,则可以使用该参数。如果在执行大型事物处理或者查询时发现 bdb: Lock table is out of available locks or Got error 12 from ... 错误,则应该加大该参数值。

    7. bdb_logdir

    指定使用BDB类型数据表提供服务时的日志存放位置。即为 --bdb-logdir 的值。

    8. bdb_shared_data

    如果使用 --bdb-shared-data 选项则该参数值为On。

    9. bdb_tmpdir

    BDB类型数据表的临时文件目录。即为 --bdb-tmpdir 的值。

    10. binlog_cache_size

    为binary log指定在查询请求处理过程中SQL 查询语句使用的缓存大小。如果频繁应用于大量、复杂的SQL表达式处理,则应该加大该参数值以获得性能提升。

    11. bulk_insert_buffer_size

    指定 MyISAM 类型数据表表使用特殊的树形结构的缓存。使用整块方式(bulk)能够加快插入操作( INSERT ... SELECT, INSERT ... VALUES (...), (...), ..., 和 LOAD DATA INFILE) 的速度和效率。该参数限制每个线程使用的树形结构缓存大小,如果设置为0则禁用该加速缓存功能。注意:该参数对应的缓存操作只能用户向非空数据表中执行插 入操作!默认值为 8MB。

    12. character_set

    MySQL的默认字符集。

    13. character_sets

    MySQL所能提供支持的字符集。

    14. concurrent_inserts

    如果开启该参数,MySQL则允许在执行 SELECT 操作的同时进行 INSERT 操作。如果要关闭该参数,可以在启动 mysqld 时加载 --safe 选项,或者使用 --skip-new 选项。默认为On。

    15. connect_timeout

    指定MySQL服务等待应答一个连接报文的最大秒数,超出该时间,MySQL向客户端返回 bad handshake。

    16. datadir

    指定数据库路径。即为 --datadir 选项的值。

    17. delay_key_write

    该参数只对 MyISAM 类型数据表有效。有如下的取值种类:

    off: 如果在建表语句中使用 CREATE TABLE ... DELAYED_KEY_WRITES,则全部忽略

    DELAYED_KEY_WRITES;

    on: 如果在建表语句中使用 CREATE TABLE ... DELAYED_KEY_WRITES,则使用该选项(默认);

    all: 所有打开的数据表都将按照 DELAYED_KEY_WRITES 处理。

    如果 DELAYED_KEY_WRITES 开启,对于已经打开的数据表而言,在每次索引更新时都不刷新带有

    DELAYED_KEY_WRITES 选项的数据表的key buffer,除非该数据表关闭。该参数会大幅提升写入键值的速

    度。如果使用该参数,则应该检查所有数据表:myisamchk --fast --force。

    18.delayed_insert_limit

    在插入delayed_insert_limit行后,INSERT DELAYED处理模块将检查是否有未执行的SELECT语句。如果有,在继续处理前执行允许这些语句。

    19. delayed_insert_timeout

    一个INSERT DELAYED线程应该在终止之前等待INSERT语句的时间。

    20. delayed_queue_size

    为处理INSERT DELAYED分配的队列大小(以行为单位)。如果排队满了,任何进行INSERT DELAYED的客户必须等待队列空间释放后才能继续。

    21. flush

    在启动MySQL时加载 --flush 参数打开该功能。

    22. flush_time

    如果该设置为非0值,那么每flush_time秒,所有打开的表将被关,以释放资源和sync到磁盘。注意:只建议在使用 Windows9x/Me 或者当前操作系统资源严重不足时才使用该参数!

    23. ft_boolean_syntax

    搜索引擎维护员希望更改允许用于逻辑全文搜索的操作符。这些则由变量 ft_boolean_syntax 控制。

    24. ft_min_word_len

    指定被索引的关键词的最小长度。注意:在更改该参数值后,索引必须重建!

    25. ft_max_word_len

    指定被索引的关键词的最大长度。注意:在更改该参数值后,索引必须重建!

    26. ft_max_word_len_for_sort

    指定在使用REPAIR, CREATE INDEX, or ALTER TABLE等方法进行快速全文索引重建过程中所能使用的关键词的最大长度。超出该长度限制的关键词将使用低速方式进行插入。加大该参数的值,MySQL将 会建立更大的临时文件(这会减轻CPU负载,但效率将取决于磁盘I/O效率),并且在一个排序取内存放更少的键值。

    27. ft_stopword_file

    从 ft_stopword_file 变量指定的文件中读取列表。在修改了 stopword 列表后,必须重建 FULLTEXT 索引。

    28. have_innodb

    YES: MySQL支持InnoDB类型数据表; DISABLE: 使用 --skip-innodb 关闭对InnoDB类型数据表的支持。

    29. have_bdb

    YES: MySQL支持伯克利类型数据表; DISABLE: 使用 --skip-bdb 关闭对伯克利类型数据表的支持。

    30. have_raid

    YES: 使MySQL支持RAID功能。

    31. have_openssl

    YES: 使MySQL支持SSL加密协议。

    32. init_file

    指定一个包含SQL查询语句的文件,该文件在MySQL启动时将被加载,文件中的SQL语句也会被执行。

    33. interactive_timeout

    服务器在关上它前在一个交互连接上等待行动的秒数。一个交互的客户被定义为对mysql_real_connect()使用 CLIENT_INTERACTIVE选项的客户。也可见wait_timeout。

    34. join_buffer_size

    用于全部联合(join)的缓冲区大小(不是用索引的联结)。缓冲区对2个表间的每个全部联结分配一次缓冲区,当增加索引不可能时,增加该值可得到 一个更快的全部联结。(通常得到快速联结的最佳方法是增加索引。)

    35. key_buffer_size

    用于索引块的缓冲区大小,增加它可得到更好处理的索引(对所有读和多重写),到你能负担得起那样多。如果你使它太大,系统将开始变慢慢。必须为OS 文件系统缓存留下一些空间。为了在写入多个行时得到更多的速度。

    36. language

    用户输出报错信息的语言。

    37. large_file_support

    开启大文件支持。

    38. locked_in_memory

    使用 --memlock 将mysqld锁定在内存中。

    39. log

    记录所有查询操作。

    40. log_update

    开启update log。

    41. log_bin

    开启 binary log。

    42. log_slave_updates

    如果使用链状同步或者多台Slave之间进行同步则需要开启此参数。

    43. long_query_time

    如果一个查询所用时间超过该参数值,则该查询操作将被记录在Slow_queries中。

    44. lower_case_table_names

    1: MySQL总使用小写字母进行SQL操作;

    0: 关闭该功能。

    注意:如果使用该参数,则应该在启用前将所有数据表转换为小写字母。

    45. max_allowed_packet

    一个查询语句包的最大尺寸。消息缓冲区被初始化为net_buffer_length字节,但是可在需要时增加到 max_allowed_packet个字节。该值太小则会在处理大包时产生错误。如果使用大的BLOB列,必须增加该值。

    46. net_buffer_length

    通信缓冲区在查询期间被重置到该大小。通常不要改变该参数值,但是如果内存不足,可以将它设置为查询期望的大小。(即,客户发出的SQL语句期望的 长度。如果语句超过这个长度,缓冲区自动地被扩大,直到max_allowed_packet个字节。)

    47. max_binlog_cache_size

    指定binary log缓存的最大容量,如果设置的过小,则在执行复杂查询语句时MySQL会出错。

    48. max_binlog_size

    指定binary log文件的最大容量,默认为1GB。

    49. max_connections

    允许同时连接MySQL服务器的客户数量。如果超出该值,MySQL会返回Too many connections错误,但通常情况下,MySQL能够自行解决。

    50. max_connect_errors

    对于同一主机,如果有超出该参数值个数的中断错误连接,则该主机将被禁止连接。如需对该主机进行解禁,执行:FLUSH HOST;。

    51. max_delayed_threads

    不要启动多于的这个数字的线程来处理INSERT DELAYED语句。如果你试图在所有INSERT DELAYED线程在用后向一张新表插入数据,行将被插入,就像DELAYED属性没被指定那样。

    52. max_heap_table_size

    内存表所能使用的最大容量。

    53. max_join_size

    如果要查询多于max_join_size个记录的联合将返回一个错误。如果要执行没有一个WHERE的语句并且耗费大量时间,且返回上百万行的联 结,则需要加大该参数值。

    54. max_sort_length

    在排序BLOB或TEXT值时使用的字节数(每个值仅头max_sort_length个字节被使用;其余的被忽略)。

    55. max_user_connections

    指定来自同一用户的最多连接数。设置为0则代表不限制。

    56. max_tmp_tables

    (该参数目前还没有作用)。一个客户能同时保持打开的临时表的最大数量。

    57. max_write_lock_count

    当出现max_write_lock_count个写入锁定数量后,开始允许一些被锁定的读操作开始执行。避免写入锁定过多,读取操作处于长时间等 待状态。

    58. myisam_recover_options

    即为 --myisam-recover 选项的值。

    60.skip-external-locking

    MySQL的配置文件my.cnf中默认存在一行skip-external-locking的参数,即“跳过外部锁定”。根据MySQL开发网站的官方解释,External-locking用于多进程条件下为MyISAM数据表进行锁定。

     如果你有多台服务器使用同一个数据库目录(不建议),那么每台服务器都必须开启external locking;

    参数解释

    当外部锁定(external-locking)起作用时,每个进程若要访问数据表,则必须等待之前的进程完成操作并解除锁定。由于服务器访问数据表时经常需要等待解锁,因此在单服务器环境下external locking会让MySQL性能下降。所以在很多Linux发行版的源中,MySQL配置文件中默认使用了skip-external-locking来避免external locking。

    当使用了skip-external-locking后,为了使用MyISAMChk检查数据库或者修复、优化表,你必须保证在此过程中MySQL服务器没有使用需要操作的表。如果没有停止服务器,也至少需要先运行

    1 mysqladmin flush-tables

    命令,否则数据表可能出现异常。 

    参数使用说明

    如果是多服务器环境,希望打开external locking特征,则注释掉这一行即可

    1

    # skip-external-locking

    如果是单服务器环境,则将其禁用即可,使用如下语句

    1 skip-external-locking

    注意事项

    在老版本的MySQL中,此参数的写法为:

    1 skip-locking

    如果在新版本MySQL配置中依然使用此写法,则可能出现:[Warning] ‘–skip-locking’ is deprecated and will be removed in a future release. Please use ‘–skip-external-locking’ instead.

    61.--skip-name-resolve

    同一IDC ,IDC内部有DNS服务器,对各服务器的IP做了反向解析,
    但未对内网IP做反向解析,所以使用skip-name-resolve以后用内网地址向mysqlslap请求响应快了一半
    附录: 7.5.6. MySQL如何使用DNS
    涉及参数 --skip-name-resolve ,--skip-host-cache ,--skip-networking
    当新的客户连接mysqld时,mysqld创建一个新的线程来处理请求。该线程先检查是否主机名在主机名缓存中。如果不在,线程试图解析主机名:
    ·         如果操作系统支持线程安全gethostbyaddr_r ()和gethostbyname_r()调用,线程使用它们来执行主机名解析。
    ·         如果操作系统不支持线程安全调用,线程锁定一个互斥体并调用gethostbyaddr()和gethostbyname()。在这种情况下,在第1个线程解锁互斥体前,没有其它线程可以解析不在主机名缓存中的主机名。
    你可以用--skip-name-resolve选项启动mysqld来禁用DNS主机名查找。然而,在这种情况下,你只可以使用MySQL中的授权表中的IP号。
    如果你有一个很慢的DNS和许多主机,你可以通过用--skip-name-resolve禁用DNS查找或增加HOST_CACHE_SIZE定义(默认值:128)并重新编译mysqld来提高性能。
    你可以用--skip-host-cache选项启动服务器来禁用主机名缓存。要想清除主机名缓存,执行FLUSH HOSTS语句或执行mysqladmin flush-hosts命令。
    如果你想要完全禁止TCP/IP连接,用--skip-networking选项启动mysqld。
    附录.抓包数据 待补全
    连接mysql时,都会向DNS做反向地址查询
    只有等超时失败后,mysql才会响应客户端
    等待解析的mysql进程都是 login状态

  • 相关阅读:
    POJ 1795 DNA Laboratory
    CodeForces 303B Rectangle Puzzle II
    HDU 2197 本源串
    HDU 5965 扫雷
    POJ 3099 Go Go Gorelians
    CodeForces 762D Maximum path
    CodeForces 731C Socks
    HDU 1231 最大连续子序列
    HDU 5650 so easy
    大话接口隐私与安全 转载
  • 原文地址:https://www.cnblogs.com/simplelogic/p/2798555.html
Copyright © 2011-2022 走看看