首页 > 数据库技术 > 详细

mysql管理之道自我整理(一)

时间:2016-02-23 19:16:37      阅读:382      评论:0      收藏:0      [点我收藏+]

mysql5.5介绍:

  1. mysql5.5开始使用默认引擎是Innodb引擎,在mysql5.5里InnodDB Plugin文件格式要调整为Barracuda。Barracuda格式支持表压缩功能,Truacate table 的速度比以前更快。

  2. 充分利用cpu多核的处理能力。使用innodb_write_io_threads 和 innodb_read_io_threads参数。调整linux平台上对cpu核数来更改相应的参数值。默认是4。可以根据读写情况来进行调整设置。

  3. 提高刷新脏页数量和合并插入数量,改善磁盘I/O处理能力。innodb_io_capacity参数来调控,默认是200。

    innodb_io_capatity  磁盘配置  

    200         单盘SAS/SATA

    2000         SAS*12 RAID10

    5000         SSD

    50000        FUSION-IO 

  4. 增加自适应刷新脏页功能,innodb_adaptive_flushing,默认是开启的。它试用了一个全新的算法,以便根据重做日志ib_logfile生产的速度和刷新频率来将脏页刷入磁盘,这样重做日志ib_logfile还没有写满时,也可以刷新一定的量。让innodb_buffer_pool缓冲池中的热数据存活更久。buffe_pool是有2个缓冲区,一个是sublist of new blocks(热数据)区域,一个是sublist of old blocks(不常访问的数据)区域。当用户访问数据是,如果缓冲区有相应的数据则直接返回,否则会从磁盘读入还从去的sublist of old blocks区域,然后在移动到sublist of new blocks区域,并通过LRU最近最少使用算法来剔出旧数据页。innodb_old_blocks_pct参数可以控制进入缓冲区sublist of old blocks 区域的数量,默认是37,占整个缓冲池的比例3/8。例如:dump时,可以修改innodb_old_blocks_pct小一些,使数据块进入少量sublist of old blocks区域,并移动到new blocks区域。从而让更多的热数据不被踢出。   

     show engine innodb status \G 状态信息如下所示:    

    old database pages 23600: 在旧区域存放着多少个页。    

    pages made young: 移动到新区域的有多少个页。    

    page made not young: 没有移动到新区域的有多少个页。    

    youngs/s: 每秒移动到新区也的有多少个页。    

    non-youngs/s: 每秒没有移动到新去也的有多少个页。    

    young-making rage:移动到新区域的比例。    

    young-making not rate: 没有移动到新区域的比例。

    如果你没有全表扫描,发现youngs/s的值很小,那么就应该增大innodb_old_blocks_pct或减小   innodb_old_bolcks_time。如果全表扫描,发现non-youngs/s值小,就应该增大innodb_old_bolcks_time。

  5. innodb同时支持多个bufferPool实例。最多支持到64个,buffer_pool_size必须大于1G,生产多实例才有效。提高默认innodb线程并发数。有请求时,如果超过innodb_thread_concurrency(5.5,默认是0,不限制并发数,为了更好的发挥多核处理能力)预先设置的并发线程数量,那么就会按照innodb_thread_sleep_delay预先设定的值休眠N秒,只有在尝试连接,充实2次的机制是为了减少cpu上下文切换的次数,以降低cpu的消耗。如果请求被接受,则会获得一个innodb_concurrency_tickets默认500次的通行证,在这些次数完成前,不需要在进行innodb_thread_concurrency的检查。如果没有接受,就会进入队列中,待处理。

  6. 提高默认innodb线程并发数。 innodb_thread_concurrency默认是0,表示不限制并发数,可以提高cpu多核利用率。限制并发数,是减少cpu上下文切换,以降低cpu消耗。

  7. 预读算法的变化。一种是线性预读,一种是随机预读。默认是线性预读:当顺序读取extent块(包含64个page)innodb_read_ahead_threshold设置的page页数数量时,出发一个异步读取请求,将下一个页提前读取到buffer_pool中。

mysql管理之道自我整理(一)

原文:http://7078981.blog.51cto.com/7068981/1744344

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!