一、my.cnf
配置文件路径:/etc/my.cnf,在调整了该文件内容后,需要重启mysql才可生效。
1 、主要参数
|--------------------------------------------------------------------------------------|---|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| basedir = path | # | 使用给定目录作为根目录(安装目录)。 |
| datadir = path | # | 从给定目录读取数据库文件。 |
| pid-file= filename | # | 为mysqld程序指定一个存放进程ID的文件(仅适用于UNIX/Linux系统) |
| [mysqld] socket = /tmp/mysql.sock | # | MySQL客户程序与服务器之间的本地通信指定一个套接字文件(Linux下默认是 /var/lib/mysql/mysql.sock文件) |
| port = 3306 | # | 指定MsSQL侦听的端口 |
| key_buffer = 384M | # | key_buffer(键高速缓存)是用于索引块的缓冲区大小,增加它可得到更好处理的索引(对所有读和多重写)。索引块是缓冲的并且被所有的线程共享,key_buffer的大小视内存大小而定。 |
| table_cache= 512 | # | 为所有线程可以打开表的总数量。增加该值能增加mysqld要求的文件描述符的数量。可以避免频繁的打开数据表产生的开销。 |
| sort_buffer_size= 2M | # | 每个需要进行排序的线程分配该大小的一个缓冲区。增加这值加速ORDER BY或GROUP BY操作。 注意:该参数对应的分配内存是每连接独占!如果有100个连接,那么实际分配的总共排序缓冲区大小为100×6=600MB |
| read_buffer_size = 2M | # | 读查询操作所能使用的缓冲区大小。和 sort_buffer_size一样,该参数对应的分配内 存也是每连接独享。 |
| query_cache_size = 32M | # | 指定MySQL查询结果缓冲区的大小 |
| read_rnd_buffer_size= 8M | # | 改参数在使用行指针排序之后,随机读用的。 |
| myisam_sort_buffer_size =64M | # | MyISAM表发生变化时重新排序所需的缓冲 |
| thread_concurrency= 8 | # | 最大并发线程数,取值为服务器逻辑CPU数量 ×2,如果CPU支持H.T超线程,再×2 |
| thread_cache = 8 | # | 缓存可重用的线程数 |
| skip-locking | # | 避免MySQL的外部锁定,减少出错几率增强稳定性。 |
| [mysqldump] max_allowed_packet=16M | # | 服务器和客户端之间最大能发送的可能信息包当MySQL客户端或mysqld服务器收到大于max_allowed_packet字节的信息包时,将发出"信息包过大"错误,并关闭连接。对于某些客户端,如果通信信息包过大,在执行查询期间,可能会遇到"丢失与MySQL服务器的连接"错误。如1153 - Got a packet bigger thanmax_allowed_packet' bytes |
| [myisamchk] key_buffer = 256M sort_buffer = 256M read_buffer = 2M write_buffer= 2M | | |
2 、其他可选参数
|-----------------------------|---|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| back_log = 384 | # | 指定MySQL可能的连接数量。当MySQL主线程在很短时间内接收到非常多的连接请求,该参数生效,主线程花费很短时间检查连接并且启动一个新线程。back_log参数的值指出在MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中。 如果系统在一个短时间内有很多连接,则需要增大该参数的值,该参数值指定到来的TCP/IP连接的侦听队列的大小。试图设定back_log高于你的操作系统的限制将是无效的。默认值为50。对于Linux系统推荐设置为小于512的整数。 |
| max_connections = n | # | MySQL服务器同时处理的数据库连接的最大数量(默认设置是100)。超过限制后会报 Too many connections 错误 |
| key_buffer_size = n | # | 用来存放索引区块的RMA值(默认设置是8M),增加它可得到更好处理的索引(对所有读和多重写) |
| record_buffer | # | 每个进行一个顺序扫描的线程为其扫描的每张表分配这个大小的一个缓冲区。如果你做很多顺序扫描,你可能想要增加该值。默认数值是131072(128K) |
| wait_timeout | # | 服务器在关闭它之前在一个连接上等待行动的秒数。 |
| interactive_timeout: | # | 服务器在关闭它前在一个交互连接上等待行动的秒数。一个交互的客户被定义为对 mysql_real_connect()使用 CLIENT_INTERACTIVE 选项的客户。 默认数值是28800,可以把它改为3600。 |
| skip-name-resolve | # | 禁止MySQL对外部连接进行DNS解析,使用这一选项可以消除MySQL进行DNS解析的时间。但需要注意,如果开启该选项,则所有远程主机连接授权都要使用IP地址方式,否则MySQL将无法正常处理连接请求! |
| log-slow-queries = slow.log | # | 记录慢查询,然后对慢查询一一优化 |
| skip-innodb skip-bdb | # | 关闭不需要的表类型,如果你需要,就不要加上这个------跟踪并记录sql语句,在配置文件里加上如下 log=local.log log-output=file 则sql语句就会记录在local.log文件里 |
二、my.ini
1 、主要参数
|---------------------------------------|---|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Client Section [client] port = 3306 | # | 设置mysql客户端连接服务端时默认使用的端口 |
| [mysql] default-character-set=utf8 | # | 设置mysql客户端默认字符集 |
| port=3306 | # | mysql服务端默认监听(listen on)的TCP/IP端口 |
| basedir= path | # | 基准路径,其他路径都相对于这个路径 |
| datadir= path | # | mysql数据库文件所在目录 |
| character-set-server=latin1 | # | 服务端使用的字符集默认为8比特编码的latin1字符集 |
| default-storage-engine=INNODB | # | 创建新表时将使用的默认存储引擎 sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" # SQL模式为strict模式 |
| max_connections=100 | # | mysql服务器支持的最大并发连接数(用户数)。但总会预留其中的一个连接给管理员使用超级权限登录,即使连接数目达到最大限制。如果设置得过小而用户比较多,会经常出现"Too many connections"错误。 |
| query_cache_size=0 | # | 查询缓存大小,用于缓存SELECT查询结果。如果有许多返回相同查询结果的SELECT查询,并且很少改变表,可以设置 query_cache_size大于0,可以极大改善查询效率。而如果表数据频繁变化,就不要使用这个,会适得其反 |
| table_cache=256 | # | 这个参数在5.1.3之后的版本中叫做table_open_cache,用于设置table高速缓存的数量。由于每个客户端连接都会至少访问一个表,因此此参数的值与 Max_connections有关。当某一连接访问一个表时,MySQL会检查当前已缓存表的数量。如果该表已经在缓存中打开,则会直接访问缓存中的表已加快查询速度;如果该表未被缓存,则会将当前的表添加进缓存并进行查询。在执行缓存操作之前,table_cache用于限制缓存表的最大数目:如果当前已经缓存的表未达到table_cache,则会将新表添加进来;若已经达到此值,MySQL将根据缓存表的最后查询时间、查询率等规则释放之前的缓存。 |
| tmp_table_size=34M | # | 内存中的每个临时表允许的最大大小。如果 临时表大小超过该值,临时表将自动转为基 于磁盘的表(Disk Based Table)。 |
| thread_cache_size=8 | # | 缓存的最大线程数。当客户端连接断开时,如果客户端总连接数小于该值,则处理客户端任务的线程放回缓存。在高并发情况下,如果该值设置得太小,就会有很多线程频繁创建,线程创建的开销会变大,查询效率也会下降。一般来说如果在应用端有良好的多线程处理,这个参数对性能不会有太大的提高。 |
2 、 MyISAM 相关参数
|--------------------------------|---|-------------------------------------------------------------------------------------------------------------------------------------------------------|
| myisam_max_sort_file_size=100G | # | mysql重建索引时允许使用的临时文件最大大小 |
| myisam_sort_buffer_size=68M | # | |
| key_buffer_size=54M | # | Key Buffer大小,用于缓存MyISAM表的索引块。决定数据库索引处理的速度(尤其是索引读) |
| read_buffer_size=64K | # | 用于对MyISAM表全表扫描时使用的缓冲区大小。针对每个线程进行分配(前提是进行了全表扫描)。进行排序查询时,MySql会首先扫描一遍该缓冲,以避免磁盘搜索,提高查询速度,如果需要排序大量数据,可适当调高该值。但MySql会为每个客户连接发放该缓冲空间,所以应尽量适当设置该值,以避免内存开销过大。 |
| read_rnd_buffer_size=256K | # | |
| sort_buffer_size=256K | # | connection级参数(为每个线程配置),500个线程将消耗500*256K的 |
3 、InnoDB相关参数
|------------------------------------|---|---------------------------------------------------------------------------------------------------------------------------------------------------------------|
| innodb_additional_mem_pool_size=3M | # | InnoDB用于存储元数据信息的内存池大小,般不需修改 |
| innodb_flush_log_at_trx_commit=1 | # | 事务相关参数,如果值为1,则InnoDB在每次commit都会将事务日志写入磁盘(磁盘IO消耗较大),这样保证了完全的ACID特性。而如果设置为0,则表示事务日志写入内存log和内存log写入磁盘的频率都为1次/秒。如果设为2则表示事务日志在每次commit都写入内存log,但内存log写入磁盘的频率为1次/秒。 |
| innodb_log_buffer_size=2M | # | InnoDB日志数据缓冲大小,如果缓冲满了,就会将缓冲中的日志数据写入磁盘(flush)。由于一般至少都1秒钟会写一次磁盘,所以 没必要设置过大,即使是长事务 |
| innodb_buffer_pool_size=105M | # | InnoDB使用缓冲池来缓存索引和行数据。
该值设为物理内存的80%。 |
| innodb_log_file_size=53M | # | 每一个InnoDB事务日志的大小。一般设为innodb_buffer_pool_size的25%到100%
|
| innodb_thread_concurrency=9 | # | InnoDB内核最大并发线程数 |