影响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要求不高。
----->总结:要根据自己系统的特性选择更适合更廉价的硬件设备。
相关推荐
MySQL分布式数据库中间件Mycat是一款广泛应用于大数据处理和高并发场景的重要工具,它通过将数据分布到多个物理节点上,实现了数据的水平扩展。在实际应用中,Mycat的性能调优对于系统的整体效率至关重要。本指南将...
MySQL分布式数据库MyCAT方案 MySQL分布式数据库MyCAT方案是基于 MySQL 数据库管理系统和 MyCAT 分布式数据库中间件的实践方案。该方案的主要目的是为了解决传统 MySQL 数据库的单点故障和性能瓶颈问题,提高数据库...
MySQL Cluster是一种高可用、高性能的分布式数据库解决方案,它在MySQL服务器的基础上增加了数据的冗余和分布处理能力。本文将深入探讨MySQL Cluster的核心概念、架构、工作原理以及如何使用。 一、MySQL Cluster...
### MySQL分布式事务处理与XA协议详解 #### 一、引言 在当今互联网技术高度发展的背景下,分布式系统已经成为处理大规模数据的关键技术之一。而在分布式环境中,确保数据的一致性成为了非常重要的挑战。其中,...
本资源提供的"mysql-connector-java-5.1.37-jar"正是这个驱动程序的一个版本,发布于5.1.37稳定版。 首先,我们来了解MySQL Connector/J的基本功能。它是MySQL官方推荐的用于Java应用的JDBC驱动,支持标准的JDBC...
【分布式事务——LCN】LCN 是一种分布式事务解决方案,其设计目的是协调多个局部事务以达到全局一致性。...在实际应用中,根据业务特点和需求选择合适的模式,同时充分利用其特性优化性能和资源使用。
### MySQL分布式集群安装详解 #### 一、概述 在当今数据密集型的应用环境中,数据库的高可用性与扩展性成为了企业级应用的关键因素之一。MySQL作为一款广泛使用的开源关系型数据库管理系统,在支持分布式架构方面...
分布式事务框架Hulk是专为解决大规模分布式系统中事务一致性问题而设计的高性能解决方案。它在复杂的微服务架构中扮演着关键角色,确保业务数据在多个服务之间的一致性。Hulk通过提供灵活的事务处理策略,使得开发者...
6. **分布式数据库**:如MySQL集群,通过主从复制、分区、分片等方式,实现数据的分散存储和读写分离,保证数据的一致性和高可用性。 7. **消息队列**:如RabbitMQ或Kafka,用于异步处理订单创建、支付通知等业务,...
本篇将详细讲解基于提供的文件名所涵盖的三个关键知识点:MySQL双机集群、MySQL AB Cluster以及MySQL分布式集群部署。 1. MySQL双机集群: 双机集群,也称为主备复制,是一种常见的高可用性解决方案。在这个配置中...
MySQL-connector-java-8.0.29.zip文件包含了这个特定版本的MySQL Connector/J的所有组件。 在MySQL-connector-java-8.0.29这个版本中,用户可以找到以下关键组件和功能: 1. **JDBC驱动程序**: 这是核心组件,提供...
MySQL性能优化与架构设计是数据库管理员、开发人员和系统管理员关注的重要领域,因为数据库性能直接影响到应用程序的响应速度和整体用户体验。本资料提供了一个全面的视角,深入探讨了如何优化MySQL的性能并进行有效...
- **添加依赖**:将`mysql-connector-java-5.1.27-bin.jar`文件引入项目类路径,对于Maven项目,可在pom.xml中添加对应的依赖配置。 - **建立连接**:使用`java.sql.DriverManager`类的`getConnection()`方法,...
总的来说,`mysql-connector-java-5.1.27-bin.jar.zip`在Hive环境中用于建立与MySQL数据库的连接,允许在Hive SQL查询中操作和管理MySQL中的数据,是大数据生态中连接关系型数据库与分布式计算框架的重要组件。...
本篇将围绕“MySQL高性能—数据库的性能调优”这一主题,深入探讨如何优化MySQL的性能,提升系统整体效率。 首先,性能优化主要涉及以下几个方面: 1. **查询优化**:高效的SQL查询是性能提升的关键。这包括避免全...
在分布式环境中,如果应用需要高可用性和负载均衡,`mysql-connector-java-8.0.12`也可以与MySQL的复制和集群配置协同工作,自动发现和重路由到可用的数据库实例。 总之,`mysql-connector-java-8.0.12`是连接Java...
5. **数据库自带的分布式事务支持**:许多现代数据库系统,如MySQL的InnoDB引擎,提供了分布式事务的支持,通过诸如XA协议来处理跨库事务。 6. **基于消息队列的事务处理**:例如使用RabbitMQ或Kafka,消息可以作为...
MySQL Cluster是一种高可用性、高性能的数据库解决方案,它在MySQL服务器的基础上增加了分布式数据存储和实时事务处理的能力。在“mysql-cluster-8.0.20-winx64.zip”这个压缩包中,我们找到了MySQL Cluster的...