Mysql 优化

[quote]
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
24 Intel(R) Xeon(R) CPU E5-2630 0 @ 2.30GHz
[/quote]

[quote]
$free
total used free shared buffers cached
Mem: 49531892 4153752 45378140 0 157772 281952
-/+ buffers/cache: 3714028 45817864
Swap: 1999864 0 1999864
[/quote]


[table]
|binlog_cache_size|5M|是 MySQL 用来提高binlog的记录效率而设计的一个用于短时间内临时缓存binlog数据的内存区域,默认才32K|
|concurrent_insert|2|MyISAM引擎的数据表可由concurrent_insert 参数来控制是否可以insert语句的并发或insert与select语句的并发。|
|connect_timeout|30|The number of seconds that the mysqld server waits for a connect packet before responding with Bad handshake.|
|innodb_additional_mem_pool_size|20M|这个参数用来设置 InnoDB 存储的数据目录信息和其它内部数据结构的内存池大小。应用程序里的表越多,你需要在这里分配越多的内存。对于一个相对稳定的应用,这个参数的大小也是相对 稳定的,也没有必要预留非常大的值。如果 InnoDB 用光了这个池内的内存, InnoDB 开始从操作系统分配内存,并且往 MySQL 错误日志写警告信息。默认值是 1MB ,当发现错误日志中已经有相关的警告信息时,就应该适当的增加该参数的大小。|
|innodb_autoextend_increment| |当自动扩展表空间被填满之时,每次扩展空间的大小,默认值是8(单位MB)。|
|innodb_buffer_pool_size|32g|innodb_buffer_pool_size 定义了 InnoDB 存储引擎的表数据和索引数据的最大内存缓冲区大小。和 MyISAM 存储引擎不同, MyISAM 的 key_buffer_size 只能缓存索引键,而 innodb_buffer_pool_size 却可以缓存数据块和索引键。适当的增加这个参数的大小,可以有效的减少 InnoDB 类型的表的磁盘 I/O 。在一个以 InnoDB 为主的专用数据库服务器上,可以考虑把该参数设置为物理内存大小的 60%-80% 。|
|innodb_change_buffering|inserts|在5.5之前。这还不叫change buffer,而是insert buffer;
当更新/插入的非聚集索引的数据所对应的页不在内存中时(对非聚集索引的更新操作通常会带来随机IO),会将其放到一个insert buffer中,当随后页面被读到内存中时,会将这些变化的记录merge到页中。当服务器比较空闲时,后台线程也会做merge操作

但insert buffer会占用buffer pool,并且在非聚集索引很少时,并不总是必要的,反而会降低buffer pool做data cache的能力,5.5提供了参数innodb_change_buffering来对其进行控制
根据官方文档的描述,主要包括以下几个值:
1.all
The default value: buffer inserts, delete-marking operations, and purges.
2.none
Do not buffer any operations.
3.inserts
Buffer insert operations.
4.deletes
Buffer delete-marking operations.(包括delete和update操作)
5.changes
Buffer both inserts and delete-marking.
6.purges|
|innodb_fast_checksum|1|innodb_fast_checksum = 1:开启Fast checksum特性|
|innodb_file_per_table|1|可以修改InnoDB为独立表空间模式,每个数据库的每个表都会生成一个数据空间。
独立表空间:
优点:
1. 每个表都有自已独立的表空间。
2. 每个表的数据和索引都会存在自已的表空间中。
3. 可以实现单表在不同的数据库中移动。
4. 空间可以回收(除drop table操作处,表空不能自已回收)
innodb_flush_log_at_trx_commit 2 抱怨Innodb比MyISAM慢 100倍?那么你大概是忘了调整这个值。默认值1的意思是每一次事务提交或事务外的指令都需要把日志写入(flush)硬盘,这是很费时的。特别是使用电 池供电缓存(Battery backed up cache)时。设成2对于很多运用,特别是从MyISAM表转过来的是可以的,它的意思是不写入硬盘而是写入系统缓存。日志仍然会每秒flush到硬 盘,所以你一般不会丢失超过1-2秒的更新。设成0会更快一点,但安全方面比较差,即使MySQL挂了也可能会丢失事务的数据。而值2只会在整个操作系统 挂了时才可能丢数据。 |
|innodb_flush_method|O_DIRECT|innodb_flush_method则确定日志及数据文件如何write、flush。|
|innodb_io_capacity|1000|在合并插入缓冲时,合并插入缓冲的数量为innodb_io_capacity数值的5%。在从缓冲区刷新脏页时,刷新脏页的数量为innodb_io_capacity。|
|innodb_lock_wait_timeout|50|MySQL可以自动地监测行锁导致的死锁并进行相应的处理,但是对于表锁导致的死锁不能自动的监测,所以该参数主要被用于在出现类似情况的时候等待指定的时间后回滚。系统默认值是50秒,用户可以根据应用的需要进行调整。|
|innodb_log_buffer_size|10M|这是 InnoDB 存储引擎的事务日志所使用的缓冲区。类似于 Binlog Buffer,InnoDB 在写事务日志的时候,为了提高性能,也是先将信息写入 Innofb Log Buffer 中,当满足 innodb_flush_log_trx_commit 参数所设置的相应条件(或者日志缓冲区写满)之后,才会将日志写到文件(或者同步到磁盘)中。可以通过 innodb_log_buffer_size 参数设置其可以使用的最大内存空间。
注:innodb_flush_log_trx_commit 参数对 InnoDB Log 的写入性能有非常关键的影响。该参数可以设置为0,1,2,解释如下:
0:log buffer中的数据将以每秒一次的频率写入到log file中,且同时会进行文件系统到磁盘的同步操作,但是每个事务的commit并不会触发任何log buffer 到log file的刷新或者文件系统到磁盘的刷新操作;
1:在每次事务提交的时候将log buffer 中的数据都会写入到log file,同时也会触发文件系统到磁盘的同步;
2:事务提交会触发log buffer 到log file的刷新,但并不会触发磁盘文件系统到磁盘的同步。此外,每秒会有一次文件系统到磁盘同步操作。|
|innodb_log_files_in_group|4|The number of log files in the log group. InnoDB writes to the files in a circular fashion. The default (and recommended) value is 2.|
|innodb_log_file_size|1000M|Innodb 引擎 log 文件大小, 在 IO <<< +- >>>恢复时间 做权衡.|
|innodb_max_dirty_pages_pct|50|This is an integer in the range from 0 to 99. The default value is 75. The main thread in InnoDB tries to write pages from the buffer pool so that the percentage of dirty (not yet written) pages will not exceed this value. |
|innodb_open_files|65535|作用:限制Innodb能打开的表的数据。
分配原则:如果库里的表特别多的情况,请增加这个。这个值默认是300。请适当的增加table_cache
|innodb_read_io_threads|4|innodb_read_io_threads/innodb_write_io_threads
1、异步IO线程数
innodb_read_io_threads/innodb_write_io_threads 异步IO线程数|
|innodb_rollback_on_timeout|OFF|事务会回滚到上一个保存点,InnoDB在执行每条SQL语句之前,都会创建一个保存点. 但事务尚未提交|
|innodb_stats_on_metadata|0|0为关闭索引统计.默认是开启,可能对线上环境有影响.|
|innodb_thread_concurrency|16|这个是innodb内核的并发线程处理参数|
|innodb_write_io_threads|16|innodb_read_io_threads/innodb_write_io_threads 异步IO线程数, 有文章说 4/4 就ok了. |
|join_buffer_size|4M|在参加JOIN操作的数据列没有索引时为JOIN操作分配的缓存区长度(默认设置是128K)|
|key_buffer|8M|疑似: key_buffer_size , 网上并没有找到 key_buffer 资料.|
|key_buffer_size||索引缓存的大小,默认值是16M|
|max_allowed_packet|24M|当MySQL客户端或mysqld服务器收到大于max_allowed_packet字节的信息包时,将发出“信息包过大”错误,并关闭连接。服务器默认max-allowed-packet为1MB|
|max_binlog_size|500M|二进制日志文件的最大长度(默认设置是1GB)|
|max_connections|3100|修改最大连接数|
|max_connect_errors|1500|max_connect_errors是一个MySQL中与安全有关的计数器值,它负责阻止过多尝试失败的客户端以防止暴力破解密码的情况。max_connect_errors的值与性能并无太大关系。|
|max_user_connections|3000|这个用户的最大连接数|
|myisam_sort_buffer_size|20M|设置恢复表之时使用的缓冲区的尺寸|
|query_cache_size||查询结果缓存, 会影响'写'的性能.|
|query_cache_type|0|关闭 Query Cache 功能,任何情况下都不会使用 Query Cache|
|read_buffer||疑似 read_buffer_size|
|read_buffer_size|4M|为从数据表顺序读取数据的读操作保留的缓存区的长度(默认设置是128KB);|
|read_rnd_buffer_size|5M|类似于read_buffer_size选项,但针对的是按某种特定顺序(比如使用了ORDER BY子句的查询)输出的查询结果(默认设置是256K)。|
|sort_buffer_size|4M|Sort_Buffer_Size 是一个connection级参数,在每个connection第一次需要使用这个buffer的时候,一次性分配设置的内存。|
|sync_binlog|1000|sync_binlog=n,当每进行n次事务提交之后,MySQL将进行一次fsync之类的磁盘同步指令来将binlog_cache中的数据强制写入磁盘。|
|table_cache|2048|表缓存:在mysql默认安装情况下,table_cache的值在2G内存以下的机器中的值默认时256到512,如果机器有4G内存,则默认这个值是2048,但这决意味着机器内存越大,这个值应该越大,因为table_cache加大后,使得mysql对SQL响应的速度更快了,不可避免的会产生更多的死锁(dead lock)|
|table_definition_cache|2048|缓存的表的数量:在MySQL5.1.25 之前的版本中,默认值为128,从MySQL5.1.25 版本开始,则将默认值调整为256 |
|table_open_cache||增加table_open_cache,会增加文件描述符,当把table_open_cache设置为很大时,如果系统处理不了那么多文件描述符,那么就会出现客户端失效,连接不上|
|thread_cache_size|256|Thread_Cache 中存放的最大连接线程数. 目测 256 比较大|

[/table]

[size=large][color=red]ITeye 弄个大点的Table好费劲.[/color][/size]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值