当前位置: 代码迷 >> MySQL >> mysql分布式思想(三)-性能优化之影响mysql性能的因素
  详细解决方案

mysql分布式思想(三)-性能优化之影响mysql性能的因素

热度:353   发布时间:2016-05-05 16:21:10.0
mysql分布式思维(三)-性能优化之影响mysql性能的因素

影响mysql性能的因素
1.商业需求对性能的影响
???? ----->商业需求需要合理
???? ----->论坛(小的需求)
?????????????? ----->实时统计帖子的总量? select count(*) 即可? 如果现在标中已经有千万条记录
??????? ----->这样的一个查询就会有很大的消耗? 成为性能的瓶颈
??????? ----->帖子的数目专门一张表一个字段来存放,那么该表就会变成高并发
????????????????? 即使innodb存储引擎也不行,因为行锁,而帖子数据就只有一行。无法应对高并发操作又会成为瓶颈
???? ----->很多的统计信息都是准实时的而不是实时统计
????????????? ----->网站的一些数量信息、分页信息、排序信息等等
???????????????? 一般都不是实时的而是准实时的。
???? ----->在公司内部应该有一个评估来评估需求是否合理
?????????????? ----->产品经理提出新需求的时候,一定要给出预期的收益指标,以备上线后计算投入产出比率
??????? ----->在项目进行过程中,要详细记录投入(人了、硬件等)
??????? ----->上线之后实际的收益值
??????? ----->总结出一些规则和规律
2.系统架构(存储架构)及实现对性能的影响
??? ---->数据存储架构要合理(后面会详细讲解 --->特别是分布式的情况)
?????????? ---->架构合理才是雪中送炭的,然后才是其它方面的优化
??? ---->你的数据是否都适合放在mysql中
????????? ----->流水队列数据
?? ----->二进制多媒体数据
?? ----->超大的文本数据
?? ----->其它??? 文件、图片等等
??? ----->是否做适当的缓存
??????????? ---->数据库访问及其频繁的数据? 是否做了热点缓存
???? ---->数据库Server本身的缓存是否合理使用
???? ---->什么样的数据是否放在缓存当中
????????????? ---->热点数据
?????? ---->系统各种配置及规则数据
?????? ---->活跃用户的基本信息数据
?????? ---->准实时的统计信息数据
?????? ---->...? ....
??? ----->数据库设计、数据query语句的实现等等

?3.query语句对数据库性能的影响(后面会详细讲解)
??????? ---->开发人员不能只关注查询结果不关注查询过程
?????? --->例:每个用户查询各自相册列表(假设每个列显示10张相片),能够在相片后有留言,
??????????????????? 我们要查看留言的数量。
????? --->方案1:? select id,subject,url from photo where user_id=? limit 10
??????????????????????? 通过第一步的结果循环10次执行select count(*) from photo_comment where photo_id=?
????????????????????????? --->方案2 :?
??????????????????????? 第一步和上面是一样的
????????? 第二步通过程序拼装上面的到的10个photo_id,通过in查询
????????? select photo_id,count(*) from photo_comment where photo_id in(?)group by photo_id"
????? ?????? 一次得到10个photo_id所有的回复数量

??? ---->简要分析的方案2更简单一些。
?----->将来要具体看执行计划和性能损耗情况(cpu,io的损耗情况)
?----->需要了解mysql整个查询的原理,性能损耗情况等情况在后续的章节中会详细讲解。
4.Schema设计对系统性能影响(后续章节也会详细讲解)
????? ---->论坛帖子案例(假设现在是高并发的一个论坛系统)
????????????? ---->高并发的论坛最高的并发在哪里?
????????????????? ----->最高的并发是查看帖子标题列表,现在往往帖子标题后面会跟一个作者的昵称
????????????? 这里就需要有一个join查询
?????????? ----->在高并发的操作当中是不应该用join查询的
??? ----->我们会在帖子表中冗余存放作者昵称
???????????????? ---->违反了范式??? ---->现在的设计经常范式和非范式结合使用


5.硬件环境对数据库的性能的影响
??? ---->如何去选择服务器
????????? ---->添加后者购买数据库服务器有什么标准吗
???????????? ---->很多企业在购买服务器的时候需要负责人员提出方案? 该方案如何写。
????????? ----->了解TPC
?????????????? ----->TPMC---衡量服务器的处理能力的

??? ----->如何去选择具体的硬件
????????????? ---->OLTP系统
???????????????? ---->并发量大,整体数据量多,每次访问数据较少,访问数据比较离散,
?????????? 有活跃数据并且比例不大。
????????? ---->要大的内存活跃数据可以Cache,访问频繁每次访问数据少
?????????? 那么对磁盘的IOPS表现要好,吞吐量是次要的。并发高,CPU要求高
????网络交互频繁网络设备要求较高
???? ------>OLAP的系统
??????????????? ---->数据量大,并发访问不多,每次访问需要检索的数据都比较多,访问集中,
???????????????? 没有明显的活跃数据
???????? ---->尽可能大的磁盘吞吐量,并发不多,CPU要求不高。

??? ----->总结:要根据自己系统的特性选择更适合更廉价的硬件设备。

  相关解决方案