IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 【MySQL】性能与优化-01 -> 正文阅读

[大数据]【MySQL】性能与优化-01

目录

1.再聊聊性能优化
2.关系数据库 MySQL
3.深入数据库原理
4.MySQL 配置优化
5.数据库设计优化

1. 再聊聊性能优化

复习一下什么是性能

  • 吞吐与延迟 : 有些结论是反直觉的,指导我们关注什么
  • 没有量化就没有改进:监控与度量指标,指导我们怎么去入手
  • 80/20原则:先优化性能瓶颈问题,指导我们如何去优化
  • 过早的优化是万恶之源:指导我们要选择优化的时机
  • 脱离场景谈性能都是耍流氓:指导我们对性能要求要符合实际
    性能是一个综合性问题

理解:首先来说第一个,吞吐量是单位时间内,系统可以处理的请求既QPS,但是在吞吐量一定的时候,延迟是不一样的,比如一个系统A一秒中可以处理100的并发数,但是由于没有采用

DB/SQL 优化是业务系统性能优化的核心
业务系统的分类:计算密集型、数据密集型
业务处理本身无状态,数据状态最终要保存到数据库
一般来说,DB/SQL 操作的消耗在一次处理中占比最大
业务系统发展的不同阶段和时期,性能瓶颈要点不同,类似木桶装水
例如传统软件改成 SaaS 软件

2. 关系数据库 MySQL

什么是关系数据库

  • 1970年 Codd 提出关系模型,以关系代数理论为数学基础
    《A Relational Model of Data for Large Shared Data Banks》

什么是关系数据库?
在这里插入图片描述
什么是关系数据库
数据库设计范式
第一范式(1NF):关系 R 属于第一范式,当且仅当R中的每一个属性A的值域只包含原
子项
第二范式(2NF):在满足 1NF 的基础上,消除非主属性对码的部分函数依赖
第三范式(3NF):在满足 2NF 的基础上,消除非主属性对码的传递函数依赖
BC 范式(BCNF):在满足 3NF 的基础上,消除主属性对码的部分和传递函数依赖
第四范式(4NF):消除非平凡的多值依赖
第五范式(5NF):消除一些不合适的连接依赖

在这里插入图片描述
数据库设计范式
1NF:消除重复数据,即每一列都是不可再分的基本数据项;
每个列都是原子的。
2NF:消除部分依赖,表中没有列只与主键的部分相关,即每一行都被主键唯一标识;
每个列都有主键。
3NF:消除传递依赖,消除表中列不依赖主键,而是依赖表中的非主键列的情况,即没
有列是与主键不相关的。
从表只引用主表的主键,
即表中每列都和主键相关。
BCNF:Boyce-Codd Normal Form(巴斯-科德范式)
3NF 的基础上消除主属性对于码的部分与传递函数依赖。

常见关系数据库

常见关系数据库
开源:MySQL、PostgreSQL
商业:Oracle,DB2,SQL Server
内存数据库:Redis?,VoltDB
图数据库:Neo4j,Nebula
时序数据库:InfluxDB、openTSDB
其他关系数据库:Access、Sqlite、H2、Derby、Sybase、Infomix 等
NoSQL 数据库:MongoDB、Hbase、Cassandra、CouchDB
NewSQL/ 分布式数据库:TiDB、CockroachDB、NuoDB、OpenGauss、OB、TDSQL

SQL 语言

结构化查询语言包含 6 个部分:
1、数据查询语言(DQL: Data Query Language):其语句,也称为“数据检索语句”,用以从表
中获得数据,确定数据怎样在应用程序给出。保留字 SELECT 是 DQL(也是所有 SQL)用得最多
的动词,其他 DQL 常用的保留字有 WHERE,ORDER BY,GROUP BY 和 HAVING。这些 DQL 保
留字常与其它类型的 SQL 语句一起使用。
2、数据操作语言(DML:Data Manipulation Language):其语句包括动词 INSERT、
UPDATE 和 DELETE。它们分别用于添加、修改和删除。
3、事务控制语言(TCL):它的语句能确保被 DML 语句影响的表的所有行及时得以更新。包括
COMMIT(提交)命令、SAVEPOINT(保存点)命令、ROLLBACK(回滚)命令。
4、数据控制语言(DCL):它的语句通过 GRANT 或 REVOKE 实现权限控制,确定单个用户和用
户组对数据库对象的访问。某些 RDBMS 可用 GRANT 或 REVOKE 控制对表单个列的访问。
5、数据定义语言(DDL):其语句包括动词 CREATE,ALTER 和 DROP。在数据库中创建新表或修
改、删除表(CREAT TABLE 或 DROP TABLE);为表加入索引等。
6、指针控制语言(CCL):它的语句,像 DECLARE CURSOR,FETCH INTO 和 UPDATE WHERE
CURRENT 用于对一个或多个表单独行的操作。

3.深入数据库原理

在这里插入图片描述
MySQL简化执行流程
在这里插入图片描述
MySQL详细执行流程
在这里插入图片描述
MySQL执行引擎和状态
在这里插入图片描述
MySQL 执行顺序
在这里插入图片描述
MySQL索引原理
在这里插入图片描述

4.MySQL配置优化

参数配置优化-1
1)连接请求的变量
1、max_connections
2、back_log
3、wait_timeout和interative_timeout

参数配置优化

查看参数配置

  • show variables like xxx
    my.cnf 文件

参数配置优化-2
2)缓冲区变量
4、key_buffer_size
5、query_cache_size(查询缓存简称 QC)
6、max_connect_errors: 7、sort_buffer_size: 8、max_allowed_packet=32M
9、join_buffer_size=2M
10、thread_cache_size=300

参数配置优化-3
3)配置 Innodb 的几个变量
11、innodb_buffer_pool_size
12、innodb_flush_log_at_trx_commit
13、innodb_thread_concurrency=0
14、innodb_log_buffer_size
15、innodb_log_file_size=50M
16、innodb_log_files_in_group=3
17、read_buffer_size=1M
18、read_rnd_buffer_size=16M
19、bulk_insert_buffer_size=64M
20、binary log

5.数据库设计优化

MySQL 数据库设计优化-最佳实践

  • 如何恰当选择引擎?
  • 库表如何命名?
  • 如何合理拆分宽表?
  • 如何选择恰当数据类型:明确、尽量小
  • char、varchar 的选择
  • (text/blob/clob)的使用问题?
  • 文件、图片是否要存入到数据库?
  • 时间日期的存储问题?
  • 数值的精度问题?
  • 是否使用外键、触发器?

MySQL 数据库设计优化

  • 唯一约束和索引的关系?
  • 是否可以冗余字段?
  • 是否使用游标、变量、视图、自定义函数、存储过程?
  • 自增主键的使用问题?
  • 能够在线修改表结构(DDL 操作)?
  • 逻辑删除还是物理删除?
  • 要不要加 create_time,update_time 时间戳?
  • 数据库碎片问题?
  • 如何快速导入导出、备份数据

其他

外部链接:如何理解Latency和Throughput: 吞吐量和延迟
Saas:功能软件从单机系统变成web多用户
Paas: 基础设施是共享的,自己去部署应用
Iaas: openStack
Faas: Servless
Daas : Data

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-09-23 11:32:08  更:2021-09-23 11:33:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 23:34:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码