创新路
我们一直在努力

MySQL优化运行配置方案 my.ini文件说明

在mysql中安装成功后,在mysql根目录中有五个配置信息文件:

my-small.ini (内存 <= 64M)

my-medium.ini (内存 128M )

my-large.ini (内存 512M)

my-huge.ini (内存 1G-2G)

my-innodb-heavy-4G.ini (内存 4GB)

下面我们来介绍一下它们的用处。

my-small.ini是为了小型数据库而设计的。不应该把这个模型用于含有一些常用项目的数据库。

my-medium.ini是为中等规模的数据库而设计的。如果你正在企业中使用RHEL,可能会比这个操作系统的最小RAM需求(256MB)明显多得多的物理内存。由此可见,如果有那么多RAM内存可以使用,自然可以在同一台机器上运行其它服务。

my-large.ini是为专用于一个SQL数据库的计算机而设计的。由于它可以为该数据库使用多达512MB的内存,所以在这种类型的系统上将需要至少1GB的RAM,以便它能够同时处理操作系统与数据库应用程序。

my-huge.ini是为企业中的数据库而设计的。这样的数据库要求专用服务器和内存在1G-2G左右。

my-innodb-heavy-4G.ini 这个配置文件主要是,支持4G内存,支持InnoDB引擎,支持事务(ACID)等特性所使用!

配置my-innodb-heavy-4G.ini说明:

[client] 

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

socket    = /tmp/mysql.sock #与mysql服务器本地通信所使用的socket文件路径

[mysqld]

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

socket    = /tmp/mysql.sock #socket本地通信文件路径

back_log = 50

#操作系统在监听队列中所能保持的连接数,队列保存了在MySQL连接管理器线程处理之前的连接. 如果你有非常高的连接率并且出现“connection refused”报错, 你就应该增加此处的值. 检查你的操作系统能打开文件数来获取这个变量的最大值. 如果将back_log设定到比你操作系统限制更高的值,将会没有效果

 

max_connections = 100

#MySQL 服务器所允许的同时会话数的上限,其中一个连接将被SUPER权限保留作为管理员登录

max_connect_errors = 10

#每个客户端连接最大的错误允许数量,如果达到了此限制. 这个客户端将会被MySQL服务阻止直到执行了”FLUSH HOSTS” 或者服务重启 ,非法的密码以及其他在链接时的错误会增加此值。

table_open_cache = 2048

#所有线程所打开表的数量,增加此值就增加了mysqld所需要的文件描述符的数量。

max_allowed_packet = 16M

#服务所能处理的请求包的最大数据以及服务所能处理的最大的请求大小,每个连接独立的大小,大小动态增加 。

binlog_cache_size = 1M

#为了记录SQL状态所持有的cache大小,如果你经常使用事务,你可以增加此值来获取更大的性能,所有事务的状态都被缓冲在binlog里面,如果事务超出这个大小, 将使用磁盘上的临时文件来替代. 此缓冲在每个连接的事务第一次更新状态时被创建 

max_heap_table_size = 64M

#内存表所允许的最大容量. 为防止意外创建一个超大的内存表导致永尽所有的内存资源. 

read_buffer_size = 2M

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

read_rnd_buffer_size = 16M

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

sort_buffer_size = 8M

#排序缓冲用来处理类似ORDER BY以及GROUP BY的排序,在排序发生时由每个线程分配 

join_buffer_size = 8M

# 如果应用中,很少出现join语句,则可以不用太在乎join_buffer_size参数的设置大小。如果join语句不是很少的话,如果内存充足可以适当增大join_buffer_size

thread_cache_size = 8

# 线程池缓存大小( 当客户端断开连接后 将当前线程缓存起来 当在接到新的连接请求时快速响应 无需创建新的线程 ),这可以在你需要大量新连接的时候减少线程创建的开销 

thread_concurrency = 8

# thread_concurrency应设为CPU核数的2倍,设置thread_concurrency的值的正确与否, 对mysql的性能影响很大, 在多个cpu(或多核)的情况下,错误设置了thread_concurrency的值, 会导致mysql不能充分利用多cpu(或多核), 出现同一时刻只能一个cpu(或核)在工作的情况。

query_cache_size = 64M

# 查询缓存,该值为0,表示禁用query cache,设置为具体的大小取决于查询的实际情况,但最好设置为1024的倍数,参考值64M。

query_cache_limit = 2M

# 小于此设定值才会被缓存,此设置用来保护查询缓冲,防止一个极大的结果集覆盖掉其他所有的查询结果.

ft_min_word_len = 4

#全文检索索引的最小的字长,如果你需要搜索更短字的时候,可以改小一点,修改之后, 需要重建FULLTEXT 索引。

default-storage-engine = MYISAM

# 创建新表时的默认表类型, 

thread_stack = 192K

# 每个连接线程被创建时,MySQL给它分配的内存大小。当MySQL创建一个新的连接线程时,需要给它分配一定大小的内存堆栈空间,以便存放客户端的请求的Query及自身的各种状态和处理信息。

transaction_isolation = REPEATABLE-READ

#设定默认的事务隔离级别,read uncommitted 未提交读,read committed 已提交读,repeatable read 可重复读,serializable 可序列化

tmp_table_size = 64M

#设置tmp_table_size选项来增加一张临时表的大小,例如做高级GROUP BY操作生成的临时表。如果调高该值,MySQL同时将增加heap表的大小,可达到提高联接查询速度的效果,建议尽量优化查询,要确保查询过程中生成的临时表在内存中,避免临时表过大导致生成基于硬盘的MyISAM表。

log-bin=mysql-bin

#打开二进制日志功能

binlog_format=mixed

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

#log_slave_updates

# 如果你在使用链式从服务器结构的复制模式 (A->B->C), 你需要在服务器B上打开此项. 

#log 

#默认是没有开启的,会影响服务器性能

log_warnings

#开启警告日志

slow_query_log

# 记录慢速查询. 慢速查询是指消耗了比 “long_query_time” 定义的更多时间的查询. 

long_query_time = 10

# 所有的使用了比这个时间(以秒为单位)更多的查询会被认为是慢速查询. 不要在这里使用”1″, 否则会导致所有的查询被记录下来

server-id = 1

# 唯一的服务辨识号,数值位于 1 到 2^32-1之间.此值在master和slave上都需要设置. 

#*** MyISAM 相关选项 

key_buffer_size = 128M

# 关键词缓冲的大小, 一般用来缓冲MyISAM表的索引块. 不能大于可用内存30%

bulk_insert_buffer_size = 256M

# 使INSERT … SELECT, INSERT … VALUES (…), (…), …, 以及 LOAD DATA  INFILE) 更快. 此变量限制每个进程中缓冲树的字节数. 设置为 0 会关闭此优化.

myisam_sort_buffer_size = 256M

# 此缓冲用于MySQL需要REPAIR, OPTIMIZE, ALTER 以及 LOAD DATA INFILE 到一个空表中引起重建索引时. 

myisam_max_sort_file_size = 10G

# MySQL重建索引时所允许的最大临时文件的大小 ( REPAIR, ALTER TABLE 或者 LOAD DATA INFILE).

myisam_repair_threads = 1

# 如果一个表拥有超过一个索引, MyISAM 可以通过并行排序使用超过一个线程去修复他们. 

myisam_recover

# 自动检查和修复没有适当关闭的 MyISAM 表.  

# *** INNODB 相关选项 ***

#skip-innodb 

#默认没有开启

innodb_additional_mem_pool_size = 64M

#内存池,被InnoDB用来保存 metadata 信息

innodb_buffer_pool_size = 2G

#InnoDB缓冲池,注意在32位系统上你每个进程可能被限制在 2-3.5G 用户层面内存限制,

innodb_data_file_path = ibdata1:10M:autoextend

#InnoDB 数据表文件大小

#innodb_data_home_dir = <directory>

# 设置此选项如果你希望InnoDB表文件被保存在其他分区. 默认保存在MySQL的datadir中. 

innodb_write_io_threads = 8 

innodb_read_io_threads = 8

#IO线程的数量,在linux下编码为8,但是在Windows磁盘I/O可能在一个大数值下表现的更好. 

#innodb_force_recovery=1

# 如果发现InnoDB表文件损坏, 设置为一个非零值可能帮助你导出你的表. 从1开始并且增加此值知道你能够成功的导出表.

innodb_thread_concurrency = 16

#允许线程数量. 

innodb_flush_log_at_trx_commit = 1

# 如果设置为1 ,InnoDB会在每次提交后刷新(fsync)事务日志到磁盘上, 0代表日志只大约每秒写入日志文件并且日志文件刷新到磁盘. 2代表日志写入日志文件在每次提交后,但是日志文件只有大约每秒才会刷新到磁盘上. 

#如果是游戏服务器,建议此值设置为2;

#如果是对数据安全要求极高的应用,建议设置为1;

#设置为0性能最高,但如果发生故障,数据可能会有丢失的危险!默认值1的意思是每一次事务提交或事务外的指令都需要把日志写入(flush)硬盘,这是很费时的。特别是使用电池供电缓存(Battery backed up cache)时。设成2对于很多运用,特别是从MyISAM表转过来的是可以的,它的意思是不写入硬盘而是写入系统缓存。日志仍然会每秒flush到硬盘,所以你一般不会丢失超过1-2秒的更新。设成0会更快一点,但安全方面比较差,即使MySQL挂了也可能会丢失事务的数据。而值2只会在整个操作系统挂了时才可能丢数据。

#innodb_fast_shutdown

#加速InnoDB的关闭,提升关机速度,阻止InnoDB在关闭时做全清除以及插入缓冲合并,下次启动时再操作

innodb_log_buffer_size = 8M

# 用来缓冲日志数据的缓冲区的大小. 当此值快满时, InnoDB将必须刷新数据到磁盘上. 

innodb_log_file_size = 256M

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

innodb_log_files_in_group = 3

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

#innodb_log_group_home_dir

#InnoDB的日志文件所在位置. 默认是MySQL的datadir. 

innodb_max_dirty_pages_pct = 90

# 在InnoDB缓冲池中最大允许的脏页面的比例. 如果达到限额, InnoDB会开始刷新他们防止他们妨碍到干净数据页面. 

#innodb_flush_method=O_DSYNC

# InnoDB用来刷新日志的方法.默认值是 “fdatasync”, 另一个是 “O_DSYNC”. 

innodb_lock_wait_timeout = 120

# 在被回滚前,InnoDB的事务锁定时间.

[mysqldump] 

quick

max_allowed_packet = 16M

# 不将内存中的整个结果写入磁盘之前缓存. 在导出非常大的表时需要开启 

[mysql] 

no-auto-rehash

#safe-updates

#只允许使用 UPDATEs 和 DELETEs . 

[myisamchk] 

key_buffer_size = 512M 

sort_buffer_size = 512M 

read_buffer = 8M 

write_buffer = 8M

[mysqlhotcopy] 

interactive-timeout

[mysqld_safe] 

open-files-limit = 8192

# 每个进程的可打开文件数量.打开大量表需要将此值设大 

未经允许不得转载:天府数据港官方信息博客 » MySQL优化运行配置方案 my.ini文件说明

客官点个赞呗! (0)
分享到:

评论 抢沙发

评论前必须登录!

天府云博 - 做有态度的开发&运维&设计学习分享平台!

联系我们百度云主机