影响MySQL的性能因素
1、业务需求对mysql的影响(合适合度)
- 例如: 买家卖家评论帖子实时统计???
-
要求:
- 统计对该产品的评价帖子,要实时的!
-
问题
- 假如这个数据量很小OK,可以实时查询,假如越来越多,积累了好多万客户评论帖子
- 1 select count(*)对于刚开始数量很小时可以,如果数据增大已经有千万级的,一个查询就哭吧,成为系统性能瓶颈。
- 2 你正在统计时候也有买家卖家修改增删评论,你不能要求用户说我统计的时候你们不许动
-
解决
- 单独一个表,单独一个字段来保存这个帖子数目。 每一个买家新增一条评论就是需要更新一个这个数字,各买家是多个(高并发)不定时的在发布帖子,实时修改更新后再统计select count(*)。 就算我们使用的是Innodb存储引擎,一个update数字他就是行锁,高并发的瓶颈出现了
-
结论
- 很多的统计信息都是准实时的而不是实时统计,网站的一些数量信息、分页信息、排序信息、点击率信息等等一般都不是实时的而是准实时的。携程网络订机票看看。
-
要求:
2、存储定位对MySQL的影响
-
不适合放进mysql的数据
- 二进制多媒体数据
- 流水队列数据
- 超大文本数据
-
需要放进缓存的数据
- 系统各种配置及规则数据
- 活跃用户的基本信息数据
- 活跃用户的个性化定制信息数据
- 准实时的统计信息数据
- 其他一些访问频繁但变更较少的数据
3、Schema设计对系统的性能影响
- 尽量减少对数据库访问的请求
- 尽量减少无用数据的查询请求
- p2p中user_main和我的账户金额冗余问题(user_main表信息中冗余部分金额信息)
4、硬件环境对系统性能的影响
-
典型OLTP应用系统
- 什么是OLTP:OLTP即联机事务处理,就是我们经常说的关系数据库,意即记录即时的增、删、改、查,就是我们经常应用的东西,这是数据库的基础
- 对于各种数据库系统环境中大家最常见的OLTP系统,其特点是并发量大,整体数据量比较多,但每次访问的数据比较少,且访问的数据比较离散,活跃数据占总体数据的比例不是太大。对于这类系统的数据库实际上是最难维护,最难以优化的,对主机整体性能要求也是最高的。因为不仅访问量很高,数据量也不小。
- 针对上面的这些特点和分析,我们可以对OLTP的得出一个大致的方向。
- 虽然系统总体数据量较大,但是系统活跃数据在数据总量中所占的比例不大,那么我们可以通过扩大内存容量来尽可能多的将活跃数据cache到内存中;
- 虽然IO访问非常频繁,但是每次访问的数据量较少且很离散,那么我们对磁盘存储的要求是IOPS表现要很好,吞吐量是次要因素;
- 并发量很高,CPU每秒所要处理的请求自然也就很多,所以CPU处理能力需要比较强劲;
- 虽然与客户端的每次交互的数据量并不是特别大,但是网络交互非常频繁,所以主机与客户端交互的网络设备对流量能力也要求不能太弱。
-
典型OLAP应用系统
- 用于数据分析的OLAP系统的主要特点就是数据量非常大,并发访问不多,但每次访问所需要检索的数据量都比较多,而且数据访问相对较为集中,没有太明显的活跃数据概念。
- 什么是OLAP:OLAP即联机分析处理,是数据仓库的核心部心,所谓数据仓库是对于大量已经由OLTP形成的数据的一种分析型的数据库,用于处理商业智能、决策支持等重要的决策信息;数据仓库是在数据库应用到一定程序之后而对历史数据的加工与分析
- 基于OLAP系统的各种特点和相应的分析,针对OLAP系统硬件优化的大致策略如下:
- 数据量非常大,所以磁盘存储系统的单位容量需要尽量大一些;
- 单次访问数据量较大,而且访问数据比较集中,那么对IO系统的性能要求是需要有尽可能大的每秒IO吞吐量,所以应该选用每秒吞吐量尽可能大的磁盘;
- 虽然IO性能要求也比较高,但是并发请求较少,所以CPU处理能力较难成为性能瓶颈,所以CPU处理能力没有太苛刻的要求;
- 虽然每次请求的访问量很大,但是执行过程中的数据大都不会返回给客户端,最终返回给客户端的数据量都较小,所以和客户端交互的网络设备要求并不是太高;
- 此外,由于OLAP系统由于其每次运算过程较长,可以很好的并行化,所以一般的OLAP系统都是由多台主机构成的一个集群,而集群中主机与主机之间的数据交互量一般来说都是非常大的,所以在集群中主机之间的网络设备要求很高。