美文网首页调优程序员Java学习笔记
「mysql优化专题」详解引擎(InnoDB,MyISAM)的内

「mysql优化专题」详解引擎(InnoDB,MyISAM)的内

作者: Java进阶架构师 | 来源:发表于2017-12-17 19:17 被阅读81次

    上一篇我们讲了关于视图应用与优化,本篇我们讲解内存优化。本篇短小精悍,通俗易懂。

    注意:以下都是在MySQL目录下的my.ini文件中改写。

    一、InnoDB内存优化

    InnoDB用一块内存区域做I/O缓存池,该缓存池不仅用来缓存InnoDB的索引块,而且也用来缓存InnoDB的数据块。

    1、innodb_log_buffer_size

    决定了InnoDB重做日志缓存的大小,可以避免InnoDB在事务提交前就执行不必要的日志写入磁盘操作。

    2、设置Innodb_buffer_pool_size

    改变量决定了InnoDB存储引擎表数据和索引数据的最大缓存区大小。

    二、MyISAM内存优化

    MyISAM存储引擎使用key_buffer缓存索引模块,加速索引的读写速度。对于MyISAM表的数据块,mysql没有特别的缓存机制,完全依赖于操作系统的IO缓存。

    1、read_rnd_buffer_size

    对于需要做排序的MyISAM表查询,如带有order by子句的sql,适当增加read_rnd_buffer_size的值,可以改善此类的sql性能。但需要注意的是read_rnd_buffer_size独占的,如果默认设置值太大,就会造成内存浪费。

    2、key_buffer_size设置

    key_buffer_size决定MyISAM索引块缓存分区的大小。直接影响到MyISAM表的存取效率。对于一般MyISAM数据库,建议1/4可用内存分配给key_buffer_size:

    key_buffer_size=2G

    3、read_buffer_size

    如果需要经常顺序扫描MyISAM表,可以通过增大read_buffer_size的值来改善性能。但需要注意的是read_buffer_size是每个seesion独占的,如果默认值设置太大,就会造成内存浪费。

    三、调整MySQL参数并发相关的参数

    1、调整max_connections

    提高并发连接

    2、调整thread_cache_size

    加快连接数据库的速度,MySQL会缓存一定数量的客户服务线程以备重用,通过参数thread_cache_size可控制mysql缓存客户端线程的数量。

    3、innodb_lock_wait_timeout

    控制InnoDB事务等待行锁的时间,对于快速处理的SQL语句,可以将行锁等待超时时间调大,以避免发生大的回滚操作。


    已完结专题:

    【mysql优化专题】【多线程/池专题】【架构技术专题】

    更新中专题:

    【dubbo专题】【dubbo源码专题】【JVM专题】【HTTP协议专题】【设计模式专题】【高并发专题】

    【架构技术专题】【netty专题】【数据结构专题】【redis专题】

    欢迎关注我的个人技术公众号,获取零基础入门学java,架构师全集,云计算,大数据,Python等视频资源!

    相关文章

      网友评论

        本文标题:「mysql优化专题」详解引擎(InnoDB,MyISAM)的内

        本文链接:https://www.haomeiwen.com/subject/mmruwxtx.html