Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1865961
  • 博文数量: 273
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2000
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-31 14:30
个人简介

自己慢慢积累。

文章分类

全部博文(273)

分类: Mysql/postgreSQL

2015-08-13 22:51:14

先挖坑,待测试!
参考: 深入浅出MYSQL di

1、控制 innodb buffer 刷新,延长数据缓存时间,减缓磁盘I/O
   *innodb_max_dirty_pages_pct --控制缓存池中脏页的最大比例,默认是75%
   *innodb_io_capacity  -- 代表磁盘的能力,默认200,磁盘转速低时可以适当调低(7200转可调整为100)
    例:
    若 innodb_buffer_pool_wait_free 的值增长较快,说明Innodb经常在等待空闲缓存页,可以增大 innodb_buffer_pool_instances (缓存池),或者应将 innodb_max_dirty_pages_pct  调小,或将 innodb_io_capacity 提高,以加快脏页的刷新

2、Innodb 脏页刷新双写策略(doublewrite)

   *buffer 会同时写到doubewrite buffer 和 redo ,如果要求超高性能,有能容忍极端情况下少量数据的丢失。
    可以通过在配置文件中增加 innodb_doublewrite=0 来关闭doublewrite

3、调整排序缓存区
   *sort_buffer_size
   如果通过 show global status 看到 sort_merge_passes 的值很大,可以考虑调整 sort_buffer_size 的值来增大排序缓存区,改善order by 和 group by的性能

4、设置合理的log file size ,控制检查点
当一个日志文件写满后,innodb会自动切换到另一个日志文件,但切换时会触发数据库检查点,将导致innodb 缓存脏页的小批量刷新。
但是 innodb_log_file_size 设置太大,恢复时将需要更长时间。 一般来说,每半个小时写满1个日志文件比较合适
计算每分钟产生的日志量:
mysql> pager grep -i "Log sequence number";
mysql>show engine innodb status\G select sleep(60); show engine innodb status\G
mysql>nopager
mysql>select ROUND((90110000 - 901022222)) /1024 / 1024)as MB;
得出每分钟产生的日志大小(MB)

5、调整 innodb_log_buffer_size
innodb_log_buffer_size 决定INNODB 重做日志缓存池的大小,默认是8M.对于大量更新记录的大事务,增加  innodb_log_buffer_size 可以避免INNODB 在事务提交前就执行不必要的日志写入磁盘操作
     (可以理解为,至少要调整到=最大事务的大小。)
阅读(548) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~