-
Mysql
配置文件详解
#BEGIN CONFIG INFO
#DESCR:
4GB RAM,
只使用
InnoDB, ACID,
少量的连接
,
队列负载大
#TYPE:
SYSTEM
#END CONFIG INFO
#
#
此
mysql
配置文件例子针对
4G
内存
#
主要使用
INNODB
#
处理复杂队列并且连接数量较少的
mysq
l
服务器
#
#
将此文件复制到
/etc/
作为全局设置
,
# mysql-
data-dir/
作为服务器指定设置
# (@localstatedir@ for this
installation)
或者放入
# ~/.
作为用户设置
.
#
#
在此配置文件中
,
你可以使用所有程序支持的长选项
.
#
如果想获悉程序支持的所有选项
#
请在程序后加上
< br>参数运行程序
.
#
#
关于独立选项更多的细节信息可以在手册内找到
#
#
#
以下选项会被
MySQL
客户端应用读取
< br>.
#
注意只有
MySQL
附带的客户端应用程序保证可以读取这段内容
.
#
如果你想你自己的
MySQL
p>
应用程序获取这些值
#
需要在
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
连接管理器线程处理之前的连接
.
#
p>
如果你有非常高的连接率并且出现
报错
p>
,
#
你就应该增加此处的值
.
#
检查你的操作系统文档来获取这个变量的最大值
.
#
如果将
back_log
设定到比你操作系统限制更高的值
,
将会没有效
果
back_log = 50
#
不在
TCP/IP
端口上进行监听
.
#
如
果所有的进程都是在同一台服务器连接到本地的
mysqld,
#
这样设置将是增强安全的方法
#
所有
mysqld
的连接都是通过
Unix sockets
或者命名管道进行的
.
#
注意在
windows
下如果没有打开命名管
道选项而只是用此项
#
(
通过
选项
)
将会导致
mysql
服务没有任何作用
!
#skip-networking
# MySQL
服务所允许的同时会话数的上限
#
其中一个连接将被
SUPER
权限保留
作为管理员登录
.
#
即便已经达到了连接数的上限
.
max_connections = 100
#
每个客户端连接最大的错误允许数量
,
如果达
到了此限制
.
#
这个客户端将会
被
MySQL
服务阻止直到执行了
p>
或者服务重启
#
非法的密码以及其他在链接时的错误会增加此值
.
#
查看
状态来获取全局计数器
.
max_connect_errors = 10
#
所有线程所打开表的数量
.
# <
/p>
增加此值就增加了
mysqld
所需要的
文件描述符的数量
#
这样你需要
确认在
[mysqld_safe]
中
变量设置打开文件数量允许至少
4096
table_cache = 2048
#
允许外部文件级别的锁
.
打开文件锁会对性能造成负面影响
#
所以只有在你在同样的文件上运行多个数据库实例时才使用
此选项
(
注意仍会有其他约束
!)
#
或者你在文件层面上使用了其他一些软件依赖来锁定
MyISAM
表
#external-locking
#
服务所能处理的请求包的最大大小以及服务所能处理的最大的请求大小
(
当与大的
BLOB
字段一起工作时
相当必要
)
#
每个
连接独立的大小
.
大小动态增加
max_allowed_packet = 16M
#
在一个事务中
binlog
为了记录<
/p>
SQL
状态所持有的
cache
大小
#
如果你经
常使用大的
,
多声明的事务
,
你可以增加此值来获取更大的性能
.
# <
/p>
所有从事务来的状态都将被缓冲在
binlog
< br>缓冲中然后在提交后一次性写入到
binlog
中
#
如果事务比此值大
,
会使用磁盘上的临时文件来替代
.
#
此缓冲在每个连接的事务第一次更新状态时被创建
binlog_cache_size = 1M
#
独立的内存表所允许的最大容量
.
#
此选项为了防止意外创建一个超大的内存表导致永尽所有的
内存资源
.
max_heap_table_size =
64M
#
排序缓冲被用来处理类似
ORDER
BY
以及
GROUP
BY
队列所引起的排序
#
如果排序后的数据无法放入排序缓冲
,
#
一个用来替代的基于磁盘的合并分类会被使用
#
查看
状态变量
.
#
在排序发生时由每个线程分配
sort_buffer_size = 8M
#
此缓冲被使用来优化全联合
(full JOINs
不带索引的联合
).
#
类似的联合在极大多数情况下有非常糟糕的性能表现
,
#
但是将此值设大能够减轻性能影响
.
#
通过
状态变量查看全联合的数量
# <
/p>
当全联合发生时
,
在每个线程中分配
p>
join_buffer_size = 8M
#
我们在
cache
中保留多少线程用于重用
#
当一个客户端断开连接后
,
如果
c
ache
中的线程还少于
thread_cache_size
,
#
则客户端线程被放入
cac
he
中
.
#
这可以在你需要大量新连接的时候极大的减少线程创建的开销
# (
一般来说如果你有好的线程模型的话
,
这不会有明显的性能提升
.)
thread_cache_size = 8
#
此允许应用程序给予线程系统一个提示在同一时间给予渴望被运行的线程的数量
.
#
此值只对于支持
thread_concurrency()
函数的系统有意义
(
例如
Sun Solaris).
#
你可可以尝试使用
[CPU
数量
]*(2..4)
来作
为
thread_concurrency
的值
thread_concurrency = 8
#
查询缓冲常被用来缓冲
SELECT
的结果并且在下一次同样查询的时候不再执行直接返回结果
.
#
打开查询缓冲可以极大的提高服务器速度
,
如果你有大量的相同的查询并且很少修改表
.
#
查看
状态变量来检查是否当前值对于你的负载来说是否足够高
.
#
注意
:
在你表经常变化的情况下或者如果你的查询原文每次都不同
,
#
查询缓冲也许引起性能下降而不是性能提升
.
query_cache_size = 64M
#
只有小于此设定值的结果才会被缓冲
#
此设置用来保护查询缓冲
,
防止一个极大的结果集将其他所有的查询结果都覆盖
.
query_cache_limit = 2M
#
被全文检索索引的最小的字长
.
#
你也许希望减少它
,
如果你需要搜索更
短字的时候
.
#
注意在你修改此值之后
,
#
你需要重建你的
FULLTEXT
索引
ft_min_word_len = 4
#
如果你的系统支持
memlock()
函数
,
你也许希望打开此选项用以让运行中的
mysql
在在内存高度紧张的
时候
,
数据在内存中保持锁定并且防止可能被
swappi
ng out
#
此选项对于性能有益
#memlock
#
当创建新表时作为默认使用的表类型
,
#
如果在创建表示没有特别执行表类型
,
将会使用此值
default_table_type = MYISAM
#
线程使用的堆大小
.
此容量的内存在每次连接时被预留
.
# MySQL
本身常不会需要超过
64K
的内存
#
如果你使用你自己的需要大量堆的
UDF
函数
#
或者你的操作系统对于某些操作需要更多的堆
,
#
你也许需要将其设置的更高一点
.
thread_stack = 192K
#
设定默认的事务隔离级别
.
可用的级别如下
:
# READ-UNCOMMITTED, READ-
COMMITTED, REPEATABLE-READ, SERIALIZABLE
transaction_isolation = REPEATABLE-READ
#
内部
(
内
存中
)
临时表的最大大小
#
如果一个表增长到比此值更大
,<
/p>
将会自动转换为基于磁盘的表
.
#
此限制是针对单个表的
,
而不是总和<
/p>
.
tmp_table_size = 64M
#
打开二进制日志功能
.
#
在复制
(replication
)
配置中
,
作为
MASTER
主服务器必须打开此项
#
如果你需要从你最后的备份中做基于时间点的恢复
,
你也同样需要二进制日志
.
log-bin=mysql-bin
#
如果你在使用链式从服务器结构的复制模式
(A->B->C),
#
你需要在服务器
B
上打开此项
.
#
此选项打开在从线程上重做过的更新的日志
,
#
并将其写入从服务器的二进制日志
.
#log_slave_updates
#
打开全查询日志
.
所有的由服务器接收到的查询
(
甚至对于一个错误语法的查询
)
#
都会被记录下来
.
这对于调试非常有用
,
在生产环境中常常关闭此项
.
#log
#
将警告打印输出到错
误
log
文件
.
如果你对于
MySQL
有任何问题
#
你应该打开警告
log
并且仔细审查错误日志
,
查出可能的原因
.
#log_warnings
#
记录慢速查询
.
慢速查询是指消耗了比
定义的更多时间的查询
.
#
如果
log_long_format
被打开
,
那些没有使用索引的查询也会被记录
.
#
如果你经常增加新查询到已有的系统内的话
.
一般来说这是一个好主意
,
log_slow_queries
#
< br>所有的使用了比这个时间
(
以秒为单位
< br>)
更多的查询会被认为是慢速查询
.
#
不要在这里使用
< br>否则会导致所有的查询
,
甚至非常快的查询页被记录下来
(
由于
MySQL
< br>目前时间的
精确度只能达到秒的级别
).
long_query_time = 2
#
在慢速日志中记录更多的信息
.
#
一般此项最好打开
.
#
打开此项会记录使得那些没有使用索引的查询也被作为到慢速查询附加到慢速日志里
log_long_format
#
p>
此目录被
MySQL
用来保存临时文件
p>
.
例如
,
#
它被用来处理基于磁盘的大型排序
,
和
内部排序一样
.
#
以及简单的临时表
.
#
如果你不创建非常大的临时文件
,
将其放置到<
/p>
swapfs/tmpfs
文件系统上也许比较好
#
另一种选择是你也可以将其放置在独立的磁盘上
.
#
你可以使用
来放置多个路径
#
他们会按照
roud-
robin
方法被轮询使用
.
#tmpdir = /tmp
# ***
复制有关的设置