MySQL数据库5.0的my.cnf配置与优化

原创 2012年03月30日 11:25:30

basedir = path 使用给定目录作为根目录(安装目录)。

 

character-sets-dir = path 给出存放着字符集的目录。

 

(继续)

 

datadir = path 从给定目录读取数据库文件。

 

pid-file = filename 为mysqld程序指定一个存放进程ID的文件(仅适用于UNIX/Linux系统); Init-V脚本需要使用这个文件里的进程ID结束mysqld进程。

 

socket = filename 为MySQL客户程序与服务器之间的本地通信指定一个套接字文件(仅适用于UNIX/Linux系统; 默认设置一般是/var/lib/mysql/mysql.sock文件)。

 

在Windows环境下,如果MySQL客户与服务器是通过命名管道进行通信的,--sock选项给出的将是该命名管道的名字(默认设置是MySQL)。

 

lower_case_table_name = 1/0 新目录和数据表的名字是否只允许使用小写字母; 这个选项在Windows环境下的默认设置是1(只允许使用小写字母)。

 

mysqld程序--语言设置

 

character-sets-server = name 新数据库或数据表的默认字符集。为了与MySQL的早期版本保持兼容,这个字符集也可以用--default-character-set选项给出; 但这个选项已经显得有点过时了。

 

collation-server = name 新数据库或数据表的默认排序方式。

 

lanuage = name 用指定的语言显示出错信息。

 

mysqld程序--通信、网络、信息安全

 

enable-named-pipes 允许Windows 2000/XP环境下的客户和服务器使用命名管道(named pipe)进行通信。这个命名管道的默认名字是MySQL,但可以用--socket选项来改变。

 

local-infile [=0] 允许/禁止使用LOAD DATA LOCAL语句来处理本地文件。

 

myisam-recover [=opt1, opt2, ...] 在启动时自动修复所有受损的MyISAM数据表。这个选项的可取值有4种:DEFAULT、BACKUP、QUICK和FORCE; 它们与myisamchk程序的同名选项作用相同。

 

old-passwords 使用MySQL 3.23和4.0版本中的老算法来加密mysql数据库里的密码(默认使用MySQL 4.1版本开始引入的新加密算法)。

 

port = n 为MySQL程序指定一个TCP/IP通信端口(通常是3306端口)。

 

safe-user-create 只有在mysql.user数据库表上拥有INSERT权限的用户才能使用GRANT命令; 这是一种双保险机制(此用户还必须具备GRANT权限才能执行GRANT命令)。

 

shared-memory 允许使用内存(shared memory)进行通信(仅适用于Windows)。

 

shared-memory-base-name = name 给共享内存块起一个名字(默认的名字是MySQL)。

 

skip-grant-tables 不使用mysql数据库里的信息来进行访问控制(警告:这将允许用户任何用户去修改任何数据库)。

 

skip-host-cache 不使用高速缓存区来存放主机名和IP地址的对应关系。

 

skip-name-resovle 不把IP地址解析为主机名; 与访问控制(mysql.user数据表)有关的检查全部通过IP地址行进。

 

skip-networking 只允许通过一个套接字文件(Unix/Linux系统)或通过命名管道(Windows系统)进行本地连接,不允许ICP/IP连接; 这提高了安全性,但阻断了来自网络的外部连接和所有的Java客户程序(Java客户即使在本地连接里也使用TCP/IP)。

 

user = name mysqld程序在启动后将在给定UNIX/Linux账户下执行; mysqld必须从root账户启动才能在启动后切换到另一个账户下执行; mysqld_safe脚本将默认使用--user=mysql选项来启动mysqld程序。

 

mysqld程序--内存管理、优化、查询缓存区

 

bulk_insert_buffer_size = n 为一次插入多条新记录的INSERT命令分配的缓存区长度(默认设置是8M)。

 

key_buffer_size = n 用来存放索引区块的RMA值(默认设置是8M)。

 

join_buffer_size = n 在参加JOIN操作的数据列没有索引时为JOIN操作分配的缓存区长度(默认设置是128K)。

 

max_heap_table_size = n HEAP数据表的最大长度(默认设置是16M); 超过这个长度的HEAP数据表将被存入一个临时文件而不是驻留在内存里。

 

max_connections = n MySQL服务器同时处理的数据库连接的最大数量(默认设置是100)。

 

query_cache_limit = n 允许临时存放在查询缓存区里的查询结果的最大长度(默认设置是1M)Magento推荐值为2M。

 

query_cache_size = n 查询缓存区的最大长度(默认设置是0,不开辟查询缓存区)Magento推荐值为64。

 

query_cache_type = 0/1/2 查询缓存区的工作模式:0, 禁用查询缓存区; 1,启用查询缓存区(默认设置); 2,"按需分配"模式,只响应SELECT SQL_CACHE命令。

 

read_buffer_size = n 为从数据表顺序读取数据的读操作保留的缓存区的长度(默认设置是128KB); 这个选项的设置值在必要时可以用SQL命令SET SESSION read_buffer_size = n命令加以改变。

 

read_rnd_buffer_size = n 类似于read_buffer_size选项,但针对的是按某种特定顺序(比如使用了ORDER BY子句的查询)输出的查询结果(默认设置是256K)。

 

sore_buffer = n 为排序操作分配的缓存区的长度(默认设置是2M); 如果这个缓存区太小,则必须创建一个临时文件来进行排序。

 

table_cache = n 同时打开的数据表的数量(默认设置是64)。

 

tmp_table_size = n 临时HEAP数据表的最大长度(默认设置是32M); 超过这个长度的临时数据表将被转换为MyISAM数据表并存入一个临时文件。

 

mysqld程序--日志

 

log [= file] 把所有的连接以及所有的SQL命令记入日志(通用查询日志); 如果没有给出file参数,MySQL将在数据库目录里创建一个hostname.log文件作为这种日志文件(hostname是服务器的主机名)。

 

log-slow-queries [= file] 把执行用时超过long_query_time变量值的查询命令记入日志(慢查询日志); 如果没有给出file参数,MySQL将在数据库目录里创建一个hostname-slow.log文件作为这种日志文件(hostname是服务器主机 名)。

 

long_query_time = n 慢查询的执行用时上限(默认设置是10s)。

 

long_queries_not_using_indexs 把慢查询以及执行时没有使用索引的查询命令全都记入日志(其余同--log-slow-queries选项)。

 

log-bin [= filename] 把对数据进行修改的所有SQL命令(也就是INSERT、UPDATE和DELETE命令)以二进制格式记入日志(二进制变更日志,binary update log)。这种日志的文件名是filename.n或默认的hostname.n,其中n是一个6位数字的整数(日志文件按顺序编号)。

 

log-bin-index = filename 二进制日志功能的索引文件名。在默认情况下,这个索引文件与二进制日志文件的名字相同,但后缀名是.index而不是.nnnnnn。

 

max_binlog_size = n 二进制日志文件的最大长度(默认设置是1GB)。在前一个二进制日志文件里的信息量超过这个最大长度之前,MySQL服务器会自动提供一个新的二进制日志文件接续上。

 

binlog-do-db = dbname 只把给定数据库里的变化情况记入二进制日志文件,其他数据库里的变化情况不记载。如果需要记载多个数据库里的变化情况,就必须在配置文件使用多个本选项来设置,每个数据库一行。

 

binlog-ignore-db = dbname 不把给定数据库里的变化情况记入二进制日志文件。

 

sync_binlog = n 每经过n次日志写操作就把日志文件写入硬盘一次(对日志信息进行一次同步)。n=1是最安全的做法,但效率最低。默认设置是n=0,意思是由操作系统来负责二进制日志文件的同步工作。

 

log-update [= file] 记载出错情况的日志文件名(出错日志)。这种日志功能无法禁用。如果没有给出file参数,MySQL会使用hostname.err作为种日志文件的名字。

 

mysqld程序--镜像(主控镜像服务器)

 

server-id = n 给服务器分配一个独一无二的ID编号; n的取值范围是1~2的32次方启用二进制日志功能。

 

log-bin = name 启用二进制日志功能。这种日志的文件名是filename.n或默认的hostname.n,其中的n是一个6位数字的整数(日志文件顺序编号)。

 

binlog-do/ignore-db = dbname 只把给定数据库里的变化情况记入二进制日志文件/不把给定的数据库里的变化记入二进制日志文件。

 

mysqld程序--镜像(从属镜像服务器)

 

server-id = n 给服务器分配一个唯一的ID编号

 

log-slave-updates 启用从属服务器上的日志功能,使这台计算机可以用来构成一个镜像链(A->B->C)。

 

master-host = hostname 主控服务器的主机名或IP地址。如果从属服务器上存在mater.info文件(镜像关系定义文件),它将忽略此选项。

 

master-user = replicusername 从属服务器用来连接主控服务器的用户名。如果从属服务器上存在mater.info文件,它将忽略此选项。

 

master-password = passwd 从属服务器用来连接主控服务器的密码。如果从属服务器上存在mater.info文件,它将忽略此选项。

 

master-port = n 从属服务器用来连接主控服务器的TCP/IP端口(默认设置是3306端口)。

 

master-connect-retry = n 如果与主控服务器的连接没有成功,则等待n秒(s)后再进行管理方式(默认设置是60s)。如果从属服务器存在mater.info文件,

 

它将忽略此选项。

 

master-ssl-nnn= nnn对主、从服务器之间的SSL通信进行配置。

 

read-only = 0/1 0: 允许从属服务器独立地执行SQL命令(默认设置); 1: 从属服务器只能执行来自主控服务器的SQL命令。

 

read-log-purge = 0/1 1: 把处理完的SQL命令立刻从中继日志文件里删除(默认设置); 0: 不把处理完的SQL命令立刻从中继日志文件里删除。

 

replicate-do-table = dbname.tablename 与--replicate-do-table选项的含义和用法相同,但数据库和数据库表名字里允许出现通配符"%"

 

 

 

(例如: test%.%--对名字以"test"开头的所有数据库里的所以数据库表进行镜像处理)。

 

对于单台运行的WEB服务器,建议加上:

 

skip-locking

 

skip-name-resolve

 

skip-networking

 

在PHP链接数据库时使用"LOCALHOST".这样MySQL 客户端库将覆盖之并尝试连接到本地套接字.(

 

我们可以从PHP.INI中

 

代码:

 

; Default socket name for local MySQL connects. If empty, uses the built-in

 

; MySQL defaults.

 

mysql.default_socket = /tmp/mysql.sock

 

看出 默认情况下 UNIX 将访问/tmp/mysql.sock)

 

以下是部分选项解释:

my.cnf默认是不存在的.你可以在/usr/local/share/mysql/下看到:

 

my-huge.cnf

my-innodb-heavy-4G.cnf

my-large.cnf

my-medium.cnf

my-small.cnf

等文件.将其中合适你机器配置的文件拷贝到/etc/my.cnf或mysql data目录/my.cnf(/var/db/mysql)下或~/.my.cnf.文件内都有详细的说明

 

[mysqld]

 

port = 3306

 

serverid = 1

 

socket = /tmp/mysql.sock

 

skip-locking

 

# 避免MySQL的外部锁定,减少出错几率增强稳定性。

 

skip-name-resolve

 

禁止MySQL对外部连接进行DNS解析,使用这一选项可以消除MySQL进行DNS解析的时间。但需要注意,如果开启该选项,则所有远程主机连接授权都要使用IP地址方式,否则MySQL将无法正常处理连接请求!

 

back_log = 384

 

指定MySQL可能的连接数量。当MySQL主线程在很短的时间内接收到非常多的连接请求,该参数生效,主线程花费很短的时间检查连接并且启动一个新线程。

 

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

 

试图设定back_log高于你的操作系统的限制将是无效的。默认值为50。对于Linux系统推荐设置为小于512的整数。

 

key_buffer_size = 256M

 

# key_buffer_size指定用于索引的缓冲区大小,增加它可得到更好的索引处理性能。

 

对于内存在4GB左右的服务器该参数可设置为256M或384M。

 

注意:该参数值设置的过大反而会是服务器整体效率降低!

 

max_allowed_packet = 4M

 

thread_stack = 256K

 

table_cache = 128K

 

sort_buffer_size = 6M

 

查询排序时所能使用的缓冲区大小。注意:该参数对应的分配内存是每连接独占!如果有100个连接,那么实际分配的总共排序缓冲区大小为100 × 6 = 600MB。所以,对于内存在4GB左右的服务器推荐设置为6-8M。

 

read_buffer_size = 4M

 

读查询操作所能使用的缓冲区大小。和sort_buffer_size一样,该参数对应的分配内存也是每连接独享!

 

join_buffer_size = 8M

 

联合查询操作所能使用的缓冲区大小,和sort_buffer_size一样,该参数对应的分配内存也是每连接独享!

 

myisam_sort_buffer_size = 64M

 

table_cache = 512

 

thread_cache_size = 64

 

query_cache_size = 64M

 

指定MySQL查询缓冲区的大小。可以通过在MySQL控制台执行以下命令观察:

 

代码:

 

# > SHOW VARIABLES LIKE '%query_cache%';

 

# > SHOW STATUS LIKE 'Qcache%';

 

如果Qcache_lowmem_prunes的值非常大,则表明经常出现缓冲不够的情况;

 

如果Qcache_hits的值非常大,则表明查询缓冲使用非常频繁,如果该值较小反而会影响效率,那么可以考虑不用查询缓冲;Qcache_free_blocks,如果该值非常大,则表明缓冲区中碎片很多。

 

tmp_table_size = 256M

 

max_connections = 768

 

指定MySQL允许的最大连接进程数。如果在访问论坛时经常出现Too Many Connections的错误提 示,则需要增大该参数值。

 

max_connect_errors = 10000000

 

wait_timeout = 10

 

指定一个请求的最大连接时间,对于4GB左右内存的服务器可以设置为5-10。

 

thread_concurrency = 8

 

该参数取值为服务器逻辑CPU数量×2,在本例中,服务器有2颗物理CPU,而每颗物理CPU又支持H.T超线程,所以实际取值为4 × 2 = 8

 

skip-networking

 

开启该选项可以彻底关闭MySQL的TCP/IP连接方式,如果WEB服务器是以远程连接的方式访问MySQL数据库服务器则不要开启该选项!否则将无法正常连接!

 

my.cnf缓存优化

 

在 my.cnf 中添加/修改以下选项:

 

#取消文件系统的外部锁

 

skip-locking

 

#不进行域名反解析,注意由此带来的权限/授权问题

 

skip-name-resolve

 

#索引缓存,根据内存大小而定,如果是独立的db服务器,可以设置高达80%的内存总量

 

key_buffer = 512M

 

#连接排队列表总数

 

back_log = 200

 

max_allowed_packet = 2M

 

#打开表缓存总数,可以避免频繁的打开数据表产生的开销

 

table_cache = 512

 

#每个线程排序所需的缓冲

 

sort_buffer_size = 4M

 

#每个线程读取索引所需的缓冲

 

read_buffer_size = 4M

 

#MyISAM表发生变化时重新排序所需的缓冲

 

myisam_sort_buffer_size = 64M

 

#缓存可重用的线程数

 

thread_cache = 128

 

#查询结果缓存

 

query_cache_size = 128M

 

#设置超时时间,能避免长连接

 

set-variable = wait_timeout=60

 

#最大并发线程数,cpu数量*2

 

thread_concurrency = 4

 

#记录慢查询,然后对慢查询一一优化

 

log-slow-queries = slow.log

 

long_query_time = 1

 

#关闭不需要的表类型,如果你需要,就不要加上这个

 

skip-innodb

 

skip-bdb

 

MySQL语言规则Datcbase5.0的my.Cnf配置选项概述:

 

mysqld程式--目录和文档

 

basedir = path 使用给定目录作为根目录(安装目录)。

 

CharaCter-sets-dir = path 给出存放着char集的目录。

 

datadir = path 从给定目录读取Datcbase文档。

 

pid-file = filename 为mysqld程式指定一个存放进程ID的文档(仅适用于UNIX/LinuxSystam); Init-V脚本需要使用这个文档里的进程ID结束mysqld进程。

 

soCket = filename 为MySQL语言规则客户程式与服务器之间的本地通信指定一个套接字文档(仅适用于UNIX/LinuxSystam; 默认设置一般是/var/lib/mysql/mysql.soCk文档)。

 

在Windows环境下,如果MySQL语言规则客户与服务器是通过命名管道进行通信的,--soCk选项给出的将是该命名管道的名字(默认设置是MySQL语言规则)。

 

lower_Case_table_name = 1/0 新目录和Data表的名字是否只允许使用小写字母; 这个选项在Windows环境下的默认设置是1(只允许使用小写字母)。

 

mysqld程式--language设置

 

CharaCter-sets-server = name 新Datcbase或Data表的默认char集。为了与MySQL语言规则的早期版本保持兼容,这个char集也可以用--default- CharaCter-set选项给出; 但这个选项已经显得有点过时了。

 

Collation-server = name 新Datcbase或Data表的默认排序方式。

 

lanuage = name 用指定的language显示出错信息。

 

mysqld程式--通信、网络、信息安全

 

enable-named-pipes 允许Windows 2000/XP环境下的客户和服务器使用命名管道(named pipe)进行通信。这个命名管道的默认名字是MySQL语言规则,但可以用--soCket选项来改变。

 

loCal-infile [=0] 允许/禁止使用LOAD DATA LOCAL语句来处理本地文档。

 

myisam-reCover [=opt1, opt2, ...] 在启动时自动修复所有受损的MyISAMData表。这个选项的可取value有4种:DEFAULT、BACKUP、QUICK和FORCE; 它们与myisamChk程式的同名选项作用相同。

 

old-passwords 使用MySQL语言规则 3.23和4.0版本中的老算法来加密mysqlDatcbase里的密码(默认使用MySQL语言规则 4.1版本开始引入的新加密算法)。

 

port = n 为MySQL语言规则程式指定一个TCP/IP通信端口(通常是3306端口)。

 

safe-user-Create 只有在mysql.userDatcbase表上拥有INSERT权限的用户才能使用GRANT命令; 这是一种双保险机制(此用户还必须具备GRANT权限才能运行GRANT命令)。

 

shared-memory 允许使用内存(shared memory)进行通信(仅适用于Windows)。

 

shared-memory-base-name = name 给共享内存块起一个名字(默认的名字是MySQL语言规则)。

 

skip-grant-tables 不使用mysqlDatcbase里的信息来进行访问控制(警告:这将允许用户任何用户去修改任何Datcbase)。

 

skip-host-CaChe 不使用高速缓存区来存放主机名和IP地址的对应关系。

 

skip-name-resovle 不把IP地址解析为主机名; 与访问控制(mysql.userData表)有关的检查全部通过IP地址行进。

 

skip-networking 只允许通过一个套接字文档(Unix/LinuxSystam)或通过命名管道(WindowsSystam)进行本地连接,不允许ICP/IP连接; 这提高了安全性,但阻断了来自网络的外部连接和所有的java编程编程客户程式(java编程编程客户即使在本地连接里也使用TCP/IP)。

 

user = name mysqld程式在启动后将在给定UNIX/Linux账户下运行; mysqld必须从root账户启动才能在启动后切换到另一个账户下运行; mysqld_safe脚本将默认使用--user=mysql选项来启动mysqld程式。

 

mysqld程式--内存管理、优化、查询缓存区

 

bulk_insert_buffer_size = n 为一次插入多条新记录的INSERT命令分配的缓存区长度(默认设置是8M)。

 

key_buffer_size = n 用来存放索引区块的RMAvalue(默认设置是8M)。

 

join_buffer_size = n 在参加JOIN操作的Data列没有索引时为JOIN操作分配的缓存区长度(默认设置是128K)。

 

max_heap_table_size = n HEAPData表的最大长度(默认设置是16M); 超过这个长度的HEAPData表将被存入一个临时文档而不是驻留在内存里。

 

max_ConneCtions = n MySQL语言规则服务器同时处理的Datcbase连接的最大数量(默认设置是100)。

 

query_CaChe_limit = n 允许临时存放在查询缓存区里的查询结果的最大长度(默认设置是1M)。

 

query_CaChe_size = n 查询缓存区的最大长度(默认设置是0,不开辟查询缓存区)。

 

query_CaChe_type = 0/1/2 查询缓存区的工作模式:0, 禁用查询缓存区; 1,启用查询缓存区(默认设置); 2,"按需分配"模式,只响应SELECT SQL语言规则_CACHE命令。

 

read_buffer_size = n 为从Data表顺序读取Data的读操作保留的缓存区的长度(默认设置是128KB); 这个选项的设置value在必要时可以用SQL语言规则命令SET SESSION read_buffer_size = n命令加以改变。

 

read_rnd_buffer_size = n 类似于read_buffer_size选项,但针对的是按某种特定顺序(比如使用了ORDER BY子句的查询)输出的查询结果(默认设置是256K)。

 

sore_buffer = n 为排序操作分配的缓存区的长度(默认设置是2M); 如果这个缓存区太小,则必须创建一个临时文档来进行排序。

 

table_CaChe = n 同时打开的Data表的数量(默认设置是64)。

 

tmp_table_size = n 临时HEAPData表的最大长度(默认设置是32M); 超过这个长度的临时Data表将被convert为MyISAMData表并存入一个临时文档。

 

mysqld程式--日志

 

log [= file] 把所有的连接以及所有的SQL语言规则命令记入日志(通用查询日志); 如果没有给出file参数,MySQL语言规则将在Datcbase目录里创建一个hostname.log文档作为这种日志文档(hostname是服务器的主机名)。

 

log-slow-queries [= file] 把运行用时超过long_query_time变量value的查询命令记入日志(慢查询日志); 如果没有给出file参数,MySQL语言规则将在Datcbase目录里创建一个hostname-slow.log文档作为这种日志文档 (hostname是服务器主机 名)。

 

long_query_time = n 慢查询的运行用时上限(默认设置是10s)。

 

long_queries_not_using_indexs 把慢查询以及运行时没有使用索引的查询命令全都记入日志(其余同--log-slow-queries选项)。

 

log-bin [= filename] 把对Data进行修改的所有SQL语言规则命令(也就是INSERT、UPDATE和DELETE命令)以二进制格式记入日志(二进制变更日 志,binary update log)。这种日志的文档名是filename.n或默认的hostname.n,其中n是一个6位数字的整数(日志文档按顺序编号)。

 

log-bin-index = filename 二进制日志功能的索引文档名。在默认情况下,这个索引文档与二进制日志文档的名字相同,但后缀名是.index而不是.nnnnnn。

 

max_binlog_size = n 二进制日志文档的最大长度(默认设置是1GB)。在前一个二进制日志文档里的信息量超过这个最大长度之前,MySQL语言规则服务器会自动提供一个新的二进制日志文档接续上。

 

binlog-do-db = dbname 只把给定Datcbase里的变化情况记入二进制日志文档,其他Datcbase里的变化情况不记载。如果需要记载多个Datcbase里的变化情况,就必须在配置文档使用多个本选项来设置,每个Datcbase一行。

 

binlog-ignore-db = dbname 不把给定Datcbase里的变化情况记入二进制日志文档。

 

synC_binlog = n 每经过n次日志写操作就把日志文档写入硬盘一次(对日志信息进行一次同步)。n=1是最安全的做法,但效率最低。默认设置是n=0,意思是由操作Systam来负责二进制日志文档的同步工作。

 

log-update [= file] 记载出错情况的日志文档名(出错日志)。这种日志功能无法禁用。如果没有给出file参数,MySQL语言规则会使用hostname.err作为种日志文档的名字。

 

mysqld程式--镜像(主控镜像服务器)

 

server-id = n 给服务器分配一个独一无二的ID编号; n的取value范围是1~2的32次方启用二进制日志功能。

 

log-bin = name 启用二进制日志功能。这种日志的文档名是filename.n或默认的hostname.n,其中的n是一个6位数字的整数(日志文档顺序编号)。

 

binlog-do/ignore-db = dbname 只把给定Datcbase里的变化情况记入二进制日志文档/不把给定的Datcbase里的变化记入二进制日志文档。

 

mysqld程式--镜像(从属镜像服务器)

 

server-id = n 给服务器分配一个唯一的ID编号

 

log-slave-updates 启用从属服务器上的日志功能,使这台计算机可以用来构成一个镜像链(A->B->C)。

 

master-host = hostname 主控服务器的主机名或IP地址。如果从属服务器上存在mater.info文档(镜像关系定义文档),它将忽略此选项。

 

master-user = repliCusername 从属服务器用来连接主控服务器的用户名。如果从属服务器上存在mater.info文档,它将忽略此选项。

 

master-password = passwd 从属服务器用来连接主控服务器的密码。如果从属服务器上存在mater.info文档,它将忽略此选项。

 

master-port = n 从属服务器用来连接主控服务器的TCP/IP端口(默认设置是3306端口)。

 

master-ConneCt-retry = n 如果与主控服务器的连接没有成功,则等待n秒(s)后再进行管理方式(默认设置是60s)。如果从属服务器存在mater.info文档,

 

它将忽略此选项。

 

master-ssl-nnn = nnn 对主、从服务器之间的SSL通信进行配置。

 

read-only = 0/1 0: 允许从属服务器独立地运行SQL语言规则命令(默认设置); 1: 从属服务器只能运行来自主控服务器的SQL语言规则命令。

 

read-log-purge = 0/1 1: 把处理完的SQL语言规则命令立刻从中继日志文档里删除(默认设置); 0: 不把处理完的SQL语言规则命令立刻从中继日志文档里删除。

 

repliCate-do-table = dbname.tablename 与--repliCate-do-table选项的含义和用法相同,但Datcbase和Datcbase表名字里允许出现通配符"%"

 

(例如: test%.%--对名字以"test"开头的所有Datcbase里的所以Datcbase表进行镜像处理)。

 

repliCate-do-db = name 只对这个Datcbase进行镜像处理。

 

repliCate-ignore-table = dbname.tablename 不对这个Data表进行镜像处理。

 

repliCate-wild-ignore-table = dbn.tablen 不对这些Data表进行镜像处理。

 

repliCate-ignore-db = dbname 不对这个Datcbase进行镜像处理。

 

repliCate-rewrite-db = db1name > db2 databasename 把主控Datcbase上的db1nameDatcbase镜像处理为从属服务器上的db2 databasenameDatcbase。

 

report-host = hostname 从属服务器的主机名; 这项信息只与SHOW SLAVE HOSTS命令有关--主控服务器可以用这条命令生成一份从属服务器的名单。

 

slave-Compressed-protoCol = 1 主、从服务器使用压缩格式进行通信--如果它们都支持这么做的话。

 

slave-skip-errors = n1, n2, ...或all 即使发生出错codes为n1、n2等的错误,镜像处理工作也继续进行(即不管发生什么错误,镜像处理工作也继续进行)。

 

如果配置得当,从属服务器不应该在运行SQL语言规则命令时发生错误(在主控服务器上运行出错的SQL语言规则命令不会被发送到从属服务器上做镜像处理); 如果不使用

 

slave-skip-errors选项,从属服务器上的镜像工作就可能国为发生错误而中断,中断后需要有人工参与才能继续进行。

 

mysqld--InnoDB--基本设置、表空间文档

 

skip-innodb 不加载InnoDBData表驱动程式--如果用不着InnoDBData表,可以用这个选项节省一些内存。

 

innodb-file-per-table 为每一个新Data表创建一个表空间文档而不是把Data表都集中保存在中央表空间里(后者是默认设置)。该选项始见于MySQL语言规则 4.1。

 

innodb-open-file = n InnoDBData表驱动程式最多可以同时打开的文档数(默认设置是300)。如果使用了innodb-file-per-table选项并且需要同时打开很多

 

Data表的话,这个数字很可能需要加大。

 

innodb_data_home_dir = p InnoDB主目录,所有与InnoDBData表有关的目录或文档路径都相对于这个路径。在默认的情况下,这个主目录就是MySQL语言规则的Data目录。

 

innodb_data_file_path = ts 用来容纳InnoDB为Data表的表空间: 可能涉及一个以上的文档; 每一个表空间文档的最大长度都必须以字节(B)、兆字节(MB)或

 

千兆字节(GB)为单位给出; 表空间文档的名字必须以分号隔开; 最后一个表空间文档还可以带一个autoextend属性和一个最大长度(max:n)。

 

例如,ibdata1:1G; ibdata2:1G:autoextend:max:2G的意思是: 表空间文档ibdata1的最大长度是1GB,ibdata2的最大长度也是1G,但允许它扩充到2GB。

 

除文档名外,还可以用硬盘分区的设置名来定义表空间,此时必须给表空间的最大初始长度value加上newraw关键字做后缀,给表空间的最大扩充长度value加上

 

raw关键字做后缀(例如/dev/hdb1:20Gnewraw或/dev/hdb1:20Graw); MySQL语言规则 4.0及更高版本的默认设置是ibdata1:10M:autoextend。

 

innodb_autoextend_inCrement = n 带有autoextend属性的表空间文档每次加大多少兆字节(默认设置是8MB)。这个属性不涉及具体的Data表文档,那些文档的

 

增大速度相对是比较小的。

 

innodb_loCk_wait_timeout = n 如果某个事务在等待n秒(s)后还没有获得所需要的资源,就使用ROLLBACK命令放弃这个事务。这项设置对于发现和处理未能被

 

InnoDBData表驱动程式识别出来的死锁条件有着重要的意义。这个选项的默认设置是50s。

 

innodb_fast_shutdown 0/1 是否以最快的速度关闭InnoDB,默认设置是1,意思是不把缓存在INSERT缓存区的Data写入Data表,那些Data将在MySQL语言规则服务器下次

 

启动时再写入(这么做没有什么风险,因为INSERT缓存区是表空间的一个组成部分,Data不会丢失)。把这个选项设置为0反面危险,因为在计算机关闭时,

 

InnoDB驱动程式很可能没有足够的时间完成它的Data同步工作,操作Systam也许会在它完成Data同步工作之前强行结束InnoDB,而这会导致Data不完整。

 

mysqld程式--InnoDB--日志

 

innodb_log_group_home_dir = p 用来存放InnoDB日志文档的目录路径(如ib_logfile0、ib_logfile1等)。在默认的情况下,InnoDB驱动程式将使用MySQL语言规则Data目

 

录作为自己保存日志文档的位置。

 

innodb_log_files_in_group = n 使用多少个日志文档(默认设置是2)。InnoDBData表驱动程式将以轮转方式依次填写这些文档; 当所有的日志文档都写满以后,

 

之后的日志信息将写入第一个日志文档的最大长度(默认设置是5MB)。这个长度必须以MB(兆字节)或GB(千兆字节)为单位进行设置。

 

innodb_flush_log_at_trx_Commit = 0/1/2 这个选项决定着什么时候把日志信息写入日志文档以及什么时候把这些文档物理地写(术语称为"同步")到硬盘上。

 

设置value0的意思是每隔一秒写一次日志并进行同步,这可以减少硬盘写操作次数,但可能造成Data丢失; 设置value1(设置设置)的意思是在每运行完一条COMMIT

 

命令就写一次日志并进行同步,这可以防止Data丢失,但硬盘写操作可能会很频繁; 设置value2是一般折衷的办法,即每运行完一条COMMIT命令写一次日志,

 

每隔一秒进行一次同步。

 

innodb_flush_method = x InnoDB日志文档的同步办法(仅适用于UNIX/LinuxSystam)。这个选项的可取value有两种: fdatasynC,用fsynC()参数进行同步; O_DSYNC,

 

用O_SYNC()参数进行同步。

 

innodb_log_arChive = 1 启用InnoDB驱动程式的arChive(档案)日志功能,把日志信息写入ib_arCh_log_n文档。启用这种日志功能在InnoDB与MySQL语言规则一起使用时没有

 

多大意义(启用MySQL语言规则服务器的二进制日志功能就足够用了)。

 

mysqld程式--InnoDB--缓存区的设置和优化

 

innodb_log_buffer_pool_size = n 为InnoDBData表及其索引而保留的RAM内存量(默认设置是8MB)。这个参数对速度有着相当大的影响,如果计算机上只运行有

 

MySQL语言规则/InnoDBDatcbase服务器,就应该把全部内存的80%用于这个用途。

 

innodb_log_buffer_size = n 事务日志文档写操作缓存区的最大长度(默认设置是1MB)。

 

innodb_additional_men_pool_size = n 为用于内部管理的各种Data结构分配的缓存区最大长度(默认设置是1MB)。

 

innodb_file_io_threads = n I/O操作(硬盘写操作)的最大线程个数(默认设置是4)。

 

innodb_thread_ConCurrenCy = n InnoDB驱动程式能够同时使用的最大线程个数(默认设置是8)。

 

mysqld程式--其它选项

 

bind-address = ipaddr MySQL语言规则服务器的IP地址。如果MySQL语言规则服务器所在的计算机有多个IP地址,这个选项将非常重要。

 

default-storage-engine = type 新Data表的默认Data表TYPE(默认设置是MyISAM)。这项设置还可以通过--default-table-type选项来设置。

 

default-timezone = name 为MySQL语言规则服务器设置一个地理时区(如果它与本地计算机的地理时区不一样)。

 

ft_min_word_len = n 全文索引的最小单词长度工。这个选项的默认设置是4,意思是在创建全文索引时不考虑那些由3个或更少的char构建单词。

 

Max-allowed-paCket = n 客户与服务器之间交换的Data包的最大长度,这个数字至少应该大于客户程式将要处理的最大BLOB块的长度。这个选项的默认设置是1MB。

 

Sql-mode = model1, mode2, ... MySQL语言规则将运行在哪一种SQL语言规则模式下。这个选项的作用是让MySQL语言规则与其他的DatcbaseSystam保持最大程度的兼容。这个选项的可取value包括

 

ansi、db2 database、oraCle、no_zero_date、pipes_as_ConCat。

 

注意:如果在配置文档里给出的某个选项是mysqld无法识别的(如,因为犯了一个愚蠢的打字错误),MySQL语言规则服务器将不启动。

 

(例如: test%.%--对名字以"test"开头的所有Datcbase里的所以Datcbase表进行镜像处理)。

 

repliCate-do-db = name 只对这个Datcbase进行镜像处理。

 

repliCate-ignore-table = dbname.tablename 不对这个Data表进行镜像处理。

 

repliCate-wild-ignore-table = dbn.tablen 不对这些Data表进行镜像处理。

 

repliCate-ignore-db = dbname 不对这个Datcbase进行镜像处理。

 

repliCate-rewrite-db = db1name > db2 databasename 把主控Datcbase上的db1nameDatcbase镜像处理为从属服务器上的db2 databasenameDatcbase。

 

report-host = hostname 从属服务器的主机名; 这项信息只与SHOW SLAVE HOSTS命令有关--主控服务器可以用这条命令生成一份从属服务器的名单。

 

slave-Compressed-protoCol = 1 主、从服务器使用压缩格式进行通信--如果它们都支持这么做的话。

 

slave-skip-errors = n1, n2, ...或all 即使发生出错codes为n1、n2等的错误,镜像处理工作也继续进行(即不管发生什么错误,镜像处理工作也继续进行)。

 

如果配置得当,从属服务器不应该在运行SQL语言规则命令时发生错误(在主控服务器上运行出错的SQL语言规则命令不会被发送到从属服务器上做镜像处理); 如果不使用

 

slave-skip-errors选项,从属服务器上的镜像工作就可能国为发生错误而中断,中断后需要有人工参与才能继续进行。

 

mysqld--InnoDB--基本设置、表空间文档

 

skip-innodb 不加载InnoDBData表驱动程式--如果用不着InnoDBData表,可以用这个选项节省一些内存。

 

innodb-file-per-table 为每一个新Data表创建一个表空间文档而不是把Data表都集中保存在中央表空间里(后者是默认设置)。该选项始见于MySQL语言规则 4.1。

 

innodb-open-file = n InnoDBData表驱动程式最多可以同时打开的文档数(默认设置是300)。如果使用了innodb-file-per-table选项并且需要同时打开很多

 

Data表的话,这个数字很可能需要加大。

 

innodb_data_home_dir = p InnoDB主目录,所有与InnoDBData表有关的目录或文档路径都相对于这个路径。在默认的情况下,这个主目录就是MySQL语言规则的Data目录。

 

innodb_data_file_path = ts 用来容纳InnoDB为Data表的表空间: 可能涉及一个以上的文档; 每一个表空间文档的最大长度都必须以字节(B)、兆字节(MB)或

 

千兆字节(GB)为单位给出; 表空间文档的名字必须以分号隔开; 最后一个表空间文档还可以带一个autoextend属性和一个最大长度(max:n)。

 

例如,ibdata1:1G; ibdata2:1G:autoextend:max:2G的意思是: 表空间文档ibdata1的最大长度是1GB,ibdata2的最大长度也是1G,但允许它扩充到2GB。

 

除文档名外,还可以用硬盘分区的设置名来定义表空间,此时必须给表空间的最大初始长度value加上newraw关键字做后缀,给表空间的最大扩充长度value加上

 

raw关键字做后缀(例如/dev/hdb1:20Gnewraw或/dev/hdb1:20Graw); MySQL语言规则 4.0及更高版本的默认设置是ibdata1:10M:autoextend。

 

innodb_autoextend_inCrement = n 带有autoextend属性的表空间文档每次加大多少兆字节(默认设置是8MB)。这个属性不涉及具体的Data表文档,那些文档的

 

增大速度相对是比较小的。

 

innodb_loCk_wait_timeout = n 如果某个事务在等待n秒(s)后还没有获得所需要的资源,就使用ROLLBACK命令放弃这个事务。这项设置对于发现和处理未能被

 

InnoDBData表驱动程式识别出来的死锁条件有着重要的意义。这个选项的默认设置是50s。

 

innodb_fast_shutdown 0/1 是否以最快的速度关闭InnoDB,默认设置是1,意思是不把缓存在INSERT缓存区的Data写入Data表,那些Data将在MySQL语言规则服务器下次

 

启动时再写入(这么做没有什么风险,因为INSERT缓存区是表空间的一个组成部分,Data不会丢失)。把这个选项设置为0反面危险,因为在计算机关闭时,

 

InnoDB驱动程式很可能没有足够的时间完成它的Data同步工作,操作Systam也许会在它完成Data同步工作之前强行结束InnoDB,而这会导致Data不完整。

 

mysqld程式--InnoDB--日志

 

innodb_log_group_home_dir = p 用来存放InnoDB日志文档的目录路径(如ib_logfile0、ib_logfile1等)。在默认的情况下,InnoDB驱动程式将使用MySQL语言规则Data目

 

录作为自己保存日志文档的位置。

 

innodb_log_files_in_group = n 使用多少个日志文档(默认设置是2)。InnoDBData表驱动程式将以轮转方式依次填写这些文档; 当所有的日志文档都写满以后,

 

之后的日志信息将写入第一个日志文档的最大长度(默认设置是5MB)。这个长度必须以MB(兆字节)或GB(千兆字节)为单位进行设置。

 

innodb_flush_log_at_trx_Commit = 0/1/2 这个选项决定着什么时候把日志信息写入日志文档以及什么时候把这些文档物理地写(术语称为"同步")到硬盘上。

 

设置value0的意思是每隔一秒写一次日志并进行同步,这可以减少硬盘写操作次数,但可能造成Data丢失; 设置value1(设置设置)的意思是在每运行完一条COMMIT

 

命令就写一次日志并进行同步,这可以防止Data丢失,但硬盘写操作可能会很频繁; 设置value2是一般折衷的办法,即每运行完一条COMMIT命令写一次日志,

 

每隔一秒进行一次同步。

 

innodb_flush_method = x InnoDB日志文档的同步办法(仅适用于UNIX/LinuxSystam)。这个选项的可取value有两种: fdatasynC,用fsynC()参数进行同步; O_DSYNC,

 

用O_SYNC()参数进行同步。

 

innodb_log_arChive = 1 启用InnoDB驱动程式的arChive(档案)日志功能,把日志信息写入ib_arCh_log_n文档。启用这种日志功能在InnoDB与MySQL语言规则一起使用时没有

 

多大意义(启用MySQL语言规则服务器的二进制日志功能就足够用了)。

 

mysqld程式--InnoDB--缓存区的设置和优化

 

innodb_log_buffer_pool_size = n 为InnoDBData表及其索引而保留的RAM内存量(默认设置是8MB)。这个参数对速度有着相当大的影响,如果计算机上只运行有为专用MySQL/InnoDBDatcbase服务器,就应该把全部内存的80%用于这个用途,如果与web server共用一台服务器的话则可以分配40-50%给mysql。

 

innodb_log_buffer_size = n 事务日志文档写操作缓存区的最大长度(默认设置是1MB)。

 

innodb_additional_men_pool_size = n 为用于内部管理的各种Data结构分配的缓存区最大长度(默认设置是1MB)。

 

innodb_file_io_threads = n I/O操作(硬盘写操作)的最大线程个数(默认设置是4)。

 

innodb_thread_ConCurrenCy = n InnoDB驱动程式能够同时使用的最大线程个数(默认设置是8)。

 

mysqld程式--其它选项

 

bind-address = ipaddr MySQL语言规则服务器的IP地址。如果MySQL语言规则服务器所在的计算机有多个IP地址,这个选项将非常重要。

 

default-storage-engine = type 新Data表的默认Data表TYPE(默认设置是MyISAM)。这项设置还可以通过--default-table-type选项来设置。

 

default-timezone = name 为MySQL语言规则服务器设置一个地理时区(如果它与本地计算机的地理时区不一样)。

 

ft_min_word_len = n 全文索引的最小单词长度工。这个选项的默认设置是4,意思是在创建全文索引时不考虑那些由3个或更少的char构建单词。

 

Max-allowed-paCket = n 客户与服务器之间交换的Data包的最大长度,这个数字至少应该大于客户程式将要处理的最大BLOB块的长度。这个选项的默认设置是1MB。

 

Sql-mode = model1, mode2, ... MySQL语言规则将运行在哪一种SQL语言规则模式下。这个选项的作用是让MySQL语言规则与其他的DatcbaseSystam保持最大程度的兼容。这个选项的可取value包括

 

ansi、db2 database、oraCle、no_zero_date、pipes_as_ConCat。

 

注意:如果在配置文档里给出的某个选项是mysqld无法识别的(如,因为犯了一个愚蠢的打字错误),MySQL语言规则服务器将不启动。

 

mysql的优化来讲,my.cnf配置是最最基本的优化,大家好好学学吧,这里我看过,挺不错的,现在就差一个实践的机会了,呵呵。

 

1.获取当前配置参数

 

要优化配置参数,首先要了解当前的配置参数以及运行情况。使用下列命令可以获得目前服务器使用的配置参数:

 

mysqld –verbose –help

 

mysqladmin variables extended-status –u root –p

 

在MySQL控制台里面,运行下列命令可以获取状态变量的值:

 

mysql> SHOW STATUS;

 

如果只要检查某几个状态变量,可以使用下列命令:

 

mysql> SHOW STATUS LIKE ‘[匹配模式]’; ( 可以使用%、?等 )

 

2.优化参数

 

参数优化基于一个前提,就是在我们的数据库中通常都使用InnoDB表,而不使用MyISAM表。在优化MySQL时,有两个配置参数是最重要的,即table_cache和key_buffer_size。

 

table_cache

 

table_cache指定表高速缓存的大小。每当MySQL访问一个表时,如果在表缓冲区中还有空 间,该表就被打开并放入其中,这样可以更快地访问表内容。通过检查峰值时间的状态值Open_tables和Opened_tables,可以决定是否需 要增加table_cache的值。如果你发现open_tables等于table_cache,并且opened_tables在不断增长,那么你就 需要增加table_cache的值了(上述状态值可以使用SHOW STATUS LIKE ‘Open%tables’获得)。注意,不能盲目地把table_cache设置成很大的值。如果设置得太高,可能会造成文件描述符不足,从而造成性能 不稳定或者连接失败。

 

对于有1G内存的机器,推荐值是128-256。

 

案例1:该案例来自一个不是特别繁忙的服务器

 

table_cache – 512

 

open_tables – 103

 

opened_tables – 1273

 

uptime – 4021421 (measured in seconds)

 

该案例中table_cache似乎设置得太高了。在峰值时间,打开表的数目比table_cache要少得多。

 

案例2:该案例来自一台开发服务器。

 

table_cache – 64

 

open_tables – 64

 

opened-tables – 431

 

uptime – 1662790 (measured in seconds)

 

虽然open_tables已经等于table_cache,但是相对于服务器运行时间来说,opened_tables的值也非常低。因此,增加table_cache的值应该用处不大。

 

案例3:该案例来自一个upderperforming的服务器

 

table_cache – 64

 

open_tables – 64

 

opened_tables – 22423

 

uptime – 19538

 

该案例中table_cache设置得太低了。虽然运行时间不到6小时,open_tables达到了最大值,opened_tables的值也非常高。这样就需要增加table_cache的值。

 

key_buffer_size

 

key_buffer_size指定索引缓冲区的大小,它决定索引处理的速度,尤其是索引读的速度。 通过检查状态值Key_read_requests和Key_reads,可以知道key_buffer_size设置是否合理。比例key_reads / key_read_requests应该尽可能的低,至少是1:100,1:1000更好(上述状态值可以使用SHOW STATUS LIKE ‘key_read%’获得)。

 

key_buffer_size只对MyISAM表起作用。即使你不使用MyISAM表,但是内部的临时磁盘表是MyISAM表,也要使用该值。可以使用检查状态值created_tmp_disk_tables得知详情。

 

对于1G内存的机器,如果不使用MyISAM表,推荐值是16M(8-64M)。

 

案例1:健康状况

 

key_buffer_size – 402649088 (384M)

 

key_read_requests – 597579931

 

key_reads - 56188

 

案例2:警报状态

 

key_buffer_size – 16777216 (16M)

 

key_read_requests – 597579931

 

key_reads - 53832731

 

案例1中比例低于1:10000,是健康的情况;案例2中比例达到1:11,警报已经拉响。

 

优化query_cache_size

 

从4.0.1开始,MySQL提供了查询缓冲机制。使用查询缓冲,MySQL将Select语句和查询结果存放在缓冲区中,今后对于同样的Select语句(区分大小写),将直接从缓冲区中读取结果。根据MySQL用户手册,使用查询缓冲最多可以达到238%的效率。

 

通 过检查状态值Qcache_*,可以知道query_cache_size设置是否合理(上述状态值可以使用SHOW STATUS LIKE ‘Qcache%’获得)。如果Qcache_lowmem_prunes的值非常大,则表明经常出现缓冲不够的情况,如果Qcache_hits的值也 非常大,则表明查询缓冲使用非常频繁,此时需要增加缓冲大小;如果Qcache_hits的值不大,则表明你的查询重复率很低,这种情况下使用查询缓冲反 而会影响效率,那么可以考虑不用查询缓冲。此外,在Select语句中加入SQL_NO_CACHE可以明确表示不使用查询缓冲。

 

与查询缓冲 有关的参数还有query_cache_type、query_cache_limit、query_cache_min_res_unit。 query_cache_type指定是否使用查询缓冲,可以设置为0、1、2,该变量是SESSION级的变量。query_cache_limit指 定单个查询能够使用的缓冲区大小,缺省为1M。query_cache_min_res_unit是在4.1版本以后引入的,它指定分配缓冲区空间的最小 单位,缺省为4K。检查状态值Qcache_free_blocks,如果该值非常大,则表明缓冲区中碎片很多,这就表明查询结果都比较小,此时需要减小 query_cache_min_res_unit。

 

开启二进制日志( Binary Log )

 

二进制日志包含所有更新数据的语句,其目的是在恢复数据库时用它来把数据尽可能恢复到最后的状态。另外,如果做同步复制( Replication )的话,也需要使用二进制日志传送修改情况。

 

开启二进制日志,需要设置参数log-bin。log_bin指定日志文件,如果不提供文件名,MySQL将自己产生缺省文件名。MySQL会在文件名后面自动添加数字索引,每次启动服务时,都会重新生成一个新的二进制文件。

 

此 外,使用log-bin-index可以指定索引文件;使用binlog-do-db可以指定记录的数据库;使用binlog-ignore-db可以指 定不记录的数据库。注意的是:binlog-do-db和binlog-ignore-db一次只指定一个数据库,指定多个数据库需要多个语句。而 且,MySQL会将所有的数据库名称改成小写,在指定数据库时必须全部使用小写名字,否则不会起作用。

 

在MySQL中使用SHOW MASTER STATUS命令可以查看目前的二进制日志状态。

 

开启慢查询日志( slow query log )

 

慢查询日志对于跟踪有问题的查询非常有用。它记录所有查过long_query_time的查询,如果需要,还可以记录不使用索引的记录。下面是一个慢查询日志的例子:

 

开 启慢查询日志,需要设置参数log_slow_queries、long_query_times、log-queries-not-using- indexes。log_slow_queries指定日志文件,如果不提供文件名,MySQL将自己产生缺省文件名。long_query_times 指定慢查询的阈值,缺省是10秒。log-queries-not-using-indexes是4.1.0以后引入的参数,它指示记录不使用索引的查 询。

 

配置InnoDB

 

相对于MyISAM表来说,正确配置参数对于InnoDB表更加关键。其中,最重要的参数是 innodb_data_file_path。它指定表数据和索引存储的空间,可以是一个或者多个文件。最后一个数据文件必须是自动扩充的,也只有最后一 个文件允许自动扩充。这样,当空间用完后,自动扩充数据文件就会自动增长(以8MB为单位)以容纳额外的数据。例如:

 

innodb_data_file_path=/disk1/ibdata1:900M;/disk2/ibdata2:50M:autoextend

 

两个数据文件放在不同的磁盘上。数据首先放在ibdata1中,当达到900M以后,数据就放在ibdata2中。一旦达到50MB,ibdata2将以8MB为单位自动增长。

 

如果磁盘满了,你需要在另外的磁盘上面增加一个数据文件。为此,你需要查看最后一个文件的尺寸,然后计算最接近的整数(MB)。然后手工修改该文件的大小,并添加新的数据文件。例如:假设ibdata2已经有109MB数据,那么可以修改如下:

 

innodb_data_file_path=/disk1/ibdata1:900M;/disk2/ibdata2:109M;/disk3/ibdata3:500M:autoextend

 

flush_time

 

如果系统有问题并且经常锁死或重新引导,应将该变量设置为非零值,这将导致服务器按flush_time 秒来刷新表的高速缓存。用这种方法来写出对表的修改将降低性能,但可减少表讹误或数据丢失的机会。

 

一般使用缺省值。

 

Binlog_cache_size

 

The size of the cache to hold the SQL statements for the binary log during a transaction. A binary log cache is allocated for each client if the server supports any transactional storage engines and if the server has binary log enabled(--log-bin option). If you often use big, multiple-statement transactions, you can increase this to get more performance. The Binlog_cache_use and Binlog_cache_disk_use status variables can be useful for tuning the size of this variable.

 

3.存储引擎

 

在MYSQL 3.23.0版本中,引入了MyISAM存储引擎。它是一个非事务型的存储引擎,成为了MYSQL的缺省存储引擎。但是,如果使用设置向导来设置参数,则它会把InnoDB作为缺省的存储引擎。InnoDB是一个事务型的存储引擎。

 

创建表的时候,可以为表指定存储引擎,语法如下:

 

Create TABLE t (i INT) ENGINE = MyISAM

 

Create TABLE t (i INT) TYPE = MyISAM

 

如果没有指定,则使用缺省的存储引擎。也可以使用Alter TABLE来更换表引擎,语法如下:

 

Alter TABLE t ENGINE = MyISAM

 

同一数据库中可以包含不同存储引擎的表。


相关文章推荐

MySQL数据库my.cnf配置文件注释详解

我们知道,在MySQL数据库安装完成后,要对my.cnf配置文件进行适当的修改才能充分利用MySQL数据库的功能。但是对于初学者来说,修改my.cnf配置文件似乎是一个比较难的过程。为了解决这个问题,...

MySQL数据库my.cnf配置文件注释详解

我们知道,在MySQL数据库安装完成后,要对my.cnf配置文件进行适当的修改才能充分利用MySQL数据库的功能。但是对于初学者来说,修改my.cnf配置文件似乎是一个比较难的过程。为了解决这个问题,...

MySQL配置文件my.cnf优化

MySQL 5.5.13 参数说明: [client] character-set-server = utf8 port    = 3306 socket  = /data/mysql/33...

MySQL my.cnf参数配置优化详解

# 以下选项会被MySQL客户端应用读取。 # 注意只有MySQL附带的客户端应用程序保证可以读取这段内容。 # 如果你想你自己的MySQL应用程序获取这些值。 # 需要在MySQL客户端库初始...
  • svod
  • svod
  • 2011年12月14日 17:20
  • 225

Mysql my.cnf优化配置文件

这是之前一个dba同事留下的配置,有好多地方需要学习一下,我们公司上线也默认使用这个配置,这里先mark一下,下面是代码[client] port = 3306 socket ...

MySQL性能优化之路---修改配置文件my.cnf

mysql数据库的优化,算是一个老生常谈的问题了,网上也有很多关于各方面性能优化的例子,今天我们要谈的是MySQL 系统参数的优化即优化my.cnf文件 在Apache, PHP, MySQL的...

mysql服务性能优化—my.cnf配置说明详解

MYSQL服务器my.cnf配置文档详解 硬件:内存16G [client] port = 3306 socket = /data/3306/mysql.sock [mysq...
  • sg_0504
  • sg_0504
  • 2014年04月15日 22:19
  • 665

MySQL配置文件my.cnf优化详解

转载于http://www.falcon-monitor.com/blog/243.html MySQL 5.5.13 参数说明: [client] character...
  • slowfei
  • slowfei
  • 2012年04月18日 13:01
  • 496

MySQL配置文件my.cnf参数优化和中文详解

这篇文章主要介绍了MySQL配置文件my.cnf参数优化和中文详解,非常详细的用中文注释了各个参数的作用以及建议值,需要的朋友可以参考下Mysql参数优化对于新手来讲,是比较难懂的东西,其实这个参数优...

my.ini(my.cnf)与mysql优化指南(mysql4.0 myslq5.0 or 5.x)

mysql优化了所以先说说这个,其实这个,很复杂,对于不同的网站,其在线,访问量,帖子数量,网络情况,以及机器配置都有关系,优化不是一次可以完成的,需要不断的观察和调试,以取得最佳效果下面我引用 As...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MySQL数据库5.0的my.cnf配置与优化
举报原因:
原因补充:

(最多只允许输入30个字)