mysql高可用配置,mysql最低配置

  mysql高可用配置,mysql最低配置

  参考文章:http://www..net/article/47419.htm

  https://blog..net/waneto2008/article/details/52502208

  1.MySQL配置的原则

  (1)一次只能更改一个设置!这是检验变革是否有益的唯一方法。

  大多数配置可以在运行时使用SET GLOBAL进行更改。这是一种非常方便的方法,它使您能够在出错后快速撤销更改。但是,要做到永久,您需要在配置文件中进行更改。

  (2)一个改变即使重启MySQL也不起作用?请确保使用正确的配置文件。请确保将配置放在正确的区域(本文提到的所有配置都属于[mysqld])

  更改配置后服务器无法启动:请确保您使用的是正确的设备。比如innodb_buffer_pool_size的单位是MB,而max_connection没有单位。

  不要在一个配置文件中有重复的配置项。如果要跟踪更改,请使用版本控制。

  (3)不要用幼稚的计算方法,比如“现在我的服务器内存是以前的两倍,所以我要把所有的值都改成以前的两倍”。

  2.基本配置

  [mysqld]

  ########基本设置######

  服务器id=11

  #表示本机序列号为11,一般表示主控。

  端口=3306

  #MySQL服务端口

  #重要

  bind_address=10.166.224.32

  # Bind IP,增加远程访问IP地址或将其禁用,以便远程机器可以登录并访问它。

  自动提交=0

  #打开自动提交?

  #重要

  character_set_server=utf8

  #数据库的默认字符集

  #老写的是,5.1以后,不推荐这个配置。

  #default-character-set=UTF8

  #重要

  max_connections=800

  # MySQL连接的最大数量。如果服务器的并发连接请求数量很大,建议增加该值以增加并行连接数。

  当然这是建立在机器支持的基础上的,因为如果连接比较多,MySQL会为每个连接提供一个连接缓冲区。

  消耗的内存就越多,所以需要适当调整这个值,不能盲目提高设定值。

  您可以使用 conn% 通配符来检查当前状态下的连接数,以确定该值。

  检查当前Max_connections参数值:

  #对于同一台主机,如果超过该参数值中的中断误连次数,将禁止该主机连接。要解除对该主机的禁止,请执行:FLUSH HOST。

  datadir=/data/mysql_data

  #数据库文件存储目录

  transaction_isolation=读提交

  # MySQL支持4种事务隔离级别,分别是:

  #未提交读取、提交读取、可重复读取、可序列化。

  #如果未指定,MySQL默认为可重复读取,ORACLE默认为提交读取。

  explicit _ defaults _ for _时间戳=1

  #重要

  join_buffer_size=12M

  #联合查询操作可以使用的缓冲区大小与sort_buffer_size相同,该参数对应的分配内存是每个连接独占的。

  tmp_table_size=64M

  #临时堆数据表的最大长度

  tmpdir=/tmp

  #重要

  最大允许数据包=16M

  #接受的数据包大小;增加该变量的值是安全的,因为额外的内存仅在需要时分配。

  #例如,只有当您发出长查询或MySQLd必须返回大的结果行时,MySQLd才会分配更多内存。

  #这个变量之所以有一个较小的默认值,是为了在客户端和服务器之间捕捉错误的数据包,保证不会因为意外使用大数据包而导致内存溢出的一种预防措施。

  sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,

  无_自动_创建_用户

  # SQL模式

  等待超时=1800

  #服务器在关闭非交互连接之前等待活动的秒数。参数默认值:28800秒(8小时)

  #重要

  读取缓冲区大小=16M

  # MySQL读入缓冲区大小。顺序扫描表的请求会分配一个读入缓冲区,MySQL会为它分配一个内存缓冲区。read_buffer_size变量控制这个缓冲区的大小。

  #如果对表的顺序扫描请求非常频繁,而你认为频繁扫描太慢,可以通过增加变量值和内存缓冲区大小来提高其性能。

  读取_ rnd _缓冲区_大小=32M

  # MySQL的随机读取缓冲区大小。当以任何顺序(例如,按排序顺序)读取行时,将分配一个随机读取缓冲区。当对查询进行排序时,

  # MySQL会先扫描这个缓冲区,避免磁盘搜索,提高查询速度。如果需要对大量数据进行排序,可以适当增加这个值。

  但是,MySQL会为每个客户连接释放这个缓冲空间,所以尽量适当地设置这个值,以避免过多的内存开销。

  #重要

  排序缓冲区大小=33554432

  # MySQL用来执行排序的缓冲区大小。如果你想提高排序的速度,首先,看看MySQL是否可以使用索引来代替额外的排序阶段。

  #如果没有,请尝试增加sort_buffer_size变量的大小。

  #重要

  lower _ case _ table _ names=1

  #区分大小写吗?

  ###############日志设置###########

  #重要

  log-bin=bin.log

  #记录所有以二进制格式修改数据的SQL命令(即INSERT、UPDATE和DELETE命令)(二进制更新日志)。

  该日志的文件名是filename.n或默认的hostname.n,其中n是6位整数(日志文件按顺序编号)。

  binlog_format=mixed

  过期日志天数=90

  #bin日志自动删除/过期的天数。默认值为0,表示“不自动删除”

  log_error=错误. log

  #错误日志路径

  #重要

  慢速查询日志=1

  #打开慢速检查日志。

  慢速查询日志文件=慢速日志

  #慢慢检查日志文件

  long_query_time=2

  #超过2秒的慢速查询时间是慢速查询。

  log _ queries _ not _ using _ indexes=1

  #打开未使用的索引查询

  log _ slow _ admin _语句=1

  log_slow_slave_statements=1

  log _ throttle _ queries _ not _ using _ indexes=10

  #参数用于控制日志记录的流程。一分钟能记录多少日志?默认值0表示没有限制。

  最小检查行限制=100

  #像SELECT这样的全表扫描查询.从TBL限制N将被报告为慢速查询,因为它不使用索引,如果-log-queries-not-using-indexes被打开;

  #可以在配置文件中使用min-examined-row-limit=numofrows进行设置。如果要检查的行数大于或等于这个数量,它将被报告为慢速查询。

  ############## innodb设置###########

  innodb_page_size=8192

  #重要

  #每个数据页的大小

  innodb_buffer_pool_size=6G

  # InnoDB使用缓冲池来存储索引和原始数据,这与MyISAM不同。

  #此处的设置越大,访问表中的数据所需的磁盘I/O就越少。

  #在独立的数据库服务器上,可以将此变量设置为服务器物理内存大小的80%。

  #不要设置太大,否则操作系统的换页可能会因为物理内存的竞争而颠簸。

  #请注意,在32位系统上,您的每个进程可能被限制为2-3.5G用户级内存限制,

  #所以不要定的太高。

  #重要

  innodb_buffer_pool_instances=8

  #innodb_buffer_pool_instances可以打开多个内存缓冲池,这些缓冲池被配置为分成8个区域。

  将待缓冲的数据散列到不同的缓冲池中,使内存可以并行读写。

  #可以提高InnoDB的并发性能。如果InnoDB缓存池分为多个区域,建议每个区域不小于1GB。

  innodb _ buff _ pool _ load _ at _ startup=1

  #解释:启动时将热数据加载到内存中。

  innodb _ buffer _ pool _ dump _ at _ shut down=1

  #解释:关机时将热数据转储到本地磁盘。

  #以上两个参数一起使用,MySQL5.6之后提供。

  #在以前的版本中,如果一个高负载的机器重启后,内存中的大量热数据被清空,此时会从磁盘重新加载到Buffer_Pool缓冲池中,

  #这样,在高峰时段,性能会变得很差,连接数会很高。

  innodb_lock_wait_timeout=5

  #MySQL可以自动监控行锁导致的死锁并进行相应的处理,但不能自动监控表锁导致的死锁。

  #所以该参数主要用于类似情况发生时,等待指定时间后回滚。系统默认值为50秒。

  innodb _ undo _ directory=/undo log/

  innodb_undo_logs=128

  innodb_undo_tablespaces=3

  #在MySQL5.6中,支持将撤销日志分离到独立的表空间中,放在单独的文件目录中。

  撤销日志是InnoDB MVCC事务特性的重要组成部分。当我们对记录进行更改时,将会生成撤销记录。默认情况下,还原记录记录在系统表空间(ibdata)中,但是从5.6开始,也可以使用独立的还原表空间。

  撤消记录存储旧版本数据。当一个旧事务需要读取数据时,为了读取旧版本数据,需要沿着撤销链找到满足其可见性的记录。当版本链很长时,通常可以认为是一个耗时的操作。

  innodb_log_file_size=4G

  对于具有高写入吞吐量的系统,需要增加该值,以允许后台检查点活动在更长时间内平稳写入,从而提高性能。将该值设置为4G以下是安全的。过去的实践表明,日志文件过大的缺点是在崩溃时增加了修复时间,但这在5.5和5.6中得到了很大的改善。

  innodb _ large _前缀=1

  innodb_thread_concurrency=64

  innodb_print_all_deadlocks=1

  innodb_strict_mode=1

  innodb _ sort _ buffer _ size=67108864

  #重要

  innodb_file_per_table=1

  # InnoDB是独立的表空间模式,每个数据库的每个表都会生成一个数据空间。

  #独立表空间优势:

  # 1.每个表都有自己独立的表空间。

  # 2.每个表的数据和索引将存在于它自己的表空间中。

  # 3.可以在不同的数据库中移动单个表。

  # 4.可以回收空间(除了drop table操作之外,表空间不能自己回收)

  #缺点:

  #单桌增加太多,比如超过100G。

  #结论:

  #共享表空间在插入操作中没有多少优势。没有什么比独立表空间的性能更好了。启用独立表空间时,请进行合理调整:innodb_open_files

  [mysqld-5.7]

  innodb_buffer_pool_dump_pct=40

  InnoDB_Buffer_Pool缓冲区有两个区域,一个是新块的子列表区域(频繁访问的数据3354热数据),另一个是旧块的子列表区域(不频繁访问的数据)。当用户访问数据时,如果缓冲区中有对应的数据,则直接返回;否则,它将从磁盘读入缓冲区的旧块子列表区,然后移动到新块子列表区,旧数据页将被LRU最近最少使用算法踢出。

  但是,可能会有一个问题。如果一些sql语句扫描整个表进行统计,比如select * from t1,或者做一个MySQLdump,它们会进入new blocks区域的子列表并“踢走”一些真正的热数据,这将导致数据进出缓冲区,并导致频繁的磁盘I/O。

  所以从MySQL 5.5 . x版开始,innodb_old_blocks_pct参数可以控制缓冲区中旧块的子列表数量,默认为37,占总缓冲池的3/8。当整个表扫描一个大表或者做MySQLdump的时候,可以把innodb_old_blocks_pct设置的小一些,比如设置innodb_old_blocks_pct=5,这样数据块进入少量旧块的子列表,移动到新块的子列表,就不会踢出更多的热数据。当您访问一个小表,或者选择查询结果很少时,您可以保留默认的innodb_old_blocks_pct=37,或者将其设置得更大,比如innodb_old_blocks_pct=50。

  3.高级配置

  您需要经常检查以下三个配置项目。不然可能很快就有问题了。

  InnoDB_buffer_pool_size:这是安装InnoDB后应该设置的第一个选项。缓冲池是缓存数据和索引的地方:值越大越好,可以保证你在大多数读取操作中使用内存而不是硬盘。典型值为5-6GB(8GB内存)、20-25GB(32GB内存)和100-120GB(128GB内存)。

  Innodb_log_file_size:这是重做日志的大小。重做日志用于确保写操作快速可靠,并且在崩溃时可以恢复。在MySQL 5.1之前,这是很难调整的,因为一方面你想让它更大以提高性能,另一方面你想让它更小以在崩溃后更快地恢复。好在从MySQL 5.5开始,崩溃恢复的性能有了很大的提升,让你可以同时拥有高写性能和崩溃恢复性能。在MySQL 5.5之前,重做日志的总大小被限制为4GB(默认情况下可以有2个日志文件)。MySQL 5.6对此进行了改进。

  在开始时将innodb_log_file_size设置为512M(这样就有1GB的重做日志)将为您提供足够的写入空间。如果你知道你的应用需要经常写数据,而且你用的是MySQL 5.6,那么一开始就可以把它变成4G。

  Max_connections:如果您经常看到“太多连接”错误,这是因为max_connections的值太低。这很常见,因为应用程序没有正确关闭数据库连接,您需要一个比默认的151连接更大的值。在max_connection值设置得很高(例如,1000或更高)之后,一个主要的缺点是,当运行1000个或更高的活动事务时,服务器将变得没有响应。在应用程序中使用连接池或者在MySQL中使用进程池有助于解决这个问题。

  3.InnoDB配置

  从MySQL版本5.5开始,InnoDB就是默认的存储引擎,它比其他任何存储引擎都用得多。这就是为什么需要精心配置的原因。

  InnoDB_file_per_table:该设置告诉InnoDB是否有必要将所有表的数据和索引存储在一个共享表空间中(innodb_file_per_table=OFF ),或者将每个表的数据放在一个。ibd文件(innodb_file_per_table=ON)。每个表一个文件允许您在删除、截断或重建表时回收磁盘空间。对于一些高级功能,如数据压缩,它也是必要的。但不会带来任何性能上的收益。不希望每个表只有一个文件的主要场景是:有很多表(比如10k)。

  在MySQL 5.6中,这个属性的默认值是ON,所以在大多数情况下你不需要做任何事情。对于以前的版本,必须在加载数据之前将该属性设置为ON,因为它只影响新创建的表。

  Innodb_flush_log_at_trx_commit:默认值为1,这意味着Innodb完全支持ACID特性。当您主要关心数据安全性时,例如在主节点上,这个值是最合适的。但是对于磁盘(读/写)速度慢的系统,会带来巨大的开销,因为每次把flush改成重做日志,都需要额外的fsyncs。将它的值设置为2将导致不可靠性,因为提交的事务每秒钟仅刷新重做日志一次,但对于某些场景(如主节点的备份节点)来说,这是可以接受的。如果值为0,速度会更快,但系统崩溃时可能会丢失部分数据:仅适用于备份节点。

  Innodb_flush_method:这个配置决定了如何将数据和日志写入硬盘。一般来说,如果你有一个硬件RAID控制器,并且它的独立缓存采用了回写机制,并且它有电池掉电保护,那么你应该把它设置为O _ Direct否则,在大多数情况下应该设置为fdatasync(默认值)。Sysbench是一个很好的工具,可以帮助你决定这个选项。

  Innodb_log_buffer_size:这个配置决定了为尚未执行的事务分配的缓存。默认值(1MB)通常就足够了,但是如果您的事务包含大型二进制对象或大型文本字段,这个缓存很快就会被填满,并且会触发额外的I/O操作。查看Innodb_log_waits状态变量。如果不为0,则增加innodb_log_buffer_size。

  其他设置

  Query_cache_size:查询缓存(query cache)是一个众所周知的瓶颈,即使在没有太多并发的情况下也是如此。最好的选择是从一开始就禁用它,设置query_cache_size=0(现在MySQL 5.6的默认值)并使用其他方法来加速查询:优化索引、增加副本分发负载或启用额外的缓存(如memcache或redis)。如果您已经为应用程序启用了查询缓存,并且没有发现任何问题,查询缓存可能对您有用。但是如果你想停止使用它,你必须小心。

  Log_bin:如果想让数据库服务器充当主节点的备份节点,需要打开二进制日志。如果是这样,不要忘记将server_id设置为一个唯一的值。即使只有一台服务器,如果要基于时间点进行数据恢复,这个(打开二进制日志)也很有用:从最近一次备份(完全备份)中恢复,并应用二进制日志中的修改(增量备份)。一旦创建了二进制日志,它将被永久保存。因此,如果您不想耗尽磁盘空间,可以使用清除二进制日志来清除旧文件,或者设置expire_logs_days来指定日志将被自动清除的天数。

  记录二进制日志并不是没有开销的,所以如果在不是主节点的复制节点上不需要它,建议关闭该选项。

  Skip_name_resolve:客户端连接到数据库服务器时,服务器会解析主机名,DNS慢的时候,连接也慢。因此,建议在没有DNS查找的情况下启动服务器时关闭skip_name_resolve选项。的唯一限制是在GRANT语句中只能使用IP地址,因此在将此设置添加到现有系统时必须格外小心。

  阅读延伸

  http://my.oschina.net/liting/blog/387489

  基本上mysql的配置文件都是按照内存大小来选择的,就像有博主说的那样。现在的服务器总是32G内存或者64G内存,甚至更大的内存。你的配置文件最多只支持4G内存是不是有点小?确认会有这样的问题。从mysql5.6开始,为了充分发挥mysql的性能,去掉了配置文件选择,只有一个默认的配置文件。里面只有一些基本的配置,所有的设置管理员都可以根据自己的实际需要进行设置。好了,说了这么多,接下来说说企业用的最多的my-innodb-heavy-4G.cnf配置文件!

  二。详细解释一下my-innodb-heavy-4G.cnf

  1.详细描述

  注:以下是my-innodb-heavy-4g.cnf的默认配置,我没有做任何改动。下面就来详细说说吧!

  #这是一个适用于4GB内存系统的MySQL示例配置文件

  #主要使用InnoDB only表运行MySQL并执行复杂的

  #连接很少的查询。

  # MySQL程序在一组

  #取决于部署平台的位置。

  #您可以将该选项文件复制到其中一个

  #位置。有关这些位置的信息,请参见:

  # http://dev.mysql.com/doc/mysql/en/option-files.html

  #在这个文件中,您可以使用程序支持的所有长选项。

  #如果您想知道程序支持哪些选项,请运行该程序

  #使用- help 选项。

  #有关各个选项的更多详细信息,也可以

  #在手册中找到。

  # MySQL客户端应用程序将读取以下选项。

  #请注意,只有MySQL提供的客户端应用程序有保证

  #阅读此部分。如果您希望自己的MySQL客户端程序

  #考虑这些值,您需要在

  # MySQL客户端库初始化。

  # 以下选项会被关系型数据库客户端应用读取,注意只有关系型数据库附带的客户端应用程序保证可以读取这段内容,如果你想你自己的关系型数据库应用程序获取这些值,需要在关系型数据库客户端库初始化的时候指定这些选项

  [客户]

  # password=[您的密码] #mysql客户端连接关系型数据库时的密码

  port=3306 #mysql客户端连接时的默认端口

  socket=/tmp/mysql.sock #与关系型数据库服务器本地通信所使用的窝文件路径

  # ***具体应用选项如下***

  关系型数据库服务器

  [mysqld]

  #通用配置选项#一般配置选项

  port=3306 #mysql服务器监听的默认端口

  socket=/tmp/MySQL。袜子#套接字本地通信文件路径

  # back_log是操作系统可以保持的连接数

  #监听队列,在关系型数据库连接管理器线程

  #处理它们。如果你有非常高的接通率和经验

  #"连接被拒绝"错误,您可能需要增加该值。

  #查看您的操作系统文档,了解该参数的最大值。

  #试图将后退_日志设置得高于操作系统限制

  #不会有任何影响。

  # back_log是操作系统在监听队列中所能保持的连接数,

  # 队列保存了在关系型数据库连接管理器线程处理之前的连接。

  # 如果你有非常高的连接率并且出现"连接被拒绝"报错,

  # 你就应该增加此处的值。

  # 检查你的操作系统能打开文件数来获取这个变量的最大值。

  # 如果将后退_日志设定到比你操作系统限制更高的值,将会没有效果

  后退_日志=50

  #根本不要侦听传输控制协议端口。这可以是一种安全

  #增强,如果所有需要连接到服务器的进程都运行

  #在同一台主机上。所有与服务器的交互都必须通过Unix操作系统进行

  #套接字或命名管道。

  #请注意,在Windows操作系统上使用此选项而不启用命名管道

  #(通过"启用命名管道"选项)将使服务器变得无用!

  # 不在传输控制协议端口上进行监听。

  # 如果所有的进程都是在同一台服务器连接到本地的mysqld,

  # 这样设置将是增强安全的方法

  # 所有服务器的连接都是通过Unix操作系统套接字或者命名管道进行的。

  # 注意在窗子下如果没有打开命名管道选项而只是用此项

  # (通过"启用命名管道"选项)将会导致关系型数据库服务没有任何作用!

  #跳过网络#默认是没有开启的

  关系型数据库服务器并发会话的最大数量

  #允许。这些连接中的一个将被保留给具有

  #超级权限允许管理员登录,即使

  #已达到连接限制。

  # MySQL服务器所允许的同时会话数的上限

  # 其中一个连接将被极好的权限保留作为管理员登录。

  # 即便已经达到了连接数的上限。

  max_connections=100

  #每台主机允许的最大错误数量。如果达到这个限制,

  #主机将被阻止连接到关系型数据库服务器,直到

  #"刷新主机"已运行或服务器已重新启动。病人

  #连接阶段的密码和其他错误导致

  #增加该值。请参见"中止_连接"状态变量

  #全局计数器。

  # 每个客户端连接最大的错误允许数量,如果达到了此限制。

  # 这个客户端将会被关系型数据库服务阻止直到执行了"刷新主机"或者服务重启

  # 非法的密码以及其他在链接时的错误会增加此值。

  # 查看"中止_连接"状态来获取全局计数器。

  最大连接错误数=10

  #所有线程打开的表的数量。增加该值

  #增加服务器需要的文件描述符的数量。

  #因此,您必须确保设置打开文件的数量

  #在变量打开文件限制中允许至少4096

  # section [mysqld_safe]

  # 所有线程所打开表的数量。

  # 增加此值就增加了服务器所需要的文件描述符的数量

  #因此,您需要确保[mysqld_safe]中的“open-files-limit”变量将打开文件的数量至少设置为2048。

  table_open_cache=2048

  #启用外部文件级锁定。启用的文件锁定将有一个

  #对性能有负面影响,所以只在必要时使用

  #运行在相同文件上的多个数据库实例(注意一些

  #限制仍然适用!)或者如果您使用依赖的其他软件

  #在文件级锁定MyISAM表。

  #允许外部文件级锁定。打开文件锁会对性能产生负面影响

  #因此,只有在对同一个文件运行多个数据库实例时,才使用该选项(注意,仍然会有其他约束!)

  #或者您在文件级使用了一些其他软件依赖项来锁定MyISAM表

  #外部锁定#默认情况下不打开

  #服务器可以处理的查询数据包的最大大小

  #服务器可以处理的最大查询大小(使用时很重要

  #大斑点)。为每个连接动态放大。

  #服务可以处理的请求数据包的最大大小和服务可以处理的最大请求大小(在处理大型BLOB字段时非常必要)

  #每个连接的独立大小。大小会动态增加

  最大允许数据包=16M

  #保存二进制日志的SQL语句的高速缓存的大小

  #在交易过程中。如果你经常使用大,多语句

  # transactions您可以增加该值以获得更高的性能。全部

  #来自事务的语句缓冲在二进制日志缓存中,并且

  #在提交后立即被写入二进制日志。如果

  # transaction大于该值,使用磁盘上的临时文件

  #相反。该缓冲区是在第一次更新时为每个连接分配的

  #交易中的语句

  # binlog在事务中保存的用于记录SQL状态的高速缓存大小

  #如果您经常使用大型的多声明事务,您可以增加该值以获得更好的性能。

  #来自事务的所有状态将被缓冲在binlog缓冲区中,然后在提交后被写入binlog一次。

  #如果事务大于该值,将使用磁盘上的临时文件。

  #当每个连接的事务第一次更新其状态时,创建该缓冲区。

  binlog_cache_size=1M

  #单个堆(在内存中)表的最大允许大小。这个选项

  #是防止意外创建非常大的堆的保护措施

  #否则可能会耗尽所有内存资源的表。

  #独立内存表允许的最大容量。

  #该选项是为了防止意外创建超大内存表,导致所有内存资源永远耗尽。

  最大堆表大小=64M

  #用于执行全表扫描的缓冲区大小。

  #如果需要全扫描,则按线程分配。

  #MySql读入缓冲区大小。顺序扫描表的请求会分配一个读入缓冲区,MySql会为它分配一个内存缓冲区。read_buffer_size变量控制这个缓冲区的大小。如果对表的顺序扫描请求非常频繁,#并且您认为频繁扫描太慢,您可以通过增加变量值和内存缓冲区大小来提高其性能。

  读取缓冲区大小=2M

  #在排序后按排序顺序读取行时,将读取这些行

  #通过此缓冲区来避免磁盘寻道。您可以通过以下方式改善秩序

  #如果将此项设置为较高的值,性能会提高很多。

  #在需要时按线程分配。

  #是MySql的随机读取缓冲区大小。当以任何顺序(例如,按排序顺序)读取行时,将分配一个随机读取缓冲区。在查询排序时,MySql会先扫描缓冲区,避免磁盘搜索,提高查询速度。如果需要对大量数据进行排序,可以适当增加这个值。但是MySql会为每个客户连接释放这个缓冲空间,所以要尽可能适当设置,避免过多的内存开销。

  读取_ rnd _缓冲区_大小=16M

  # Sort buffer用于对某些ORDER BY和GROUP BY进行排序

  #查询。如果排序的数据不适合排序缓冲区,磁盘

  改为使用基于#的合并排序-参见 Sort_merge_passes

  #状态变量。如果需要排序,则按线程分配。

  # 排序缓冲被用来处理类似以.排序以及分组依据队列所引起的排序

  # 如果排序后的数据无法放入排序缓冲,

  # 一个用来替代的基于磁盘的合并分类会被使用

  # 查看"排序_合并_传递"状态变量。

  # 在排序发生时由每个线程分配

  排序缓冲区大小=8M

  #该缓冲区用于优化完全连接(没有

  #索引)。在大多数情况下,这样的连接对性能非常不利

  #无论如何,但是将这个变量设置为一个大的值会减少

  #性能影响。请参见" Select_full_join "状态变量

  #完全连接的计数。如果找到完全联接,则按线程分配

  # 此缓冲被使用来优化全联合(完全连接不带索引的联合).

  # 类似的联合在极大多数情况下有非常糟糕的性能表现,

  # 但是将此值设大能够减轻性能影响。

  # 通过" Select_full_join "状态变量查看全联合的数量

  # 当全联合发生时,在每个线程中分配

  join_buffer_size=8M

  #我们应该在缓存中保留多少线程以便重用。当一个客户

  #断开连接,客户端的线程被放入缓存,如果没有

  #超过线程缓存大小之前的线程数。这大大降低了

  #如果您有许多新的线程,则需要创建大量线程

  #连接。(通常这不会产生显著的性能

  #如果你有一个好的线程实现,这是一个进步。)

  # 我们在躲藏中保留多少线程用于重用

  # 当一个客户端断开连接后,如果躲藏中的线程还少于线程缓存大小,

  # 则客户端线程被放入躲藏中。

  # 这可以在你需要大量新连接的时候极大的减少线程创建的开销

  # (一般来说如果你有好的线程模型的话,这不会有明显的性能提升。)

  thread_cache_size=8

  #这允许应用程序向线程系统提示

  #应同时运行的线程的期望数量。这

  #值只有在支持线程并发()的系统上才有意义

  #函数调用(例如太阳太阳系).

  #您应该尝试中央处理器(central processing units的缩写)数量]*(2.4)对于线程并发

  # 此允许应用程序给予线程系统一个提示在同一时间给予渴望被运行的线程的数量。

  # 此值只对于支持线程并发()函数的系统有意义(例如太阳索拉里斯)。

  # 你可可以尝试使用[CPU数量]*(2.4) 来作为线程并发的值

  线程并发=8

  #查询缓存用于缓存选择结果并在以后返回它们

  #无需再次实际执行相同的查询。有了疑问

  #启用缓存可能会显著提高速度,如果您的

  #有很多相同的查询,很少改变表。参见

  # Qcache _ lowmem _ prunes 状态变量来检查当前值

  #对于您的负载来说已经足够高了。

  #注意:如果您的表经常更改或者您的查询

  #文本每次都不同,查询缓存可能会导致

  #性能下降而不是提高。

  # 查询缓冲常被用来缓冲挑选的结果并且在下一次同样查询的时候不再执行直接返回结果。

  # 打开查询缓冲可以极大的提高服务器速度,如果你有大量的相同的查询并且很少修改表。

  # 查看" Qcache_lowmem_prunes "状态变量来检查是否当前值对于你的负载来说是否足够高。

  # 注意:在你表经常变化的情况下或者如果你的查询原文每次都不同,

  # 查询缓冲也许引起性能下降而不是性能提升。

  查询缓存大小=64M

  #仅缓存小于此限制的结果集。这是为了

  #保护非常大的结果集的查询缓存,覆盖所有

  #其他查询结果。

  # 只有小于此设定值的结果才会被缓冲

  # 此设置用来保护查询缓冲,防止一个极大的结果集将其他所有的查询结果都覆盖。

  查询缓存限制=2M

  #全文搜索索引要索引的最小单词长度。

  #如果您需要搜索更短的单词,您可能希望减少它。

  #请注意,您需要

  rebuild your FULLTEXT index, after you have

  # modified this value.

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

  # 你也许希望减少它,如果你需要搜索更短字的时候.

  # 注意在你修改此值之后,

  # 你需要重建你的 FULLTEXT 索引

  ft_min_word_len = 4

  # If your system supports the memlock() function call, you might want to

  # enable this option while running MySQL to keep it locked in memory and

  # to avoid potential swapping out in case of high memory pressure. Good

  # for performance.

  # 如果你的系统支持 memlock() 函数,你也许希望打开此选项用以让运行中的mysql在在内存高度紧张的时候,数据在内存中保持锁定并且防止可能被swapping out

  # 此选项对于性能有益

  #memlock

  # Table type which is used by default when creating new tables, if not

  # specified differently during the CREATE TABLE statement.

  # 当创建新表时作为默认使用的表类型,

  # 如果在创建表示没有特别执行表类型,将会使用此值

  default-storage-engine = MYISAM

  # Thread stack size to use. This amount of memory is always reserved at

  # connection time. MySQL itself usually needs no more than 64K of

  # memory, while if you use your own stack hungry UDF functions or your

  # OS requires more stack for some operations, you might need to set this

  # to a higher value.

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

  # MySQL 本身常不会需要超过64K的内存

  # 如果你使用你自己的需要大量堆的UDF函数

  # 或者你的操作系统对于某些操作需要更多的堆,

  # 你也许需要将其设置的更高一点.

  thread_stack = 192K

  # Set the default transaction isolation level. Levels available are:

  # 设定默认的事务隔离级别.可用的级别如下:

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

  transaction_isolation = REPEATABLE-READ

  # Maximum size for internal (in-memory) temporary tables. If a table

  # grows larger than this value, it is automatically converted to disk

  # based table This limitation is for a single table. There can be many

  # of them.

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

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

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

  tmp_table_size = 64M

  # Enable binary logging. This is required for acting as a MASTER in a

  # replication configuration. You also need the binary log if you need

  # the ability to do point in time recovery from your latest backup.

  # 打开二进制日志功能.

  # 在复制(replication)配置中,作为MASTER主服务器必须打开此项

  # 如果你需要从你最后的备份中做基于时间点的恢复,你也同样需要二进制日志.

  log-bin=mysql-bin

  # binary logging format - mixed recommended

  #设定记录二进制日志的格式,有三种格式,基于语句 statement、 基于行 row、 混合方式 mixed

  binlog_format=mixed

  # If youre using replication with chained slaves (A- B- C), you need to

  # enable this option on server B. It enables logging of updates done by

  # the slave thread into the slaves binary log.

  # 如果你在使用链式从服务器结构的复制模式 (A- B- C),

  # 你需要在服务器B上打开此项.

  # 此选项打开在从线程上重做过的更新的日志,

  # 并将其写入从服务器的二进制日志.

  #log_slave_updates

  # Enable the full query log. Every query (even ones with incorrect

  # syntax) that the server receives will be logged. This is useful for

  # debugging, it is usually disabled in production use.

  # 打开查询日志. 所有的由服务器接收到的查询 (甚至对于一个错误语法的查询)

  # 都会被记录下来. 这对于调试非常有用, 在生产环境中常常关闭此项.

  #log #默认是没有开启。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • 使用php连接mysql数据库,php连接数据库的方法
  • 使用php连接mysql数据库,php连接数据库的方法,一文详解PHP连接MySQL数据库的三种方式
  • pymysql菜鸟教程,pymysql 使用
  • pymysql菜鸟教程,pymysql 使用,pymysql模块使用简介与示例
  • mysql锁实现,mysql锁算法
  • mysql锁实现,mysql锁算法,MySQL锁机制与用法分析
  • mysql连接报错10061,mysql连接错误10060
  • mysql连接报错10061,mysql连接错误10060,MYSQL无法连接 提示10055错误的解决方法
  • mysql连接报10060错误,mysql连接报错10055
  • mysql连接报10060错误,mysql连接报错10055,MySQL连接异常报10061错误问题解决
  • mysql辅助索引和主键索引,mysql 主键 外键 索引
  • mysql辅助索引和主键索引,mysql 主键 外键 索引,MySQL索引之主键索引
  • MySQL语句大全,mysql常见语句总结
  • MySQL语句大全,mysql常见语句总结,MySQL语句整理及汇总介绍
  • mysql触发器的使用方法实验报告,mysql中触发器的使用
  • 留言与评论(共有 条评论)
       
    验证码: