知识大全 mysql性能的检查和调优方法[5]

Posted 索引

篇首语:勤劳一日,可得一夜安眠;勤劳一生,可得幸福长眠。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 mysql性能的检查和调优方法[5]相关的知识,希望对你有一定的参考价值。

    这时可以看到 结果集还是 条 但是Extra中的filesort不见了 这时mysql使用userid_clicks这个索引去查询 这不但能快速查询到userid= admin 的所有记录 并且结果是根据clicks排好序的!所以不用再把这个结果集读入内存一条一条排序了 效率上会高很多 但是用多字段索引这种方式有个问题 如果查询的sql种类很多的话 就得好好规划一下了 否则索引会建得非常多 不但会影响到数据insert和update的效率 而且数据表也容易损坏 以上是对索引优化的办法 因为原因可能会比较复杂 所以写得比较的长 一般好好优化了索引之后 mysql的效率会提升n个档次 从而也不需要考虑增加机器来解决问题了 但是 mysql甚至所有数据库 可能都不好解决limit的问题 在mysql中 limit 只要索引合适 是没有问题的 但是limit 就会很慢了 因为mysql会扫描排好序的结果 然后找到 这个点 取出 条返回 要找到 这个点 就要扫描 条记录 这个循环是比较耗时的 不知道会不会有什么好的算法可以优化这个扫描引擎 我冥思苦想也想不出有什么好办法 对于limit 目前直至比较久远的将来 我想只能通过业务 程序和数据表的规划来优化 我想到的这些优化办法也都还没有一个是万全之策 往后再讨论

    sql写法过于复杂

    sql写法假如用到一些特殊的功能 比如groupby 或者多表联合查询的话 mysql用到什么方式来查询也可以用desc来分析 我这边用复杂sql的情况还不算多 所以不常分析 暂时就没有好的建议

    配置错误

    配置里主要参数是key_buffer sort_buffer_size/myisam_sort_buffer_size 这两个参数意思是 key_buffer= M 全部表的索引都会尽可能放在这块内存区域内 索引比较大的话就开稍大点都可以 我一般设为 M 有个好的建议是把很少用到并且比较大的表想办法移到别的地方去 这样可以显著减少mysql的内存占用 sort_buffer_size= M 单个线程使用的用于排序的内存 查询结果集都会放进这内存里 如果比较小 mysql会多放几次 所以稍微开大一点就可以了 重要是优化好索引和查询语句 让他们不要生成太大的结果集

    另外一些配置

    thread_concurrency= 这个配置标配=cpu数量x

    interactive_timeout=

    wait_timeout= 这两个配置使用 秒就可以了 这样会尽快地释放内存资源 注意 一直在使用的连接是不会断掉的 这个配置只是断掉了长时间不动的连接

    query_cache 这个功能不要使用 现在很多人看到cache这几个字母就像看到了宝贝 这是不唯物主义的 mysql的query_cache在每次表数据有变化的时候都会重新清理连至该表的所有缓存 如果更新比较频繁 query_cache不但帮不上忙 而且还会对效率影响很大 这个参数只适合只读型的数据库 如果非要用 也只能用query_cache_type= 自行用SQL_CACHE指定一些sql进行缓存

    max_connections 默认为 一般情况下是足够用的 但是一般要开大一点 开到 就可以了 能超过 的话一般就有效率问题 得另找对策 光靠增加这个数字不是办法

    其它配置可以按默认就可以了 个人觉得问题还不是那么的大 提醒一下 配置虽然很重要 但是在绝大部分情况下都不是效率问题的罪魁祸首 mysql是一个数据库 对于数据库最重要考究的不应是效率 而是稳定性和数据准确性

cha138/Article/program/MySQL/201311/29769

相关参考

知识大全 mysql性能的检查和调优方法

  我一直是使用mysql这个数据库软件它工作比较稳定效率也很高在遇到严重性能问题时一般都有这么几种可能  索引没有建好  sql写法过于复杂  配置错误  机器实在负荷不了  索引没有建好  如果看

知识大全 mysql性能的检查和调优方法[1]

   我一直是使用mysql这个数据库软件它工作比较稳定效率也很高在遇到严重性能问题时一般都有这么几种可能   索引没有建好 &n

知识大全 mysql性能的检查和调优方法[6]

   机器实在负荷不了   如果做了以上调整服务器还是不能承受那就只能通过架构级调整来优化了   mysql同

知识大全 mysql性能的检查和调优方法[3]

   嗯这时可以看到mysql使用了userid这个索引搜索了用userid索引一次搜索后结果集有条然后虽然使用了filesort一条一条排序但是因为结果集只有区区条效率

知识大全 mysql性能的检查和调优方法[2]

   rowinset(sec)   注意keyrows和Extra这三项这条语句返回的结果说明了该sql会使用PRIMARY主键索引来查询

知识大全 MySQL 性能调优

MySQL性能调优  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!   

知识大全 Java的垃圾回收机制详解和调优

Java的垃圾回收机制详解和调优  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  JVM的gc概述

知识大全 MySQL 5.4预览版发布 性能提高90%

MySQL5.4预览版发布性能提高90%  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  自月日甲

知识大全 MySQL数据库性能优化的实际操作方案[5]

MySQL数据库性能优化的实际操作方案[5]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nbs

知识大全 Hibernate性能调优

Hibernate性能调优  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  inverse=?