MySQL——性能优化与关系型数据库

文章目录

    • 什么是性能?
    • 什么是关系型数据库?
      • 数据库设计范式
    • 常见的数据库
    • SQL语言
      • 结构化查询语言的六个部分
      • 版本
    • MySQL数据库
      • 故事
      • 历史版本
        • 5.6/5.7差异
        • 5.7/8.0差异

什么是性能?

  1. 吞吐与延迟:有些结论是反直觉的,指导我们关注什么。
  2. 没有量化就没有改进:监控与度量指标,指导我们怎么去入手。
  3. 80/20原则:先优化性能瓶颈问题,指导我们如何去优化。
  4. 过早的优化是万恶之源:指导我们要选择优化的时机。
  5. 脱离场景谈性能都是耍流氓:指导我们对性能要求要符合实际,在服务器上运行和在笔记本上运行是不一样的。

在对大多数情况下,我们面对的是一个老的遗留的业务系统。如果对这个老系统进行优化,一般会涉及它的容量,稳定性以及可用性。一般情况,优先考虑的点就是优化数据库相关的性能。也就是下面我们将谈论的内容。

什么是关系型数据库?

?

数据库设计范式

  1. 第一范式:保证属性(列)的原子性,属性不可再分;

比如以学生档案相关属性举例,对应的表包含【学号】。【姓名】、【院系】、【分数】四个属性,其中【院系】不满足原子性,它可再拆分为【院】(计算机学院)、和【系】(自动化、计算机技术、软件工程)这两个属性。

  1. 第二范式:表中不存在与主键部分相关的属性(列);

以学生成绩相关属性举例,对应的表包含【学号】。【姓名】、【课名】、【系名】、【系主任】、【分数】。
在这里插入图片描述
其中主键为学号+课名,对应关系图如下:
属性关系图
(主键为什么不是学号?注意,这里的主键含义是能唯一确定此条记录的属性集合,如果只以学号为主键,结合表中的数据,不能唯一确定分数这一世为什么表不满足第二范式的原因).


从上面的关系图中可以看出,姓名,系名以及系主任可以单独被学号确定,即存在属性能被主键部分确定,因此此表不满足第二范式,需要对表进行拆分。

在这里插入图片描述
在这里插入图片描述

此时,拆成两个表,满足第二范式。
3. 第三范式:属性不存在传递依赖。

意思就是消除表中列不依赖主键,而依赖表中非主键的情况,即没有列属于主键不相关的。上图中以满足第二范式,但【系主任】不依赖于【学号】,因此不满足第三范式。
·
在这里插入图片描述
·
在这里插入图片描述

此外还有第四范式和第三范式,但用的不多。但是,通常情况下,我们会在主表中加入一些冗余,不必满足这几种范式,不如在主表中加入从表的一些属性,当我们在查询中,只需要的查询主表就足够了,减少表的联合查询,因此在设计数据库的时候,加入一些冗余属性数非常必要的;

常见的数据库

在这里插入图片描述

SQL语言

SQL首先实在操作关系型数据库时提出的,但越来越多的实践证明,无论关系型数据库还是其他类型数据库SQL,但凡涉及操作数据领域时,SQL就是最强大,最灵活的实施标准了。

结构化查询语言的六个部分

1. DQL:数据查询语言,用于检索的语言,select 搭配 where、order by、group等等。
2. DML:数据操作语言,用于添加、删除、修改的语言,像insert、update。delete。
3. DDL:数据定义语言,用于的创建、删除、修改表结构的语言,像create、drop、alter。
4. TCL:事务控制语言,像commit,rollback等。
5. DCL:数据控制语言,控制用户权限相关语言。
6. CCL:指针控制语言。

版本

在这里插入图片描述
常用的版本为SQL-92和SQL-99,常见的SQL解析器一般表明支持这两种。

MySQL数据库

故事

MySQL有 MySQL AB公司于1995年创立,2008年被Sun公司收购,2009年Sun被Oracle收购。由于担心Oracle对MySQL收费,因此,MySQL AB创始人有开辟一个分支继续对MySQL进行维护,名为MariaDB,因此目前存在两个版本MariaDB和Oracle公司维护的MySQL;

历史版本

  • 4.0版本——支持InnoDB,事务;
  • 5.0版本——2003年;
  • 5.6版本——历史使用最多的版本;
  • 5.7版本——使用最多的版本;
  • 8.0版本——最新,功能最完善,改动最多,因此此版本没有被命名为5.8,而是直接命名为8.0版本;
5.6/5.7差异

5.7支持:

  • 多主
  • MGR高可用
  • 分区表
  • json
  • 性能
  • 修复XA等
5.7/8.0差异
  • 8.0支持:
  • 通用表达式
  • 窗口函数
  • 持久化函数
  • 自增列持久化
  • 默认编码utf8mb4
  • DDL原子性
  • JSON增强
  • 不在对group by进行隐藏排序

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/412912.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

js动态设置关键侦@keyframes

js动态设置关键侦keyframes 1.前置知识 关键侦keyframes规则通过在动画序列中定义关键侦的样式来控制CSS动画序列的中间步骤 keyframes slidein {from {transform: translateX(0%);}to {transform: translateX(100%);} } // from 等价于 0%;to 等价与 100% // 或…

行为树(Behavior Trees)

行为树(Behavior Trees)是一种在游戏开发中广泛使用的AI设计模式,主要用于描述AI的行为和决策过程,实现更加智能和自然的游戏AI。它由多个节点组成,每个节点代表一个行为或决策,按照特定的方式连接在一起&a…

UI自动化测试框架

文章目录 UI自动化基础什么是UI自动化测试框架UI自动化测试框架的模式数据驱动测试框架关键字驱动测试框架行为驱动测试框架 UI自动化测试框架的作用UI自动化测试框架的核心思想UI自动化测试框架的步骤UI自动化测试框架的构成UtilsLog.javaReadProperties.Java coreBaseTest.ja…

前端框架前置学习Node.js(2)npm使用,Node.js总结

npm - 软件包管理器 定义 npm是Node.js标准的软件包管理器 npm仓库中包含大量软件包,使其成为世界上最大的单一语言代码仓,并且可以确定几乎可用于一切的软件包 最初是为了下载和管理Node.js包依赖的方式,但其现在已成为前端JavaScript中使用的工具 使用: 1.初始化清单文…

【华为 ICT HCIA eNSP 习题汇总】——题目集3

1、(多选)IEEE 802.11n支持在哪些频率下工作? A、2.5GHz B、2.4GHz C、5GHz D、6GHz 考点:无线局域网 解析:(BC) IEEE 820.11n 支持双频段,它兼容IEEE 802.11a 与IEEE 820.11b 两种标…

加解密算法整理(对称加密、非堆成加密、散列函数)

加解密算法是现代密码学核心技术,从设计理念和应用场景上可以分为两大基本类型,如下表所示。 算法类型特点优势缺陷代表算法对称加密加解密的密钥相同计算效率高,加密强度高需提前共享密钥,易泄露DES、3DES、AES、IDEA非对称加密…

【vsan数据恢复】vsan逻辑架构出现故障的数据恢复案例

VSAN数据恢复环境: 一套有三台服务器节点的VSAN超融合基础架构,每台服务器节点上配置2块SSD硬盘和4块机械硬盘。 每个服务器节点上配置有两个磁盘组,每个磁盘组使用1个SSD硬盘作为缓存盘,2个机械硬盘作为容量盘。三台服务器节点上…

全面了解SSD,SSD关键术语全面解析

在前文《深入了解一下SSD的相关内容》一文中我们介绍了SSD硬盘的内部结构和存储颗粒的读写特性。本文我们将进一步深入存储颗粒,介绍其中内部的更多细节以及与此相关的一些术语。 我们继续深入到SSD的内部,SSD闪存颗粒分为NAND和NOR等不同的种类,目前SSD硬盘以NAND为主。NA…

多输入多输出 | Matlab实现基于LightGBM多输入多输出预测

多输入多输出 | Matlab实现基于LightGBM多输入多输出预测 目录 多输入多输出 | Matlab实现基于LightGBM多输入多输出预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab实现基于LightGBM多输入多输出预测(完整源码和数据) 1.data为数据集&a…

Umi3 创建,配置环境,路由传参(代码示例)

目录 创建项目 配置环境 创建脚手架 项目结构及其目录、 路由 配置路由 嵌套路由 编程式导航和声明式导航 声明式导航 编程式导航 约定式路由 路由传参 query传参(问号) 接收参数 params传参(动态传参) 接收参数 创…

领域特定语言(Domain-Specific Language, DSL)在 Visual Studio 2022中的实验——建立领域模型

一、环境 dotnet --version 8.0.101 Microsoft Visual Studio Enterprise 2022 (64 位) - Current 版本 17.8.4 已安装组件 ComponentLinkVisual Studiohttp://go.microsoft.com/fwlink/?LinkId185579Visual Studio SDKhttps://go.microsoft.com/fwlink/?li…

Blender——将模型及其所有纹理与材质导入unity

前期准备 参考视频:7分钟教会你如何将Blender的模型材质导入unity_哔哩哔哩_bilibili 实验模型官网下载地址:Hoi An Ancient House Model free VR / AR / low-poly 3D model CSDN下载链接: 【免费】Blender三维模型-古代房屋模型&#xff…