mysql数据库优化之表的设计和慢查询定位

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 一、数据库优化包括的方面数据库优化是一种综合性的技术,并不是通过某一种方式让数据库效率提高很多,而是通过多方面的提高,从而使得数据库性能提高。 主要包括: 1、表的设计合理化(3范式) 2、给表添加合适的索引,如何使用索引 3、分表技术(水平分割、垂直分割) 4、定时清除数据垃圾,定时碎片整理 5、多用存储过程和触发器 6、对mysql配置进行优化 7、读写分离 8、my
一、数据库优化包括的方面
数据库优化是一种综合性的技术,并不是通过某一种方式让数据库效率提高很多,而是通过多方面的提高,从而使得数据库性能提高。
主要包括:
1、表的设计合理化(3范式)
2、给表添加合适的索引,如何使用索引
3、分表技术(水平分割、垂直分割)
4、定时清除数据垃圾,定时碎片整理
5、多用存储过程和触发器
6、对mysql配置进行优化
7、读写分离
8、mysql服务器硬件升级。


二、数据库的设计
步骤:
1、收集信息:与该系统有关人员进行交流,充分了解数据库需要完成的任务
 
2、标识实体:具体存在的对象,名词。
比如:用户、帖子、回帖、板块

3、标识属性


4、标识关系:
  1)一对一:两个表的主键是公共字段
  2)一对多:主键和非主键建关系
  3)多对一:非主键和主键建关系
  4)多对多:非主键和非主键建关系
5、将E-R图转成表
  1)将实体转成表,将属性转成字段
  2)如果找不到一个合适的字段做主键,我们添加一个自动增长列做主键。
  3)建立正确的关系


三、数据规范化


表设计出来以后,并不是最合理的结构,我们需要对表进行规范化(我们通过3范式来对表进行规范化)
先满足第一范式--再满足第二范式--再满足第三范式


1NF: 确保每列的原子性
     第一范式用来规范化所有的字段,所有的字段都不可再分

注意:比如地址这个字段,如果不分类汇总、不排序,仅仅起一个字符串的作用,这时我们不拆(反3范式)


2NF: 非键字段必须依赖于主键字段

如果一个关系满足1NF,并且除了主键以外其他列都依赖于该主键,则满足第二范式(2NF)


3NF: 消除传递依赖

在非主键字段中,如果一个字段可以推导另一个字段,这就叫传递依赖。


四、规范化和性能的关系

1、为了满足某种商业目标,数据库性能比规范化数据库更重要

通过对给定的表中添加额外的字段,以大量减少需要从中搜索信息所需要的时间。

通过在给定的表中插入计算列(比如成绩总分),以方便查询

2、进行规范化的同时需要考虑数据库的性能


五、定位慢查询

找出查询速度较慢的SQL语句。

增、删、改、查

其中查询占90%,增删改共占10%

Mysql数据库一些关于状态的查询

用"show status"           

指令                                                                  说明

show status                                                   查询mysql数据库的一些运行状态

show status like 'com_insert';                    显示执行了多少次插入操作

show status like 'com_update';                 显示执行了多少次更新操作

show status like 'com_delete';                    显示执行了多少次删除操作

show status like 'com_select';                    显示执行了多少次查询操作

show status like 'uptime';                             显示mysql启动了多长时间,如果时间很长了,数据库表的存储引擎有的是myisam,这时候注意要碎片整理。


show [session | global ] status like...,如果不写,默认是会话级(session),想要查询从mysql启动一直到现在,用global。


显示慢查询

show variables like 'long_query_time'         显示慢查询的时间,默认是10秒

set long_query_time=0.5                               把慢查询的时间设置为0.5秒,以便于测试

show status like 'slow_queries'         显示慢查询的时间,默认是10秒


定位慢查询(开启慢查询日志)

一旦开启慢查询日志以后,日志文件的位置在my.ini文件中去查找,默认情况下mysql不会记录慢查询


如何开启慢查询:

1、关闭当前mysql服务:net stop mysql

2、通过安全模式启动就会写日志。

3、关闭安全模式启动的mysql

4、把慢查询的时间设置为0.5秒,set long_query_time=0.5       

5、select * from table where xx='00' ;

6、到慢查询日志中去找对应的SQL语句。


反三范式:

范式越高。数据冗余就越少,但是有时就效率就越低下,为了提高运行效率,可以适当的让数据冗余。









相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
20天前
|
SQL 存储 数据库
优化数据库查询性能
【8月更文挑战第23天】优化数据库查询性能
42 7
|
28天前
|
数据库 索引
如何优化数据库索引?
【8月更文挑战第14天】如何优化数据库索引?
46 4
|
6天前
|
SQL 关系型数据库 分布式数据库
PolarDB Proxy配置与优化:提升数据库访问效率
【9月更文挑战第6天】PolarDB是阿里云推出的高性能分布式关系型数据库,PolarDB Proxy作为其关键组件,位于客户端与PolarDB集群间,负责SQL请求的解析与转发,并支持连接池管理、SQL过滤及路由规则等功能。本文详细介绍了PolarDB Proxy的配置方法,包括连接池、负载均衡和SQL过滤设置,并探讨了监控调优、缓存及网络优化策略,以帮助提升数据库访问效率。
15 1
|
6天前
|
存储 关系型数据库 MySQL
如何优化数据库查询?
如何优化数据库查询?
18 1
|
17天前
|
存储 缓存 负载均衡
【PolarDB-X 技术揭秘】Lizard B+tree:揭秘分布式数据库索引优化的终极奥秘!
【8月更文挑战第25天】PolarDB-X是阿里云的一款分布式数据库产品,其核心组件Lizard B+tree针对分布式环境优化,解决了传统B+tree面临的数据分片与跨节点查询等问题。Lizard B+tree通过一致性哈希实现数据分片,确保分布式一致性;智能分区实现了负载均衡;高效的搜索算法与缓存机制降低了查询延迟;副本机制确保了系统的高可用性。此外,PolarDB-X通过自适应分支因子、缓存优化、异步写入、数据压缩和智能分片等策略进一步提升了Lizard B+tree的性能,使其能够在分布式环境下提供高性能的索引服务。这些优化不仅提高了查询速度,还确保了系统的稳定性和可靠性。
44 5
|
14天前
|
缓存 NoSQL 数据库
Web服务器与数据库优化:提升系统性能的最佳实践
【8月更文第28天】在现代的Web应用中,Web服务器与后端数据库之间的交互是至关重要的部分。优化这些组件及其相互作用可以显著提高系统的响应速度、吞吐量和可扩展性。本文将探讨几种常见的优化策略,并提供一些具体的代码示例。
30 1
|
20天前
|
监控 数据库 索引
如何优化数据库索引?
【8月更文挑战第23天】如何优化数据库索引?
34 4
|
17天前
|
SQL 缓存 监控
优化大型数据库查询的最佳实践
在处理大规模数据时,数据库查询性能的优化至关重要。本文探讨了几种优化大型数据库查询的最佳实践,包括索引策略、查询重写、数据分区和缓存机制。通过这些方法,开发人员可以显著提高查询效率,减少系统负担,提升用户体验。本文还结合实际案例,提供了具体的优化技巧和工具建议,帮助读者有效地管理和优化大型数据库系统。
|
19天前
|
SQL 关系型数据库 MySQL
【MySQL 慢查询秘籍】慢SQL无处遁形!实战指南:一步步教你揪出数据库性能杀手!
【8月更文挑战第24天】本文以教程形式深入探讨了MySQL慢SQL查询的分析与优化方法。首先介绍了如何配置MySQL以记录执行时间过长的SQL语句。接着,利用内置工具`mysqlslowlog`及第三方工具`pt-query-digest`对慢查询日志进行了详细分析。通过一个具体示例展示了可能导致性能瓶颈的查询,并提出了相应的优化策略,包括添加索引、缩小查询范围、使用`EXPLAIN`分析执行计划等。掌握这些技巧对于提升MySQL数据库性能具有重要意义。
50 1

热门文章

最新文章