MySQL优化

本文涉及的产品
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: MySQL优化

MySQL

1. 优化SQL语句

MySQL慢日志的开启

查看数据库是否开启了慢查询日志
SHOW VARIABLES LIKE 'slow_query_log';
查看数据库是否将未使用索引的SQL记录到日志中
SHOW VARIABLES LIKE 'log_queries_not_using_indexes';
查看慢查询日志记录的慢查询日志时间
SHOW VARIABLES LIKE 'log_query_time';
查看慢查询日志文件存放位置
SHOW VARIABLES LIKE 'slow_query_log_file';
设置MySQL数据库开启慢查询日志
SET GLOBAL slow_query_log = on;
设置慢查询日志文件存储位置
SET GLOBAL slow_query_log_file='';
打开慢查询日志存储为设置索引的SQL
SET GLOBAL log_queries_not_using_indexes = on;
设置记录的慢查询日志超时时间
SET GLOBAL log_query_time = 1;

慢查询日志的存储格式
#time:  查询的开始时间
#user@host: 查询主机用户信息
#query_time: SQL的执行信息
#set timestamp: SQL执行时间
#select concat :执行的SQL语句

MySQL慢查询日志分析工具

mysqldumpslow -h

通过慢查询日志发现有问题的SQL

1.发现查询次数多且占用时间长的SQL(多:使用基于内存的数据库或使用缓存,长:优化SQL语句)
2.未命中索引的SQL(优化SQL语句添加特定索引优化)

使用explain查看SQL执行计划:查询结果属性说明

id select_type table type possible_keys key key_len ref rows extra
说明 查询id 查询类型 使用的表 类型 可能使用的索引 应用索引 索引长度 引用 返回行数 扩展说明

2.优化索引

选择合适的列建立索引

在where从句,group by从句,order by从句,on从句中出现的的列创建索引。
索引列的字段长度越小越好。
离散度大的列放到联合索引的前面。

索引的优化

1.避免使用重复及冗余的索引
2.去掉因业务变更,未使用的索引

3.数据库结构优化

优化数据大小

设计表以最小化磁盘空间,尽量使用最小化的数据大小来存储数据。

优化MySQL数据库数据类型

1.选择合适类型的数据类型,存储数据
2.使用可以存下你的数据的最小数据类型
3.尽可能使用简单的数据类型
4.尽可能使用not null定义字段,采用默认值方式
5.尽量少使用text类型,非用不可时最好使用分表的方式
6.数据库中不要存储二进制文本,图片,音频等数据。而要存储数据的网络路径
7.使用反范式化设计,设计一定的冗余字段,以减少多表联合查询。
相关实践学习
自建数据库迁移到云数据库
本场景将引导您将网站的自建数据库平滑迁移至云数据库RDS。通过使用RDS,您可以获得稳定、可靠和安全的企业级数据库服务,可以更加专注于发展核心业务,无需过多担心数据库的管理和维护。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
10月前
|
SQL 缓存 关系型数据库
MySQL 慢查询是怎样优化的
本文深入解析了MySQL查询速度变慢的原因及优化策略,涵盖查询缓存、执行流程、SQL优化、执行计划分析(如EXPLAIN)、查询状态查看等内容,帮助开发者快速定位并解决慢查询问题。
390 0
|
SQL 关系型数据库 MySQL
MySQL进阶突击系列(07) 她气鼓鼓递来一条SQL | 怎么看执行计划、SQL怎么优化?
在日常研发工作当中,系统性能优化,从大的方面来看主要涉及基础平台优化、业务系统性能优化、数据库优化。面对数据库优化,除了DBA在集群性能、服务器调优需要投入精力,我们研发需要负责业务SQL执行优化。当业务数据量达到一定规模后,SQL执行效率可能就会出现瓶颈,影响系统业务响应。掌握如何判断SQL执行慢、以及如何分析SQL执行计划、优化SQL的技能,在工作中解决SQL性能问题显得非常关键。
|
8月前
|
缓存 关系型数据库 MySQL
降低MySQL高CPU使用率的优化策略。
通过上述方法不断地迭代改进,在实际操作中需要根据具体场景做出相对合理判断。每一步改进都需谨慎评估其变动可能导致其他方面问题,在做任何变动前建议先在测试环境验证其效果后再部署到生产环境中去。
323 6
|
SQL 关系型数据库 MySQL
深入解析MySQL的EXPLAIN:指标详解与索引优化
MySQL 中的 `EXPLAIN` 语句用于分析和优化 SQL 查询,帮助你了解查询优化器的执行计划。本文详细介绍了 `EXPLAIN` 输出的各项指标,如 `id`、`select_type`、`table`、`type`、`key` 等,并提供了如何利用这些指标优化索引结构和 SQL 语句的具体方法。通过实战案例,展示了如何通过创建合适索引和调整查询语句来提升查询性能。
3180 10
|
9月前
|
存储 SQL 关系型数据库
MySQL 核心知识与索引优化全解析
本文系统梳理了 MySQL 的核心知识与索引优化策略。在基础概念部分,阐述了 char 与 varchar 在存储方式和性能上的差异,以及事务的 ACID 特性、并发事务问题及对应的隔离级别(MySQL 默认 REPEATABLE READ)。 索引基础部分,详解了 InnoDB 默认的 B+tree 索引结构(多路平衡树、叶子节点存数据、双向链表支持区间查询),区分了聚簇索引(数据与索引共存,唯一)和二级索引(数据与索引分离,多个),解释了回表查询的概念及优化方法,并分析了 B+tree 作为索引结构的优势(树高低、效率稳、支持区间查询)。 索引优化部分,列出了索引创建的六大原则
215 2
|
11月前
|
存储 SQL 关系型数据库
京东面试:mysql深度分页 严重影响性能?根本原因是什么?如何优化?
京东面试:mysql深度分页 严重影响性能?根本原因是什么?如何优化?
京东面试:mysql深度分页 严重影响性能?根本原因是什么?如何优化?
|
9月前
|
存储 SQL 关系型数据库
MySQL 动态分区管理:自动化与优化实践
本文介绍了如何利用 MySQL 的存储过程与事件调度器实现动态分区管理,自动化应对数据增长,提升查询性能与数据管理效率,并详细解析了分区创建、冲突避免及实际应用中的关键注意事项。
382 0
|
存储 关系型数据库 MySQL
MySQL细节优化:关闭大小写敏感功能的方法。
通过这种方法,你就可以成功关闭 MySQL 的大小写敏感功能,让你的数据库操作更加便捷。
997 19
|
关系型数据库 MySQL 数据库
从MySQL优化到脑力健康:技术人与效率的双重提升
聊到效率这个事,大家应该都挺有感触的吧。 不管是技术优化还是个人状态调整,怎么能更快、更省力地完成事情,都是我们每天要琢磨的事。
344 23
|
SQL 关系型数据库 MySQL
基于SQL Server / MySQL进行百万条数据过滤优化方案
对百万级别数据进行高效过滤查询,需要综合使用索引、查询优化、表分区、统计信息和视图等技术手段。通过合理的数据库设计和查询优化,可以显著提升查询性能,确保系统的高效稳定运行。
767 9

热门文章

最新文章

推荐镜像

更多