Mysql 优化

引用

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


引用

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



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.allThe default value: buffer inserts, delete-marking operations, and purges.2.noneDo not buffer any operations.3.insertsBuffer insert operations.4.deletesBuffer delete-marking operations.(包括delete和update操作)5.changesBuffer 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_threads1、异步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 比较大


ITeye 弄个大点的Table好费劲.

你可能感兴趣的:(mysql)