旗下导航:搜·么
当前位置:网站首页 > MySQL教程 > 正文

MySQL设置参数的细致引见【MySQL教程】,MySQL

作者:搜教程发布时间:2019-12-01分类:MySQL教程浏览:48评论:0


导读:本篇文章给人人带来的内容是关于MySQL设置参数的细致引见,有肯定的参考价值,有须要的朋侪可以参考一下,愿望对你有所协助。#以下选项会被MySQL客户端应用读取。#...
本篇文章给人人带来的内容是关于MySQL设置参数的细致引见,有肯定的参考价值,有须要的朋侪可以参考一下,愿望对你有所协助。

# 以下选项会被MySQL客户端应用读取。

# 注重只要mysql附带的客户端应用程序保证可以读取这段内容。

# 假如你想你自身的MySQL应用程序猎取这些值。

# 须要在MySQL客户端库初始化的时刻指定这些选项。

#

[client]

#password = [your_password]

port = @MYSQL_TCP_PORT@

socket = @MYSQL_UNIX_ADDR@

# *** 应用定制选项 ***

#

# MySQL 效劳端

#

[mysqld]

# 平常设置选项

port = @MYSQL_TCP_PORT@

socket = @MYSQL_UNIX_ADDR@

# back_log 是操纵体系在监听行列中所能坚持的衔接数,

# 行列保存了在 MySQL 衔接管理器线程处置惩罚之前的衔接.

# 假如你有异常高的衔接率而且涌现 “connection refused” 报错,

# 你就应当增添此处的值.

# 搜检你的操纵体系文档来猎取这个变量的最大值.

# 假如将back_log设定到比你操纵体系限定更高的值,将会没有效果

back_log = 300

# 不在 TCP/IP 端口上举行监听.

# 假如一切的历程都是在统一台效劳器衔接到当地的 mysqld,

# 如许设置将是加强平安的要领

# 一切 mysqld 的衔接都是经由过程 Unix Sockets 或许定名管道举行的.

# 注重在 Windows下假如没有翻开定名管道选项而只是用此项

# (经由过程 “enable-named-pipe” 选项) 将会致使 MySQL 效劳没有任何作用!

#skip-networking

# MySQL 效劳所许可的同时会话数的上限

# 个中一个衔接将被 SUPER 权限保存作为管理员登录.

# 纵然已到达了衔接数的上限.

max_connections = 3000

# 每一个客户端衔接最大的毛病许可数目,假如到达了此限定.

# 这个客户端将会被 MySQL 效劳阻挠直到实行了 “FLUSH HOSTS” 或许效劳重启

# 不法的暗码以及其他在链接时的毛病会增添此值.

# 检察 “Aborted_connects” 状况来猎取全局计数器.

max_connect_errors = 50

# 一切线程所翻开表的数目.

# 增添此值就增添了 mysqld 所须要的文件形貌符的数目

# 如许你须要确认在 [mysqld_safe] 中 “open-files-limit” 变量设置翻开文件数目许可最少即是 table_cache 的值

table_open_cache = 4096

# 许可外部文件级别的锁. 翻开文件锁会对机能形成负面影响

# 所以只要在你在一样的文件上运转多个数据库实例时才应用此选项(注重仍会有其他束缚!)

# 或许你在文件层面上应用了其他一些软件依靠来锁定 MyISAM 表

#external-locking

# 效劳所能处置惩罚的请求包的最大大小以及效劳所能处置惩罚的最大的请求大小(当与大的 BLOB 字段一同事情时相称必要)

# 每一个衔接自力的大小,大小动态增添

max_allowed_packet = 32M

# 在一个事件中 binlog 为了纪录 SQL 状况所持有的 cache 大小

# 假如你经常应用大的,多声明的事件,你可以增添此值来猎取更大的机能.

# 一切从事件来的状况都将被缓冲在 binlog 缓冲中然后在提交后一次性写入到 binlog 中

# 假如事件比此值大, 会应用磁盘上的暂时文件来替代.

# 此缓冲在每一个衔接的事件第一次更新状况时被建立

binlog_cache_size = 4M

# 自力的内存表所许可的最大容量.

# 此选项为了防备不测建立一个超大的内存表致使永尽一切的内存资本.

max_heap_table_size = 128M

# 随机读取数据缓冲区应用内存(read_rnd_buffer_size):和递次读取相对应,

# 当 MySQL 举行非递次读取(随机读取)数据块的时刻,会应用>这个缓冲区暂存读取的数据

# 如依据索引信息读取表数据,依据排序后的效果集与表举行 Join 等等

# 总的来讲,就是当数据块的读取须要满足>肯定的递次的状况下,MySQL 就须要发作随机读取,进而应用到 read_rnd_buffer_size 参数所设置的内存缓冲区

read_rnd_buffer_size = 16M

# 排序缓冲被用来处置惩罚相似 ORDER BY 以及 GROUP BY 行列所引发的排序

# 假如排序后的数据没法放入排序缓冲,一个用来替代的基于磁盘的兼并分类会被应用

# 检察 “Sort_merge_passes” 状况变量.

# 在排序发作时由每一个线程分派

sort_buffer_size = 16M

# 此缓冲被应用来优化全团结(FULL JOINS 不带索引的团结).

# 相似的团结在极大多半状况下有异常蹩脚的机能表现,然则将此值设大可以减轻机能影响.

# 经由过程 “Select_full_join” 状况变量检察全团结的数目

# 当全团结发作时,在每一个线程中分派

join_buffer_size = 16M

# 我们在 cache 中保存若干线程用于重用

# 当一个客户端断开衔接后,假如 cache 中的线程还少于 thread_cache_size,则客户端线程被放入cache 中.

# 这可以在你须要大批新衔接的时刻极大的削减线程建立的开支

# (平常来讲假如你有好的线程模子的话,这不会有显著的机能提拔.)

thread_cache_size = 16

# 此许可应用程序赋予线程体系一个提醒在统一时候赋予盼望被运转的线程的数目.

# 此值只关于支撑 thread_concurrency() 函数的体系有意义( 比方Sun Solaris).

# 你可可以尝试应用 [CPU数目]*(2..4) 来作为 thread_concurrency 的值

thread_concurrency = 8

# 查询缓冲常被用来缓冲 SELECT 的效果而且在下一次一样查询的时刻不再实行直接返回效果.

# 翻开查询缓冲可以极大的进步效劳器速率, 假如你有大批的雷同的查询而且很少修正表.

# 检察 “Qcache_lowmem_prunes” 状况变量来搜检是不是当前值关于你的负载来讲是不是充足高.

# 注重: 在你表经常变化的状况下或许假如你的查询原文每次都差别,

# 查询缓冲或许引发机能下落而不是机能提拔.

query_cache_size = 128M

# 只要小于此设定值的效果才会被缓冲

# 此设置用来庇护查询缓冲,防备一个极大的效果集将其他一切的查询效果都掩盖.

query_cache_limit = 4M

# 被全文检索索引的最小的字长.

# 你或许愿望削减它,假如你须要搜刮更短字的时刻.

# 注重在你修正此值以后,你须要重修你的 FULLTEXT 索引

ft_min_word_len = 8

# 假如你的体系支撑 memlock() 函数,你或许愿望翻开此选项用以让运转中的 mysql 在在内存高度慌张的时刻,数据在内存中坚持锁定而且防备能够被 swapping out

# 此选项关于机能有益

#memlock

# 当建立新表时作为默许应用的表范例,

# 假如在建立示意没有迥殊实行表范例,将会应用此值

default_table_type = InnoDB

# 线程应用的堆大小. 此容量的内存在每次衔接时被预留.

# MySQL 自身常不会须要凌驾 64K 的内存

# 假如你应用你自身的须要大批堆的 UDF 函数或许你的操纵体系关于某些操纵须要更多的堆,你或许须要将其设置的更高一点.

thread_stack = 512K

# 设定默许的事件断绝级别.可用的级别以下:

# READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE

transaction_isolation = REPEATABLE-READ

# 内部(内存中)暂时表的最大大小

# 假如一个表增长到比此值更大,将会自动转换为基于磁盘的表.

# 此限定是针对单个表的,而不是总和.

tmp_table_size = 128M

# 翻开二进制日记功用.

# 在复制(replication)设置中,作为 MASTER 主效劳器必需翻开此项

# 假如你须要从你末了的备份中做基于时候点的恢复,你也一样须要二进制日记.

log-bin=mysql-bin

# 假如你在应用链式从效劳器构造的复制形式 (A->B->C),

# 你须要在效劳器B上翻开此项.

# 此选项翻开在从线程上重做过的更新的日记, 并将其写入从效劳器的二进制日记.

#log_slave_updates

# 翻开全查询日记. 一切的由效劳器接收到的查询 (以至关于一个毛病语法的查询)

# 都邑被纪录下来. 这关于调试异常有效, 在生产环境中经常封闭此项.

#log

# 将正告打印输出到毛病 log 文件. 假如你关于 MySQL 有任何题目

# 你应当翻开正告 log 而且细致检察毛病日记,查出能够的缘由.

#log_warnings

# 纪录慢速查询. 慢速查询是指斲丧了比 “long_query_time” 定义的更多时候的查询.

# 假如 log_long_format 被翻开,那些没有应用索引的查询也会被纪录.

# 假如你经常增添新查询到已有的体系内的话. 平常来讲这是一个好主意,

log_slow_queries

# 一切的应用了比这个时候(以秒为单元)更多的查询会被以为是慢速查询.

# 不要在这里应用“1″, 不然会致使一切的查询,以至异常快的查询页被纪录下来(由于 MySQL 现在时候的精确度只能到达秒的级别).

long_query_time = 6

# 在慢速日记中纪录更多的信息.

# 平常此项最好翻开.

# 翻开此项会纪录使得那些没有应用索引的查询也被作为到慢速查询附加到慢速日记里

log_long_format

# 此目次被MySQL用来保存暂时文件.比方,

# 它被用来处置惩罚基于磁盘的大型排序,和内部排序一样.

# 以及简朴的暂时表.

# 假如你不建立异常大的暂时文件,将其安排到 swapfs/tmpfs 文件体系上或许比较好

# 另一种挑选是你也可以将其安排在自力的磁盘上.

# 你可以应用”;”来安排多个途径

# 他们会根据 roud-robin 要领被轮询应用.

#tmpdir = /tmp

# *** 主从复制相干的设置

# 唯一的效劳辨识号,数值位于 1 到 2^32-1之间.

# 此值在master和slave上都须要设置.

# 假如 “master-host” 没有被设置,则默许为1, 然则假如疏忽此选项,MySQL不会作为master见效.

server-id = 1

# 复制的Slave (去掉master段的解释来使其见效)

#

# 为了设置此主机作为复制的slave效劳器,你可以挑选两种要领:

#

# 1) 应用 CHANGE MASTER TO 敕令 (在我们的手册中有完全形貌) -

# 语法以下:

#

# CHANGE MASTER TO MASTER_HOST=, MASTER_PORT=,

# MASTER_USER=, MASTER_PASSWORD= ;

#

# 你须要替代掉 , , 等被尖括号围困的字段以及应用master的端口号替代 (默许3306).

#

# 例子:

#

# CHANGE MASTER TO MASTER_HOST=’125.564.12.1′, MASTER_PORT=3306,

# MASTER_USER=’joe’, MASTER_PASSWORD=’secret’;

#

# 或许

#

# 2) 设置以下的变量. 不论如何, 在你挑选这类要领的状况下, 然后第一次启动复制(以至不胜利的状况下,

# 比方假如你输入错暗码在master-password字段而且slave没法衔接),

# slave会建立一个 master.info 文件,而且以后任何关于包括在此文件内的参数的变化都邑被疏忽

# 而且由 master.info 文件内的内容掩盖, 除非你封闭slave效劳, 删除 master.info 而且重启slave 效劳.

# 由于这个缘由,你或许不想碰一下的设置(解释掉的) 而且应用 CHANGE MASTER TO (检察上面) 来替代

#

# 所须要的唯一id号位于 2 和 2^32 – 1之间

# (而且和master差别)

# 假如master-host被设置了.则默许值是2

# 然则假如省略,则不会见效

#server-id = 2

#

# 复制构造中的master – 必需

#master-host =

#

# 当衔接到master上时slave所用来认证的用户名 – 必需

#master-user =

#

# 当衔接到master上时slave所用来认证的暗码 – 必需

#master-password =

#

# master监听的端口.

# 可选 – 默许是3306

#master-port =

# 使得slave只读.只要用户具有SUPER权限和在上面的slave线程可以修正数据.

# 你可以应用此项去保证没有应用程序会不测的修正slave而不是master上的数据

#read_only

#*** MyISAM 相干选项

# 关键词缓冲的大小, 平常用来缓冲 MyISAM 表的索引块.

# 不要将其设置大于你可用内存的30%,

# 由于一部份内存一样被OS用来缓冲行数据

# 以至在你并不应用 MyISAM 表的状况下, 你也须要依旧设置起 8-64M 内存由于它一样会被内部暂时磁盘表应用.

key_buffer_size = 128M

# 用来做 MyISAM 表全表扫描的缓冲大小.

# 当全表扫描须要时,在对应线程中分派.

read_buffer_size = 8M

# 当在排序以后,从一个已排序好的序列中读取行时,行数据将从这个缓冲中读取来防备磁盘寻道.

# 假如你增高此值,可以进步许多 ORDER BY 的机能.

# 当须要时由每一个线程分派

read_rnd_buffer_size = 64M

# MyISAM 应用特别的相似树的 cache 来使得突发插进去

# (这些插进去是,INSERT … SELECT, INSERT … VALUES (…), (…), …, 以及 LOAD DATA INFILE) 更快.

# 此变量限定每一个历程中缓冲树的字节数.

# 设置为 0 会封闭此优化.

# 为了最优化不要将此值设置大于 “key_buffer_size”.

# 当突发插进去被检测到时此缓冲将被分派.

bulk_insert_buffer_size = 256M

# 此缓冲当 MySQL 须要在 REPAIR, OPTIMIZE, ALTER 以及 LOAD DATA INFILE 到一个空表中引发重修索引时被分派.

# 这在每一个线程中被分派.所以在设置大值时须要警惕.

myisam_sort_buffer_size = 256M

# MySQL 重修索引时所许可的最大暂时文件的大小 (当 REPAIR, ALTER TABLE 或许 LOAD DATA INFILE).

# 假如文件大小比此值更大,索引会经由过程键值缓冲建立(更慢)

myisam_max_sort_file_size = 10G

# 假如被用来更快的索引建立索引所应用暂时文件大于制订的值,那就应用键值缓冲要领.

# 这重要用来强迫在大表中长字串键去应用慢速的键值缓冲要领来建立索引.

myisam_max_extra_sort_file_size = 10G

# 假如一个表具有凌驾一个索引, MyISAM 可以经由过程并行排序应用凌驾一个线程去修复他们.

# 这关于具有多个 CPU 以及大批内存状况的用户,是一个很好的挑选.

myisam_repair_threads = 1

# 自动搜检和修复没有恰当封闭的 MyISAM 表.

myisam_recover

# 默许封闭 Federated

skip-federated

# *** BDB 相干选项 ***

# 假如你运转的MySQL效劳有BDB支撑然则你不准备应用的时刻应用此选项. 这会节约内存而且能够加快一些事.

skip-bdb

# *** INNODB 相干选项 ***

# 假如你的 MySQL 效劳包括 InnoDB 支撑然则并不盘算应用的话,

# 应用此选项会节约内存以及磁盘空间,而且加快某些部份

#skip-innodb

# 附加的内存池被 InnoDB 用来保存 metadata 信息(5.6中不再引荐应用)

# 假如 InnoDB 为此目标须要更多的内存,它会最先从 OS 这里请求内存.

# 由于这个操纵在大多半当代操纵体系上已充足快, 你平常不须要修正此值.

# SHOW INNODB STATUS 敕令会显现当先应用的数目.

innodb_additional_mem_pool_size = 64M

# InnoDB应用一个缓冲池来保存索引和原始数据, 不像 MyISAM.

# 这里你设置越大,这能保证你在大多半的读取操纵时应用的是内存而不是硬盘,在存取表内里数据时所须要的磁盘 I/O 越少.

# 在一个自力应用的数据库效劳器上,你可以设置这个变量到效劳器物理内存大小的80%

# 不要设置过大,不然,由于物理内存的合作能够致使操纵体系的换页颠簸.

# 注重在32位体系上你每一个历程能够被限定在 2-3.5G 用户层面内存限定,

# 所以不要设置的太高.

innodb_buffer_pool_size = 6G

# InnoDB 将数据保存在一个或许多个数据文件中成为表空间.

# 假如你只要单个逻辑驱动保存你的数据,一个单个的自增文件就充足好了.

# 其他状况下.每一个装备一个文件平常都是个好的挑选.

# 你也可以设置 InnoDB 来应用裸盘分区 – 请参考手册来猎取更多相干内容

innodb_data_file_path = ibdata1:10M:autoextend

# 设置此选项假如你愿望InnoDB表空间文件被保存在其他分区.

# 默许保存在MySQL的datadir中.

#innodb_data_home_dir =

# 用来同步IO操纵的IO线程的数目.

# 此值在Unix下被硬编码为8,然则在Windows磁盘I/O能够在一个大数值下表现的更好.

innodb_file_io_threads = 8

# 假如你发明 InnoDB 表空间破坏, 设置此值为一个非零值能够协助你导出你的表.

# 从1最先而且增添此值晓得你可以胜利的导出表.

#innodb_force_recovery=1

# 在 InnoDb 核心内的许可线程数目.

# 最优值依靠于应用程序,硬件以及操纵体系的调理体式格局.

# 太高的值能够致使线程的互斥颠簸.

innodb_thread_concurrency = 16

# 假如设置为1 ,InnoDB 会在每次提交后革新(fsync)事件日记到磁盘上,

# 这供应了完全的 ACID 行动.

# 假如你情愿对事件平安折中, 而且你正在运转一个小的事物, 你可以设置此值到0或许2来削减由事件日记引发的磁盘I/O

# 0代表日记只约莫每秒写入日记文件而且日记文件革新到磁盘.

# 2代表日记写入日记文件在每次提交后,然则日记文件只要约莫每秒才会革新到磁盘上.

innodb_flush_log_at_trx_commit = 2

(申明:假如是游戏效劳器,发起此值设置为2;假如是对数据平安请求极高的应用,发起设置为1;设置为0机能最高,但假如发作毛病,数据能够会有丧失的风险!默许值1的意义是每一次事件提交或事件外的指令都须要把日记写入(flush)硬盘,这是很费时的。迥殊是应用电池供电缓存(Battery backed up cache)时。设成2关于许多应用,迥殊是从MyISAM表转过来的是可以的,它的意义是不写入硬盘而是写入体系缓存。日记仍然会每秒flush到硬盘,所以你平常不会丧失凌驾1-2秒的更新。设成0会更快一点,但平安方面比较差,纵然MySQL挂了也能够会丧失事件的数据。而值2只会在全部操纵体系挂了时才能够丢数据。)

# 加快 InnoDB 的封闭. 这会阻挠 InnoDB 在封闭时做全消灭以及插进去缓冲兼并.

# 这能够极大增添关机时候, 然则取而代之的是 InnoDB 能够在下次启动时做这些操纵.

#innodb_fast_shutdown

# 用来缓冲日记数据的缓冲区的大小.

# 当此值快满时, InnoDB 将必需革新数据到磁盘上.

# 由于基本上每秒都邑革新一次,所以没有必要将此值设置的太大(以至关于长事件而言)

innodb_log_buffer_size = 16M

# 在日记组中每一个日记文件的大小.

# 你应当设置日记文件总合大小到你缓冲池大小的25%~100%

# 来防止在日记文件覆写上不必要的缓冲池革新行动.

# 不论如何, 请注重一个大的日记文件大小会增添恢复历程所须要的时候.

innodb_log_file_size = 512M

# 在日记组中的文件总数.

# 一般来讲2~3是比较好的.

innodb_log_files_in_group = 3

# InnoDB 的日记文件所在位置. 默许是 MySQL 的 datadir.

# 你可以将其指定到一个自力的硬盘上或许一个RAID1卷上来进步其机能

#innodb_log_group_home_dir

# 在 InnoDB 缓冲池中最大许可的脏页面的比例.

# 假如到达限额, InnoDB 会最先革新他们防备他们阻碍到清洁数据页面.

# 这是一个软限定,不被保证相对实行.

innodb_max_dirty_pages_pct = 90

# InnoDB 用来革新日记的要领.

# 表空间老是应用两重写入革新要领

# 默许值是 “fdatasync”, 另一个是 “O_DSYNC”.

# 平常来讲,假如你有硬件 RAID 控制器,而且其自力缓存采纳 write-back 机制,并有着电池断电庇护,那末应当设置设置为 O_DIRECT

# 不然,大多半状况下应将其设为 fdatasync

#innodb_flush_method=fdatasync

# 在被回滚前,一个 InnoDB 的事件应当守候一个锁被同意多久.

# InnoDB 在其具有的锁表中自动检测事件死锁而且回滚事件.

# 假如你应用 LOCK TABLES 指令, 或许在一样事件中应用除了 InnoDB 之外的其他事件平安的存储引擎

# 那末一个死锁能够发作而 InnoDB 没法注重到.

# 这类状况下这个 timeout 值关于处理这类题目就异常有协助.

innodb_lock_wait_timeout = 120

# 这项设置示知InnoDB是不是须要将一切表的数据和索引存放在同享表空间里(innodb_file_per_table = OFF) 或许为每张表的数据零丁放在一个.ibd文件(innodb_file_per_table = ON)

# 每张表一个文件许可你在drop、truncate或许rebuild表时接纳磁盘空间

# 这关于一些高等特征也是有必要的,比方数据压缩,然则它不会带来任何机能收益

innodb_file_per_table = on

[mysqldump]

# 不要在将内存中的全部效果写入磁盘之前缓存. 在导出异常庞大的表时须要此项

quick

max_allowed_packet = 32M

[mysql]

no-auto-rehash

# 仅仅许可应用键值的 UPDATEs 和 DELETEs .

#safe-updates

[myisamchk]

key_buffer = 16M

sort_buffer_size = 16M

read_buffer = 8M

write_buffer = 8M

[mysqlhotcopy]

interactive-timeout

[mysqld_safe]

# 增添每一个历程的可翻开文件数目.

# 正告: 确认你已将全体系限定设定的充足高!

# 翻开大批表须要将此值设大

open-files-limit = 8192

以上就是MySQL设置参数的细致引见的细致内容,更多请关注ki4网别的相干文章!

标签:MySQL


欢迎 发表评论: