首页 > 数据库 >mysql优化

mysql优化

时间:2024-09-02 10:38:19浏览次数:3  
标签:存储 mysql 查询 索引 MySQL 优化

mysql数据库,是一种关系型数据库。

1.mysql引擎
mysql主要是有innodb和myisam两种引擎。
innodb引擎:
事务支持:InnoDB 是支持事务的存储引擎,可以使用提交(commit)和回滚(rollback)来保证数据的完整性。
行级锁定:InnoDB 使用行级锁定(row-level locking),这意味着在操作数据时只会锁定需要修改的行,而不是整个表,有助于提高并发性能。
外键约束:InnoDB 支持外键约束,可以确保数据的完整性,保证参照完整性。
崩溃恢复:InnoDB 提供了崩溃恢复功能,可以自动进行恢复,保证数据的一致性。

innodb是聚集索引,采用b+tree的索引结构文件。存储必生成主键。
存储文件:.frm 存储表信息
.ibd 存索引和数据

myisam引擎:
全文搜索:MyISAM 对全文搜索功能支持较好,适合用于需要频繁进行全文搜索的场景。
表级锁定:MyISAM 使用表级锁定(table-level locking),这意味着在操作数据时会锁定整个表,可能导致并发性能较差。
不支持事务:MyISAM 不支持事务处理,因此无法使用提交和回滚等操作来维护数据的完整性。
不支持外键:MyISAM 不支持外键约束,需要在应用层面去维护数据的一致性。

myisam的存储文件:.frm 存储表信息
.myd 存储数据行
.myi 存索引

选择存储引擎取决于具体的业务需求。如果需要事务支持、行级锁定和数据完整性,通常会选择InnoDB。
如果对全文搜索有很高的要求,并且不需要事务支持,可以选择MyISAM。
在实际应用中,也可以根据具体的场景灵活选择不同的存储引擎以获得最佳性能。

2.mysql索引优化
原文链接:https://blog.csdn.net/u012581020/article/details/130686557
1.硬件配置:包括CPU、内存、磁盘等硬件资源的选择和配置,以满足系统的负载和性能需求。
2.软件配置:包括MySQL的参数设置和调整,如缓存大小、连接数、并发处理数等,以适应不同的负载和访问模式。
3.SQL语句优化:包括查询语句的重构、优化和索引设计,以提高查询效率和响应速度。
4.数据结构优化:包括表结构设计和数据类型选择,以减小数据存储和访问的成本。
5.架构优化:包括MySQL主备、分片等高可用、高可扩展架构的选择和部署,以实现系统的稳定性和可扩展性需求。

作为开发者,目前做的最多的是关于sql优化和数据结构优化

3.SQL语句优化
SQL语句优化是MySQL性能优化的关键,合理的SQL语句设计和索引优化可以显著提高系统的查询效率和响应速度。常见的SQL语句优化方法包括:

(1)使用索引:索引是MySQL查询的关键,通过合理的索引设计和使用,可以加快查询速度和减少IO操作,从而提高MySQL的性能。
(2)避免全表扫描:全表扫描是效率低下的查询方式,需要尽量避免使用。可以通过索引和条件过滤等方式优化查询语句,提高查询效率。
(3)合理使用JOIN:JOIN是SQL语句中常用的操作,但如果JOIN的表过多或不合理使用,会导致性能问题。需要合理选择JOIN的表和方式,避免无意义的JOIN操作。
(4)优化子查询:子查询是复杂查询的一种常见方式,但如果不合理使用,会导致性能问题。需要尽量避免嵌套过多的子查询和不必要的查询操作。

5.数据库设计优化
除了对MySQL本身进行优化,对数据库结构和数据表的设计也可以显著影响MySQL的性能。以下是一些常用的数据库设计优化方法:

(1)冗余数据的处理:避免在多个数据表中存储相同的信息,这会增加查询和更新操作的负担。
(2)合理使用数据类型:选择恰当的数据类型可以减小数据表大小,从而提高查询和更新操作的效率。
(3)合理设计索引:索引是提高查询效率的关键,需要根据实际情况选择合适的字段作为索引,并避免创建过多或不必要的索引。
(4)分区表设计:对于单个数据表数据量较大的情况,可以采用分区表的方式将数据表划分成多个子表,以提高查询效率和响应速度。
(5)使用存储过程和触发器:存储过程和触发器可以在MySQL内部执行,减少通信开销,从而提高MySQL的性能。

3.mysql的explain
可看这个详细解释:
https://blog.csdn.net/SHI940637335/article/details/141277881

在使用sql优化的过程中,我们可以使用explain进行分析。
explain解释计划窗口,可以很好的看到,sql的执行效率,对复杂的sql有着分析解刨的功能。有利于我们优化和对索引的添加。
通过explain命令可以得到:
– 表的读取顺序
– 数据读取操作的操作类型
– 哪些索引可以使用
– 哪些索引被实际使用
– 表之间的引用
– 每张表有多少行被优化器查询

标签:存储,mysql,查询,索引,MySQL,优化
From: https://www.cnblogs.com/yinxixi/p/18388054

相关文章

  • MySQL5.7.36之主从复制部署安装-centos7
    主库是192.168.31.209:3306从库是192.168.31.210:3308、192.168.31.209:3307、192.168.31.210:3309、192.168.31.211:3310、192.168.31.211:3311切记:不管是主库还是从库,server_id一定不能重复1、主库创建复制账号及授权createuser'repl'@'%'identifiedby'7E%mAt8mbZXQ......
  • Python/MySQL无法正确持久化整数数据
    如果在Python中使用MySQL时无法正确持久化整数数据,可能有以下几个原因:数据类型不匹配:确保在MySQL表中定义的列的数据类型与你在Python中要插入或更新的整数数据类型相匹配。例如,如果列的数据类型是INT,则在Python中应该使用整数类型(如int)来表示数据。连接参数问题:检查你......
  • 添加到MySQL中的json
    要将JSON数据添加到MySQL中,你可以使用MySQL提供的JSON数据类型。以下是一般的步骤:确保你的MySQL版本支持JSON数据类型。JSON数据类型在MySQL5.7及更高版本中可用。创建表时,将包含JSON数据的列定义为JSON类型。例如:CREATETABLEyour_table(idINTPRIMARY......
  • 关于电商平台订单查询SQL优化的案例
    背景:某中型电商企业,随着业务的快速发展,订单数据量急剧增长。他们的电商系统使用的是MySQL数据库,在运营一段时间后,发现订单查询功能出现了明显的性能问题。特别是在以下几个关键业务场景中:客户服务团队在处理客户咨询时,需要快速查询客户的历史订单信息,包括订单详情、支付状......
  • 国际SEO:如何为多个国家优化您的网站
    什么是国际SEO?国际SEO是指通过对网站进行优化,使其在不同地区和语言中同样能够在谷歌搜索中获得良好排名。这种策略对于那些目标客户分布在多个国家或语言的企业来说至关重要,涉及从网站结构调整以适应不同地区到内容定制以符合文化相关性和语言准确性的各种技术。国际SEO和本......
  • MySQL Replication 主从复制详解
    1.1主从复制基础概念在了解主从复制之前必须要了解的就是数据库的二进制日志(binlog),主从复制架构大多基于二进制日志进行,二进制日志相关信息参考:http://www.cnblogs.com/clsn/p/8087678.html#_label61.1.1二进制日志管理说明二进制日志在哪?如何设置位置和命名?......
  • 【工程应用十二】Bayer图像格式中Hamilton-Adams及Zhang Wu 基于LMMSS算法的Demosaic
    Demosaic,中文直接发翻译为去马赛克,但是其本质上并不是去除马赛克,这让很多第一次接触这个名词或者概念的人总会想的更多。因此,一般传感器在采集信息时一个位置只采集RGB颜色中的一个通道,这样可以减少采集量,降低成本,由于人的视觉对绿色最为敏感,所以一般情况下,绿色分量会比红色......
  • 以MySQL为例,来看看maven-shade-plugin如何解决多版本驱动共存的问题?
    开心一刻清明节那天,看到一小孩在路边烧纸时不时地偷偷往火堆里扔几张考试卷子边烧边念叨:爷爷呀,你岁数大了,在那边多做做题吧,对脑子好,要是有不懂的地方,就把我老师带走,让他教您!前提说明假设MySQL5.7.36的库qsl_datax有表qsl_datax_source和数据CREATETABLE`qsl_datax......
  • Java性能优化传奇之旅--Java万亿级性能优化之Java 性能优化逆袭:常见错误不再是阻碍
           ......
  • Java代码优化:提升应用性能的策略
    Java代码优化:提升应用性能的策略大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在Java开发中,代码优化是提升应用性能的关键步骤。通过优化代码,可以减少内存使用、提高执行速度和增强程序的响应能力。本文将探讨一些有效的Java代码优化策略。算法优......