性能分析-数据库与磁盘知识

news2024/11/25 2:47:32

数据库

数据库,其实是数据库管理系统dbms。

数据库管理系统,

常见:

  • 关系型数据库: mysql、pg、
    • 库的表,表与表之间有关联关系; 表二维表
    • 统一标准的SQL(不局限于CRUD)
  • 非关系型数据库:redis、mongodb
    • 表之间没有强关联,表中数据,也没有统一的结构。
    • redis:  key-value
    • mongodb:bson(类似json)文档
    • 没有统一标准sql,不同的非关系型数据,sql语句不一样
  • 时序数据:
    • Prometheus 以时间序列来存储数据

数据库管理系统,管理数据。

数据:一切可以用计算书来存储都是数据。

数据对于一个项目是非常非常重要的,所以对数据的保存、数据的稳定性、数据的安全性要求是比较 高的。

如果数据存在磁盘上,希望磁盘的稳定性就要求比较高。----所以,数据库的数据存的磁盘,一般选择机械硬盘。

关系型数据库:库和表 库是数据的一个整体。

mysql数据库,库名称,就是一个文件夹名称。一个库就是一个文件夹。 表用二维表的方式栅格化数据,进行存储。

 select语言的性能分析是的重点:项目中获取数据频率远远高于对数据变更的操作。

获取数据,从磁盘上读取你想要的数据。从一张表中来获取想要数据。

mysql数据库,表在磁盘上,就是文件。

我们从表中获取一条数据的过程,找到文件夹(库),找到文件(表),打开磁盘的文件(读文件),跳转到对应的位置(表中一行) 学习数据库的时候还需要有磁盘知识。

数据库安装(linux)

数据库安装: wget https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm yum install -y mysql80-community-release-el7-7.noarch.rpm

如果此时 直接安装安装的就是mysql8.0.x版本,数据库安装要安装  mysql5.7.x版本

目前企业中用的mysql数据库的版本,主要是:mysql5.7.x版本或mysql8.x版本

mysql数据库在5.7的版本开始,有非常大的变化。

从mysql的官网上下载,都是mysql8.x版本。mysql5.7.37之前的版本,版本的有效时间已经过期,现在 安装的mysql版本是5.7.37以后。

yum repolist all | grep mysql 查看到当前系统mysql的源支持的mysql版本。现在是mysql8的版本

vim /etc/yum.repos.d/mysql-community.repo
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch
enabled=1 # 由0改成了1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
[mysql80-community]
name=MySQL 8.0 Community Server
baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/7/$basearch
enabled=0 # 由1改成了0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
# 安装mysql5.7
yum install mysql-community-server -y

这样就能安装到最新的mysql5.7.x版本。

如果你要用mysql的rpm包安装,安装的顺序

mysql-community-common-5.7.41-1.el7.x86_64
1/6
mysql-community-libs-5.7.41-1.el7.x86_64
2/6
mysql-community-client-5.7.41-1.el7.x86_64
3/6
mysql-community-server-5.7.41-1.el7.x86_64
4/6
mysql-community-libs-compat-5.7.41-1.el7.x86_64

systemctl restart mysqld
systemctl enable mysqld

这种方式安装的mysql数据库的配置文件: /etc/my.cnf

不同方式安装mysql数据库,配置文件的路径是不一样的。所以不要死记。

调整密码等级 0弱密码  1 一般  2强密码  validate_password_policy 是否开启校验

vim /etc/my.cnf
# 添加validate_password_policy配置 0(LOW),1(MEDIUM),2(STRONG)
validate_password_policy=0
# 关闭密码策略
validate_password = off

修改了mysql的配置文件,要重启,才生效。

此时,不知道root密码的,找到root命令

从mysql的日志获取随机生成的root密码: grep "password" /var/log/mysqld.log

登录数据库: mysql -uroot -p 回车,输入密码,

修改密码:

alter user 'root'@'localhost' identified by '新密码';
# 开启远程访问
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的新密码' WITH GRANT
OPTION;
FLUSH PRIVILEGES;
exit;

数据库,默认端口:3306,

数据库的运行日志:/var/log/mysqld.log

数据库的配置文件:/etc/my.cnf

数据库数据文件:/var/lib/mysql

磁盘

  • 机械硬盘
    • 光盘----可以反复擦写
    • 机械臂
    • 转子:现在的机械硬盘,转子的转速一般在7200r/m 14000r/m。 转速越高,从磁盘读数据 的速度,就会越快。但是因为是机械运动,不可能无限快,转速快,会发热。
  • 固态硬盘
  • 光盘:
    • 先理解为一张白纸
    • 光盘的格式化。先分区,然后格式化。
      • 硬盘做分区,是可以提升数据存取速度。
      • 做分区的时候,就会选择格式化。NTFS、ext4
        • 磁盘的格式化,可以提高磁盘利用率,获取数据的时候,速度也更快

扇区:磁盘上的一段弧形

块:相邻的多个扇区构成块。  操作系统与磁盘进行数据交换的单位。

页page:操作系统与内存进行数据交换的单位。一页是由多个块构成。

CPU的速度是最快的,内存的速度居中,磁盘的速度是最慢的。为了配合cpu的速度,需要缓存。

  • 缓存:
    • buff缓冲区:由磁盘虚拟出来的,加快从磁盘读数据的速度。
    • cache缓存:内存中一部分和cpu寄存器

用虚拟化参数都硬盘,都是机械硬盘,在linux中,标识机械硬盘 sd,后面跟一个字母,代表第几个硬盘 (sda第1块机械硬盘),再跟一个数字,数字代表硬盘的第几个分区(sda2第1个硬盘的第2个分区)  sdb2

fdsk -l 可以看硬盘的信息,但是fdisk命令,谨慎使用(有可能符导致磁盘格式化)。

RAID磁盘矩阵:做这个,也是为了提升磁盘的性能,也可以做磁盘数据的备份。 矩阵:就会要用到多个磁盘。

RAID0:数据分片存在2块磁盘,读写速度提升2倍,主要用于SWAP\TMP,但是数据不冗余,数据恢复难

RAID1:相同数据冗余存入2块磁盘,写速度不变,读速度提升2倍,数据冗余1份,主要用于数据备份, 但磁盘利用率低

RAID5:数据分片和校验码混合存储3份,读写速度提升2倍,主要在要求高速时用,可以用于数据还原 RAID10:2块磁盘1组先做RAID1,多组RAID1,再做RAID0。读写速度N倍 n为组数

读磁盘

dd  命令

命令: dd if=/dev/sda of=/dev/null bs=20MB count=100

if  输出文件 /dev/sda 读整个磁盘

of  输出文件 /dev/null  回收站,是一个伪设备,不会有磁盘的写操作

bs 每次操作文件的大小

count  执行次数

这个命令用来测试磁盘在只有读的时候,磁盘的性能。

vmstat 命令可以看到 buff 和 cache

vmstat 1

清空缓存: echo 3 > /proc/sys/vm/drop_caches 清空缓存

执行之后,会buff清空,cache会变小。

dd if=/dev/sda of=/dev/null bs=20MB count=100

vmstat 1

一般情况下机械硬盘的读磁盘的速度,一般在小几百MB每秒。多次测试会有偏差。

写磁盘

先清空缓存: echo 3 > /proc/sys/vm/drop_caches

vmstat 1

写磁盘: dd if=/dev/zero of=$PWD/outf bs=16MB count=100

buff没有变,cache是变大了。

vmstat 1

磁盘的写的速度,一般也是小几百MB每秒

同时读写磁盘

这些这些命令之前,都要去先清空缓存

dd if=/dev/sda of=$PWD/otf bs=14MB count=100  同时有读和写磁盘操作。

这个操作buff和cach都会增大,速度,也是在小几百MB每秒,一般还会比单独的读或写的速度要慢。

内存速度测试

dd if=/dev/zero of=/dev/null bs=15MB count=100 没有读和写磁盘  ---这些数据都在内存中交换,这个命令可以测试内存的速度。

执行这个命令,看到buff和cach基本没变,得到内存的速度大概是:小几十GB每秒

内存的速度,大概是磁盘速度的十几倍。

你项目中同时有读写操作,你可以用iostat这个命令,看读写速度和等待wait,看是否有磁盘瓶颈。

现在的数据库,因为要大量读磁盘操作,读速度跟不上行,就可能导致,获取数据的响应时间偏 长,导致性能偏低。

这其实就会被大多人理解为慢sql,慢查询。

一般数据库因为磁盘瓶颈,导致的性能问题,一般比较少的换磁盘,而是考虑优化数据库。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

代码随想录day35 | 贪心算法P4 | ● 860 ● 406 ● 452

860.柠檬水找零 在柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。 每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确…

共享云桌面和虚拟云桌面优劣势对比分析

随着云计算技术的不断发展,共享云桌面和虚拟云桌面成为了企业信息化建设的热门选择。共享云桌面和虚拟云桌面这两种技术各有优劣势,下面我们将对它们进行对比分析。 首先,我们来了解一下共享云桌面的优势。共享云桌面是指多个用户通过云平台…

软件测试面试入职了,背完这写轻松上岸

全网首发-涵盖16个技术栈 第一部分,测试理论(测试基础需求分析测试模型测试计划测试策略测试案例等等) 第二部分,Linux( Linux基础Linux练习题) 第三部分,MySQL(基础知识查询练习…

Pots(DFS BFS)

//新生训练 #include <iostream> #include <algorithm> #include <cstring> #include <queue> using namespace std; typedef pair<int, int> PII; const int N 205; int n, m; int l; int A, B, C; int dis[N][N];struct node {int px, py, op…

美团一面:说说synchronized的实现原理?问麻了。。。。

引言 在现代软件开发领域&#xff0c;多线程并发编程已经成为提高系统性能、提升用户体验的重要手段。然而&#xff0c;多线程环境下的数据同步与资源共享问题也随之而来&#xff0c;处理不当可能导致数据不一致、死锁等各种并发问题。为此&#xff0c;Java语言提供了一种内置…

揭秘ChatGPT的数据集构建

从Open AI发表的论文《Training language models to follow instructions with human feedback》&#xff0c;我们可以知道ChatGPT/InstructGPT&#xff08;两者技术原理基本一致&#xff0c;下面不再做区分&#xff09;的训练过程分为以下3步&#xff1a; SFT&#xff1a;根据…

私域电商客户要挨一刀的“订单发货管理”,微信:必须强制接入

文丨微三云营销总监胡佳东&#xff0c;点击上方“关注”&#xff0c;为你分享市场商业模式电商干货。 - 引言&#xff1a;超90%的私域运营商家都见到了或者说遇到了这个问题&#xff0c;如果没有读懂这个微信的模型机制&#xff0c;一定会懵逼&#xff0c;微三云营销总监胡佳…

C++11:function包装器

包装器&#xff0c;体现了C11中的封装性&#xff0c;包装器可以应用于&#xff1a;函数指针&#xff0c;仿函数&#xff0c;lambda 而包装器function的出现刚好也弥补了上述三种语法的不足之处 函数指针写起来较为复杂&#xff0c;而仿函数之间类型不同&#xff0c;lambda则在…

【Week Y5】yolo.py文件解读,插入C2模块到指定位置

插入C2模块到指定位置 一、common.py文件修改二、yolo.py文件修改三、yolov5s.yaml修改四、训练 &#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 模块结构如下&#xff1a;【同Y4】 【Y4…

Jackson 2.x 系列【15】序列化器 JsonSerializer

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Jackson 版本 2.17.0 源码地址&#xff1a;https://gitee.com/pearl-organization/study-jaskson-demo 文章目录 1. 概述2. 方法2.1 构造2.2 序列化2.3 其他 3. 实现类3.1 StdSerializer3.1.1 源…

CSDN 广告太多,停更通知,转移到博客园

文章目录 前言新博客地址 前言 CSDN的广告实在是太多了&#xff0c;我是真的有点忍不了。直接把广告插在我的文章中间。而且我已经懒得找工作了&#xff0c;我当初写CSDN的目的就是为了找工作&#xff0c;有个博客排名。当时经济环境实在是太差了。我也没必要纠结这个2000粉丝…

Vue通过自定义指令实现元素平滑上升的动画效果。没一句废话

1、演示 2、介绍 这个指令不是原生自带的&#xff0c;需要手动去书写&#xff0c;但是这辈子只需要编写这一次就好了&#xff0c;后边可以反复利用。 用到的API&#xff1a;IntersectionObserver 这里有详细介绍 3、Vue文件代码 <template><div class"container&…

【计算机考研】408算法大题怎么练?

先说结论&#xff1a;基础阶段学好各个数据结构与&#xff0c;重点是数组、链表、树、图。然后强化阶段突破算法提 在基础阶段&#xff0c;并不需要过于专门地练习算法。相反&#xff0c;基础阶段的重点应该放在对各种数据结构原理的深入理解上。在我个人的经验中&#xff0c;…

【AcWing】蓝桥杯集训每日一题Day17|单调队列|求直方图中最大矩形|单调栈|模型转化|1413.矩形牛棚(C++)

1413.矩形牛棚 1413. 矩形牛棚 - AcWing题库难度&#xff1a;中等时/空限制&#xff1a;1s / 256MB总通过数&#xff1a;1914总尝试数&#xff1a;3823来源&#xff1a;usaco training 6.1算法标签单调栈 题目内容 作为一个资本家&#xff0c;农夫约翰希望通过购买更多的奶牛…

【零基础学数据结构】链表

目录 1.链表的概念 ​编辑 2.链表的雏形 ​编辑 3.链表的组成 ​编辑 4.链表代码 4.1创建节点 4.2链表的打印 4.3链表的尾插 4.4链表的头插 4.5链表的尾删 4.6链表的头删 4.7链表的查找 4.8链表在指定位置之前插⼊数据 4.9链表在指定位置之后插⼊数据 4.9-1删除pos节点 4.9…

VBA技术资料MF140:在PowerPoint中移动幻灯片位置

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套&#xff0c;分为初级、中级、高级三大部分&#xff0c;教程是对VBA的系统讲解&#…

Java基于微信小程序的校园外卖平台设计与实现,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

openGauss学习笔记-255 openGauss性能调优-使用Plan Hint进行调优-Hint的错误、冲突及告警

文章目录 openGauss学习笔记-255 openGauss性能调优-使用Plan Hint进行调优-Hint的错误、冲突及告警 openGauss学习笔记-255 openGauss性能调优-使用Plan Hint进行调优-Hint的错误、冲突及告警 Plan Hint的结果会体现在计划的变化上&#xff0c;可以通过explain来查看变化。 …

公开课学习——JVM虚拟机面试核心点与性能优化点

文章目录 jdk的体系结构图Java语言的跨平台的特性&#xff0c;怎么实现的&#xff1f;jvm内部组成呢&#xff1f;pc的值怎么变得&#xff1f;main方法的栈帧有一点点区别&#xff0c;Math()是new出来的&#xff0c;放在堆区&#xff0c;这个堆区的math和我们栈帧中的局部变量表…

SpringBoot之集成Redis

SpringBoot之集成Redis 一、Redis集成简介二、集成步骤2.1 添加依赖2.2 添加配置2.3 项目中使用 三、工具类封装四、序列化 &#xff08;正常都需要自定义序列化&#xff09;五、分布式锁 一、Redis集成简介 Redis是我们Java开发中&#xff0c;使用频次非常高的一个nosql数据库…