分类: Mysql/postgreSQL
2014-06-23 16:51:38
以下是参数的注释:
1> skip-external-locking
是否忽略外部锁定,用于多进程条件下为MyISAM数据表进行锁定,你有多台服务器使用同一个数据库目录,那么每台服务器都必须开启external locking 当外部锁定(external-locking)起作用时,每个进程若要访问数据表,则必须等待之前的进程完成操作并解除锁定。由于服务器访问数据表时经常需要等待解锁,因此在单服务器环境下external locking会让MySQL性能下降. 老版本的写法为:skip-locking
2> skip-name-resolve
禁用dns解析,在mysql的授权表中就不能使用主机名,只能使用IP. 当一个新连接连接mysql服务器时,mysql服务器会对此次连接的合法性进行判定,具体通过查询mysql.user表实现。mysql的权限设置将user和host(客户端的地址)联系起来,只有当两者都符合条件时才能进行下一步认证.
3> big_tables
使用--big-tables选项启动mysqld以总将临时表存储在磁盘上.
4> local_infile = 0
是否允许在使用load data infile 命令时 使用客户端文件 默认为OFF或0即为不允许
5> character-set-server=utf8
客户端的字符集设置为UTF-8
6>datadir=/usr/local/mysql/data/
设置数据文件目录
7>basedir=usr/local/mysql/
设置mysql的base目录
8> table_cache=16
指定表高速缓存的大小.每次MySQL访问表,每当MySQL访问一个表时,如果在表缓冲区中还有空间,该表就被打开并放入其中,这样可以更快地访问表内容,如果这个表在cache中,那MySQL就直接在cache中访问.在内存中访问比在磁盘上访问更快,同时也减少了I/O.
9> max_connections = 200
mysql server允许的最大链接数量
10> wait_timeout = 28800
11> interactive_timeout = 28800
服务器关闭交互式连接前等待活动的秒数
交互式客户端定义为在mysql_real_connect()中使用CLIENT_INTERACTIVE选项的客户端
12> thread_cache= 30
设置Thread cache池中可以缓存的连接线程的最大数量
16>= 10
如果某个通信端口的读操作中断了,在放弃前重试多次。在FreeBSD中该值应设得很高,因为内部中断将发送至所有线程
17> = 10
mysqld服务器用Bad handshake响应前等待连接包的秒数
单位:秒.是设定远程用户必须回应PORT类型数据连接的最大时间。
18>= 30
中断读前等待连接的其它数据的秒数。当服务器从客户端读数时,net_read_timeout指控制何时中断的超时值。当服务器向客户端写时,net_write_timeout指控制何时中断的超时值
19> = 0
设置查询缓存的类型
0: 关闭查询缓存功能
1:缓存出通过sql_no_cache明确提示不缓存之外的所有query
2 :仅仅缓存通过sql_cache
明确提示须要缓存的query
20> = 8MB
设置query cache 可以接受的最大结果集,超出参数设置范围的结果集将不会被缓存
21> query_cache_min_res_unit = 4KB
内存块分配的最小单元非常重要,设置过大可能增加内存碎片的概率发生,太小又可能增加内存分配的消耗,为此在系统平稳运行一个阶段性后,可参考公式的计算值:查询缓存最小内存块 = (query_cache_size – Qcache_free_memory) / Qcache_queries_in_cache
22>= 56M
查询缓存的大小. 为0时 即为关闭查询缓存功能
23>= 30
24> = 999999999
允许的group_concat()函数结果的最大长度 默认1024 最小4 无上限限制
25>
服务器关闭交互式连接前等待活动的秒数。交互式客户端定义为在mysql_real_connect()中使用CLIENT_INTERACTIVE选项的客户端。
26> = 2M
仅作用于使用 MyISAM存储引擎,用来缓存批量插入数据的时候临时缓存写入数据。当我们使用如下几种数据写入语句的时候,会使用这个内存区域来缓存批量结构的数据以帮助批量写入数据文件:insert … select …
insert … values (…) ,(…),(…)…
load data infile… into… (非空表)
27> = 8M
当在REPAIR TABLE或用CREATE INDEX创建索引或ALTERTABLE过程中排序 MyISAM索引分配的缓冲区大小 范围:4B~4GB 默认8MB
设置恢复表之时使用的缓冲区的尺寸
28>= 2M
1 每个线程连续扫描时为扫描的每个表分配的缓冲区的大小(字节)。如果进行多次连续扫描,可能需要增加该值。每个线程进行顺序扫描的时候都会产生该buffer ,而且同一个Query中如果有多个表进行全表扫描,会产生多个该buffer
所以在设置的时候尽量不要太高 避免因为并发太大造成内存不够
29>= 512K
设置进行随机读的时候所使用的缓冲区,此参数和read_buffer_size所设置的buffer相反,一个是顺序读的时候使用,一个是随机读的时候使用,但是两者都是针对线程的设置,每个线程都可能产生两种buffer中的任何一个.
30> = 64M
联合查询操作所能使用的缓冲区大小,当我们的Join 是ALL(全表扫描) ,index(全索引扫描),rang (索引范围扫描)或者index_merge(查询中同时使用两个(或更多)索引,然后对索引结果进行merge 之后再读取表数据) 的时候使用的Buffer;实际上这种Join 被称为Full Join。实际上参与Join 的每一个表都需要一个Join Buffer,所以在Join 出现的时候,至少是两个. 该参数对应的分配内存也是每连接独享!
31>= 20M
设置MEMORY (HEAP)表可以增长到的最大空间大小.
32> = 20M
限制mysql内部产生的内存临时表的阈值,超过这个值会被转移到磁盘上,并不是实际就要分配的这么大的内存数量.
33>
启动mysql,不启动复制
34>default-storage-engine = innodb
设置默认存储引擎为INOODB
35> =
Innodb数据文件的家目录。可以在innodb_data_file_path参数中设置,这里可以不设置,设置的话,值为:/usr/local/mysql/data/
36>=/usr/local/mysql/data/ibdata1:200M;/usr/local/mysql/data/ibdata2:200M:autoextend
到单独数据文件和它们尺寸的路径。通过把innodb_data_home_dir连接到这里指定的每个路径,到每个数据文件的完整目录路径可被获得。文件大小通过给尺寸值尾加M或G以MB或者GB(1024MB)为单位被指定。文件尺寸的和至少是10MB。
37> = /usr/local/mysql/data/
到InnoDB日志文件的目录路径。
38>innodb_buffer_pool_size=2056M
设置innodb数据和索引内存缓存空间的大小
39>innodb_additional_mem_pool_size=16M
InnoDB用来存储数据目录信息&其它内部数据结构的内存池的大小。你应用程序里的表越多,你需要在这里分配越多的内存。如果InnoDB用光了这个池内的内存,InnoDB开始从操作系统分配内存,并且往MySQL错误日志写警告信息
40>= 2
在日志组里日志文件的数目
41> innodb_log_file_size=256M
在日志组里每个日志文件的大小。在32位计算机上日志文件的合并大小必须少于4GB
42> =32M
设置innodb存放log的缓冲区的大小
一个大的日志缓冲允许大型事务运行而不需要在事务提交之前往磁盘写日志。因此,如果你有大型事务,使日志缓冲区更大以节约磁盘I/O。
43> innodb_flush_log_at_trx_commit=2
控制事务的提交方式
分配原则:这个参数只有3个值,0,1,2
当这个值为0时:日志缓冲每秒一次地被写到日志文件,并且对日志文件做到磁盘操作的刷新,但是在一个事务提交不做任何操作。mysqld进程的崩溃会删除 崩溃前最后一秒的事务。从以上分析,当这个值不为1时,可以取得较好的性能,但遇到异常会有损失,所以需要根据自已的情况去衡量。
当这个值为1时:innodb 的事务LOG在每次提交后写入日志文件,并对日志做刷新到磁盘。这个可以做到不丢任何一个事务。
当这个值为2时:在每个提交,日志缓冲被写到日志文件,但不对日志文件做到磁盘操作的刷新,在对日志文件向磁盘刷新的操作每秒发生一次。但需要注意的是, 由于进程调用方面的问题,并不能保证每秒100%的发生。从而在性能上是最快的。但操作系统崩溃或掉电才会删除最后一秒的事务。只要系统没有崩溃,并没有 丢失数据比设置成0更安全.
44>=50
设置innodb事务等待锁定资源的最长时间 ,当等待超过该时间长度时,innodb会自动结束改事务并提示超时.
45>
默认遇到超时只回滚事务最后一个query,指定参数innodb_rollback_on_timeout后,遇到超时将回滚整个事务.这个参数在mysql5.1.15版本之后生效
46> innodb_checksums=0
设置innodb从磁盘读取数据块的时候是否进行checksums校验 默认为ON 可在启动设置为OFF InnoDB在所有对磁盘的页面读取上使用校验和验证以确保 额外容错 防止 硬件损坏 或 数据文件。
47>0
设置为ON或者1(默认地),这个变量允许InnoDB支持在分布式事务
不需要使用分布式事务,你可以通过设置这个选项为OFF或0来禁止这个变量,以减少磁盘刷新的次数并获得更好的InnoDB性能
48>
默认地,InnoDB存储所有数据两次,第一次存储到doublewrite缓冲,然后存储到确实的数据文件,这个选项可以被用来禁止这个功能。这个选项默认是允许的。
49> innodb_thread_concurrency = 10
这个参数主要控制innodb内部的并发处理线程的数量的最大值,系统内部有相应的检测机制进行检测控制并发线程的数量 innodb建议设置为CPU个数和磁盘个数之和.
50>innodb_concurrency_tickets = 100
控制一个并发进程在innodb并发控制允许的情况下 能够自由进行处理的次数 一旦处理次数用完 该线程必须重新申请新的free ticket
51>innodb_locks_unsafe_for_binlog=1
在InnoDB搜索和索引扫描中关闭间隙锁锁定。这个选项的默认值是假(false)
52> = REPEATABLE-READ
事务隔离级别的设置:可重复读
可选参数有:READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE.
需要修改的参数的注释:
= 16M
在系统中对数据进行排序的时候使用的Buffer;
Sort Buffer 同样是针对单个Thread 的,所以当多个Thread 同时进行排序的时候,系统中就会出现多个Sort Buffer。一般我们可以通过增大Sort Buffer 的大小来提高ORDER BY 或者是GROUP BY的处理性能。
2> key_buffer_size= 256M
用来设置用于缓存 MyISAM存储引擎中索引文件的内存区域大小,如果我们有足够的内存,这个缓存区域最好是能够存放下我们所有的 MyISAM 引擎表的所有索引,以尽可能提高性能。
= 1M
myisamchk检查、修复、优化MyISAM表或库表的信息时所分配的内存。相同情况下使用到的参数还有 key_buffer ,read_buffer,sort_buffer.注意这四个参数的设置均不能大于系统目前自由内存.
= 1016
在replication同步数据的时候须设定 server-id。基本上没有什么特别的限制,只要Master 和 Slave 的 server-id 不一样即可,但其值必需为 1 至 2^32 -1 之间。
5> read_buffer_size= 2M
每个线程连续扫描时为扫描的每个表分配的缓冲区的大小(字节) ,如果进行多次连续扫描,可能需要增加该值。
6>socket= /usr/local/mysql/tmp/mysql.sock
设置mysql 的socket的目录