经过配置Mysql参数提升写入速度

1) innodb_buffer_pool_size
mysql

若是用Innodb,那么这是一个重要变量。相对于MyISAM来讲,Innodb对于buffer size更敏感。MySIAM可能对于大数据量使用默认的key_buffer_size也还好,但Innodb在大数据量时用默认值就感受在爬了。 Innodb的缓冲池会缓存数据和索引,因此不须要给系统的缓存留空间,若是只用Innodb,能够把这个值设为内存的70%-80%。和 key_buffer相同,若是数据量比较小也不怎么增长,那么不要把这个值设过高也能够提升内存的使用率。sql

2) innodb_additional_pool_size数据库

这个的效果不是很明显,至少是当操做系统能合理分配内存时。但你可能仍须要设成20M或更多一点以看Innodb会分配多少内存作其余用途。缓存

3) innodb_log_file_size
安全

对于写不少尤为是大数据量时很是重要。要注意,大的文件提供更高的性能,但数据库恢复时会用更多的时间。我通常用64M-512M,具体取决于服务器的空间。服务器

4) innodb_log_buffer_size
性能

默认值对于多数中等写操做和事务短的运用都是能够的。若是常常作更新或者使用了不少blob数据,应该增大这个值。但太大了也是浪费内存,由于1秒钟总会 flush(这个词的中文怎么说呢?)一次,因此不须要设到超过1秒的需求。8M-16M通常应该够了。小的运用能够设更小一点。大数据

5) innodb_flush_log_at_trx_commit (这个很管用)spa

抱怨Innodb比MyISAM慢 100倍?那么你大概是忘了调整这个值。默认值1的意思是每一次事务提交或事务外的指令都须要把日志写入(flush)硬盘,这是很费时的。特别是使用电 池供电缓存(Battery backed up cache)时。设成2对于不少运用,特别是从MyISAM表转过来的是能够的,它的意思是不写入硬盘而是写入系统缓存。日志仍然会每秒flush到硬 盘,因此你通常不会丢失超过1-2秒的更新。设成0会更快一点,但安全方面比较差,即便MySQL挂了也可能会丢失事务的数据。而值2只会在整个操做系统 挂了时才可能丢数据。操作系统

6) innodb_flush_method: 设置InnoDB同步IO的方式

1) Default – 使用fsync()。

2) O_SYNC 以sync模式打开文件,一般比较慢。

3) O_DIRECT,在Linux上使用Direct IO。能够显著提升速度,特别是在RAID系统上。避免额外的数据复制和double buffering(mysql buffering 和OS buffering)

7) 保持 thread_cache 在一个相对较高的数字,大约 16 – 防止打开链接时缓慢。

8) 分配一个极小的数量给 max_connections 参数 – 太多的链接会用尽RAM并锁定MySQL服务。

9) 将 innodb_autoextend_increment 配置因为默认8M 调整到 128M

此配置项做用主要是当tablespace 空间已经满了后,须要MySQL系统须要自动扩展多少空间,每次tablespace 扩展都会让各个SQL 处于等待状态。增长自动扩展Size能够减小tablespace自动扩展次数。

注:修改完配置以后重启可能失败,这时须要删除 /var/lib/mysql/ 目录下的两个ib_logfile文件 命令rm -fr /var/lib/mysql/ib_logfile* 而后执行重启命令(service mysqld restart))重启执行mysql –uroot -p进入mysql 利用命令show variables like '%storage%';查看参数是否已被修改。

相关文章
相关标签/搜索