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命令可以得到:
– 表的读取顺序
– 数据读取操作的操作类型
– 哪些索引可以使用
– 哪些索引被实际使用
– 表之间的引用
– 每张表有多少行被优化器查询