`

mysql 优化心得

阅读更多
  mysql的优花其实是个艰难的工作,要搞的东西太多了,之前在http://www.cnblogs.com/jackyrong/archive/2008/05/04/1182331.html
中摘了一些原则,最近对一个100多万条数据的表做优花时,有如下心得:

1) 取必须要用的数据
    这里对于select 语句中只选有用的字段,这样的原则就肯定人人都知道的了。但关键的是,要从全局考虑问题,比如我的这个应用
是每个新闻网页的跟帖,一条新闻有很多很多人跟帖,平均有40-50条,那么每天这么多新闻,很多的跟帖记录,但对于审帖
者,由于是每天上班工作的,每天他们会把当天的帖子审核掉,因此,在做记录列表时,只需要选用出当前时间以内1-2天的记录就可以了,
这里已经是大大优化
2 ) 建好索引
     这里的学问太多,也太多文章讲,这里不说
3 ) MYSQL的优化
      第三个工作才是MYSQL的优化,其实就是改my.ini,有如下几点,归纳下.(我的是4G内存的双核机器)
   A 设置key_buffer_size
   

key_buffer_size指定索引缓冲区的大小,这个值越高,索引可以使用的内存越多,一般为可用内存的25-30%,它决定索引处理的速度,尤其是索引读的速度。通过检查状态值Key_read_requestsKey_reads,可以知道key_buffer_size设置是否合理。比例key_reads / key_read_requests应该尽可能的低,至少是1:1001:1000更好(上述状态值可以使用SHOW STATUS LIKE ‘key_read%’获得)。

key_buffer_size只对MyISAM表起作用。即使你不使用MyISAM,但是内部的临时磁盘表是MyISAM表,也要使用该值。可以使用检查状态值created_tmp_disk_tables得知详情。

对于1G内存的机器,如果不使用MyISAM表,推荐值是16M8-64M)。

 B max_connections数量
     MYSQL建议使用table_cache=max_connection*N来设置tablecache,N为标准连接中表的数量
 C table_cache
  

table_cache指定表高速缓存的大小。每当MySQL访问一个表时,如果在表缓冲区中还有空间,该表就被打开并放入其中,这样可以更快地访问表内容。通过检查峰值时间的状态值Open_tablesOpened_tables,可以决定是否需要增加table_cache的值。如果你发现open_tables等于table_cache,并且opened_tables在不断增长,那么你就需要增加table_cache的值了(上述状态值可以使用SHOW STATUS LIKE ‘Open%tables’获得)。注意不能盲目地把table_cache设置成很大的值。如果设置得太高,可能会造成文件描述符不足,从而造成性能不稳定或者连接失败。

对于有1G内存的机器,推荐值是128256
D 提高order by groud by的速度,通过设置sort_buufer变量进行控制,还可以增加read_rnd_buffer_size变量值,也可以增加read_buffer_size值,提高select的查询速度
 E query_cache_size

4.0.1开始,MySQL提供了查询缓冲机制。使用查询缓冲,MySQLSELECT语句和查询结果存放在缓冲区中,今后对于同样的SELECT语句(区分大小写),将直接从缓冲区中读取结果。根据MySQL用户手册,使用查询缓冲最多可以达到238%的效率。

通过检查状态值Qcache_*,可以知道query_cache_size设置是否合理(上述状态值可以使用SHOW STATUS LIKE ‘Qcache%’获得)。如果Qcache_lowmem_prunes的值非常大则表明经常出现缓冲不够的情况,如果Qcache_lowmem_prunes增长迅速,意味着很多缓存因为内存不够而被释放,而不是因为相关表被更新。尝试加大query_cache_size,尽量使Qcache_lowmem_prunes零增长。
如果
Qcache_hits的值也非常大,则表明查询缓冲使用非常频繁,此时需要增加缓冲大小;如果Qcache_hits的值不大,则表明你的查询重复率很低,这种情况下使用查询缓冲反而会影响效率,那么可以考虑不用查询缓冲。此外,在SELECT语句中加入SQL_NO_CACHE可以明确表示不使用查询缓冲。
    

分享到:
评论

相关推荐

    mysql数据库优化的学习心得

    MySQL数据库优化心得:选取最适用的字段属性;使用连接(JOIN)来代替子查询(Sub-Queries);使用联合(UNION)来代替手动创建的临时表;事务;锁定表;外键等。

    MySQL性能优化心得1

    4.1、存储引擎的优化 3 4.2、数据库设计和查询优化 7 4.2.2 查询设计 10 4.3、服务器端优化 10 4.3.2 服务器设臵优化 10 4.4、

    MYSQL使用心得(三)----性能与管理优化

    NULL 博文链接:https://phl.iteye.com/blog/1820182

    mysql数据库优化总结(心得)

    本篇文章是对mysql数据库优化进行了详细的总结与介绍,需要的朋友参考下

    与MSSQL对比学习MYSQL的心得(六)–函数

    数学函数 1、求余函数MOD(X,Y) MOD(X,Y)返回x被y除后的余数,MOD()对于带有小数部分的数值也起作用,他返回除法运算后的精确余数 SELECT MOD(31,8) 2、四舍五入函数TRUNCATE(X,Y) TRUNCATE(X,Y)返回被舍去至...

    毕业设计-基于SSM的mysql-校园图书在线阅读系统-设计与实现(源码 + 数据库 + LW + 演示视频).zip

    本文借助SSM框架以及Mysql数据库开发设计一款针对在线图书阅读的系统,用户可以通过在线图书借阅实现书籍内容的在线阅读,同时结合JSP技术的应用实现了在线阅读系统平台的动态数据响应,帮助在校学生实现更加便捷的...

    JAVA毕业设计之springboot019高校心理教育辅导设计与实现(springboot+mysql)完整源码.zip

    数据统计:管理员可以查看系统的各项数据,如用户数量、测试成绩、咨询记录等,以便对系统的运行情况进行分析和优化。技术栈:后端:Spring Boot、MyBatis、MySQL前端:HTML、CSS、JavaScript、jQuery、Bootstrap...

    MySQL单表查询常见操作实例总结

    本文实例总结了MySQL单表查询常见操作。分享给大家供大家参考,具体如下: 创建fruits表: CREATE TABLE fruits ( f_id char(10) NOT NULL, s_id INT NOT NULL, f_name char(255) NOT NULL, f_price decimal(8,...

    基于SSM+Mysql的软件学院互助答疑平台.zip

    知识分享:学生可以分享自己的学习心得、学习资源、学习方法等,帮助其他学生更好地理解和掌握知识。 标签和分类:平台支持问题的标签和分类,方便学生快速找到相关问题和答案。学生可以根据自己的兴趣和专业领域...

    MySQL中Nested-Loop Join算法小结

    优化器做的比较差,其实某种程度上来说确实是这样,但是毕竟MySQL才到5.7版本,Oracle都已经发展到12c了,今天我就看了看MySQL的连接算法,嗯,现在来说还是不支持Hash Join,只有Nested-Loop Join,那今天就总结...

    JAVA实习报告及心得(6页).doc

    在三个月里,所学知识的确有很多,java基础,数据库操作(oracle,mysql),SSH框架(hibernate,struts,spring),网页设计jsp技术等,总之学到了很多曾经陌生的技术。受益匪浅。 实习计划 7月10日:简单地了解...

    管理系统javasal源码-SQL:SQL原理及优化

    记笔记,写代码,做心得总结 这次MYSQL学习,真的让我明白了,为啥字符串/文件操作/树/链表/排序算法这些基础知识这么重要... P1&P2&P3&P4 索引是帮助MySQL高效获取数据的排好序的数据结构 索引数据结构: 二叉树 ...

    全新:九年双11:互联网技术超级工程

    阿里工程师将至今以来的经验与心得,凝聚在《九年双11:互联网技术超级工程》,首次对外免费公开。近300页、毫无保留的分享,为你展示阿里技术的崭新面貌与实力。 1. 17年双十一,达到了每秒32.5万笔的交易创建峰值...

    微信小程序基于微信小程序的购物系统+php.zip

    微信小程序“基于微信小程序的购物系统Php.zip”是一个基于PHP...它不仅提供了一个便利的在线购物工具,还通过综合化的服务和智能化的管理,优化了购物流程,提升了用户的购物体验和满意度,是现代零售业的理想选择。

    高性能高并发服务器架构大全

     谈谈大型高负载网站服务器的优化心得! 8  Lighttpd+Squid+Apache搭建高效率Web服务器 9  浏览量比较大的网站应该从哪几个方面入手? 17  用负载均衡技术建设高负载站点 20  大型网站的架构设计问题 ...

    基于php的游戏门户网站设计

    在页面设计上,尽量遵循简单、实用的原则,同时尽量兼顾页面的美化和功能布局的优化,使网站的整体效果看起来简洁实用。以 HTML 作为静态页面的编程语言,以 PHP 语言编写动态页面,实现人机的交互和用户数据的处理...

    Java毕业设计-基于springboot开发的原创歌曲分享平台--论文-附毕设源代码+说明文档.rar

    同时,我们采用了MySQL数据库进行数据存储,保证了数据的安全性和稳定性。 此外,平台还注重用户体验的优化,通过精心设计的界面和流畅的操作流程,为用户带来良好的使用体验。用户可以在平台上轻松浏览和搜索自己...

    Java毕业设计-基于springboot开发的中国陕西民俗网-毕业论文(附毕设源代码).rar

    用户可以在网站上留言评论、分享心得,与其他民俗爱好者进行交流和互动,形成了一个活跃的民俗文化社区。 此外,该项目还具有很好的二次开发定制性。源代码清晰规范,易于理解和扩展。开发者可以根据实际需求,对...

    基于SSM的校园即时服务平台.zip

    前端采用Bootstrap、jQuery等前端技术进行页面展示与交互,后端使用MySQL数据库进行数据存储。此外,项目还使用了Redis作为缓存技术,提高了系统性能。主要功能:a. 用户管理:支持学生、教师和工作人员注册、登录、...

Global site tag (gtag.js) - Google Analytics