MySQL优化

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
日志服务 SLS,月写入数据量 50GB 1个月
简介: 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.使用反范式化设计,设计一定的冗余字段,以减少多表联合查询。
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
4天前
|
关系型数据库 MySQL 数据库
数据迁移脚本优化过程:从 MySQL 到 Django 模型表
在大规模的数据迁移过程中,性能问题往往是开发者面临的主要挑战之一。本文将分析一个数据迁移脚本的优化过程,展示如何从 MySQL 数据库迁移数据到 Django 模型表,并探讨优化前后的性能差异。
|
18天前
|
SQL Java 关系型数据库
MYSQL--JDBC优化
MYSQL--JDBC优化
|
4天前
|
存储 关系型数据库 MySQL
mysql optimizer_switch : 查询优化器优化策略深入解析
mysql optimizer_switch : 查询优化器优化策略深入解析
|
4天前
|
关系型数据库 MySQL 数据库
MySQL索引优化:深入理解索引合并
MySQL索引优化:深入理解索引合并
|
5天前
|
关系型数据库 MySQL 分布式数据库
PolarDB产品使用问题之 MySQL数据库中,执行delete命令删除数据后,存储空间通常不会立即释放,该如何优化
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
6天前
|
存储 关系型数据库 MySQL
Mysql优化之索引相关介绍(笔记)
索引查找从顶层节点开始查找,通过key值,也就是主键的值进行比较,最终定位到存储数据的叶子节点上面,从叶子节点取出响应的数据。
31 0
Mysql优化之索引相关介绍(笔记)
|
14天前
|
SQL 缓存 关系型数据库
MySQL慢查询优化实践问答
MySQL慢查询优化实践问答
|
17天前
|
缓存 关系型数据库 MySQL
如何优化MySQL 8.0的性能?
【6月更文挑战第14天】如何优化MySQL 8.0的性能?
60 5
|
15天前
|
关系型数据库 MySQL 数据库
mysql索引优化
【6月更文挑战第16天】mysql索引优化
15 2
|
19天前
|
缓存 监控 关系型数据库
mysql优化
【6月更文挑战第12天】mysql优化
23 3