专栏名称: 程序猿
本微信公众号:imkuqin,为程序员提供最新最全的编程学习资料的查询。目前已经开通PHP、C/C++函数库、.NET Framework类库、J2SE API查询功能。
目录
相关文章推荐
程序员的那些事  ·  不到 2 个月,OpenAI 火速用 ... ·  2 天前  
程序员的那些事  ·  疯了!我那些怀疑 AI ... ·  5 天前  
稀土掘金技术社区  ·  协程中使用 ... ·  4 天前  
51好读  ›  专栏  ›  程序猿

MySQL性能优化总结

程序猿  · 公众号  · 程序员  · 2017-05-19 22:31

正文

请到「今天看啥」查看全文


10)CSV存储引擎


CSV存储引擎实际上操作的就是一个标准的CSV文件,他不支持索引。起主要用途就是大家有些时候可能会需要通过数据库中的数据导出成一份报表文件,而CSV文件是很多软件都支持的一种较为标准的格式,所以我们可以通过先在数据库中建立一张CVS表,然后将生成的报表信息插入到该表,即可得到一份CSV报表文件了。


四、影响MySQLServer性能的相关因素


1 商业需求对性能的影响


典型需求:一个论坛帖子总量的统计,要求:实时更新。


2 系统架构及实现对性能的影响


以下几类数据都是不适合在数据库中存放的:


二进制多媒体数据

流水队列数据

超大文本数据


通过Cache技术来提高系统性能:


系统各种配置及规则数据;

活跃用户的基本信息数据;

活跃用户的个性化定制信息数据;

准实时的统计信息数据;

其他一些访问频繁但变更较少的数据;


3 Query语句对系统性能的影响


需求:取出某个group(假设id为1)下的用户编号(id),用户昵称(nick_name),并按照加入组的时间(user_group.gmt_create)来进行倒序排列,取出前20个。


解决方案一:


SELECT id,nick_name FROM user,user_group WHERE user_group.group_id=1 and user_group.user_id=user.id ORDER BY user_group.gmt_create desc limit 100,20;


解决方案二:


SELECT user.id,user.nick_name FROM(SELECT user_idFROM user_groupWHERE user_group.group_id=1ORDER BY gmt_create desclimit 100,20)t,userWHERE t.user_id=user.id;


通过比较两个解决方案的执行计划,我们可以看到第一中解决方案中需要和user表参与Join的记录数MySQL通过统计数据估算出来是31156,也就是通过user_group表返回的所有满足group_id=1的记录数(系统中的实际数据是20000)。而第二种解决方案的执行计划中,user表参与Join的数据就只有20条,两者相差很大,我们认为第二中解决方案应该明显优于第一种解决方案。


4 Schema设计对系统的性能影响


尽量减少对数据库访问的请求。

尽量减少无用数据的查询请求。


5 硬件环境对系统性能的影响


1、典型OLTP应用系统


对于各种数据库系统环境中大家最常见的OLTP系统,其特点是并发量大,整体数据量比较多,但每次访问的数据比较少,且访问的数据比较离散,活跃数据占总体数据的比例不是太大。对于这类系统的数据库实际上是最难维护,最难以优化的,对主机整体性能要求也是最高的。因为不仅访问量很高,数据量也不小。


针对上面的这些特点和分析,我们可以对OLTP的得出一个大致的方向。


虽然系统总体数据量较大,但是系统活跃数据在数据总量中所占的比例不大,那么我们可以通过扩大内存容量来尽可能多的将活跃数据cache到内存中;


虽然IO访问非常频繁,但是每次访问的数据量较少且很离散,那么我们对磁盘存储的要求是IOPS表现要很好,吞吐量是次要因素;


并发量很高,CPU每秒所要处理的请求自然也就很多,所以CPU处理能力需要比较强劲;


虽然与客户端的每次交互的数据量并不是特别大,但是网络交互非常频繁,所以主机与客户端交互的网络设备对流量能力也要求不能太弱。


2、典型OLAP应用系统


用于数据分析的OLAP系统的主要特点就是数据量非常大,并发访问不多,但每次访问所需要检索的数据量都比较多,而且数据访问相对较为集中,没有太明显的活跃数据概念。


基于OLAP系统的各种特点和相应的分析,针对OLAP系统硬件优化的大致策略如下:


数据量非常大,所以磁盘存储系统的单位容量需要尽量大一些;


单次访问数据量较大,而且访问数据比较集中,那么对IO系统的性能要求是需要有尽可能大的每秒IO吞吐量,所以应该选用每秒吞吐量尽可能大的磁盘;


虽然IO性能要求也比较高,但是并发请求较少,所以CPU处理能力较难成为性能瓶颈,所以CPU处理能力没有太苛刻的要求;


虽然每次请求的访问量很大,但是执行过程中的数据大都不会返回给客户端,最终返回给客户端的数据量都较小,所以和客户端交互的网络设备要求并不是太高;


此外,由于OLAP系统由于其每次运算过程较长,可以很好的并行化,所以一般的OLAP系统都是由多台主机构成的一个集群,而集群中主机与主机之间的数据交互量一般来说都是非常大的,所以在集群中主机之间的网络设备要求很高。







请到「今天看啥」查看全文