MySQL 数据库执行原理及SQL 的优化学习记录

MySQL版本:

				1.目前MySQL已经到了8.几版本,但是一般不用最新的,主流的为5.4-5.x:MySql 整合了三方公司的新存储引擎(推荐5.5  和5.7 本节是 5.5 版本)
				2.Linux下的安装 MySQL5.5   一般有三种安装方式   yum  、tar.gz  、rpm(本文章记录的是rpm安装方式)

MySQL 5.5 的安装

1.使用cd命令切换路径 ,切到自己想要安装MySQL5.5的路径里 cd /app/
2.鼠标右键选择项,将文件上传到 app目录下
在这里插入图片描述

在这里插入图片描述
3.上传成功之后执行MySQL 5.5
4.执行命令:rpm -ivh rpm的软件名字(按tab键补全)
            如果安装时候与某个软件 xxx冲突则需要将冲突的软件卸载:
            卸载命令:yum -y remove xxx软件名

5.用 rpm -ivh rpm软件名安装服务器端MySQL
在这里插入图片描述
6.设置密码
在这里插入图片描述
7.安装客户端MySQL
在这里插入图片描述
8.验证是否安装成功
在这里插入图片描述
使用命令 :mysqladmin --version验证是否安装成功

9.启动、关闭 、重启 mysql 命令:service mysql start ;service mysql stop service mysql restart

给mysql清屏: Ctrl+L ,system clear
在这里插入图片描述
10.原理
MySQL 逻辑分层

在这里插入图片描述

引擎层:InnoDB和MyISAM 的区别
他们都是用B+tree实现的 ,但是
            InnoDB 支持事务优先:既适合高并发操作,支持行锁(给每行加锁,性能降低)
            MyISAM:性能优先,支持表锁(给整个表加锁)

11.查看数据库的引擎:show engines;
在这里插入图片描述

12.指定数据库引擎
在这里插入图片描述

SQL优化(SQL索引的增删查)

为什么要SQL优化原因:性能低,执行时间太长,等待时间太长,SQL语句欠佳(连接查询:多表查询,单表查询问题不大),索引失效,服务器参数设置不合理(如缓冲区,线程数)

a.SQL语句
distinct 去重:可以对单列进行操作,也可以多多列(必须放在select 的后面,多列的话必须多列都满足相同的时候才可以去重)
       编写过程:select distinct …from …join…on …where…group by…having…order by …limit
       解析过程:from …on …join… where …group by …having … select distinct …order by limit…

b.SQL优化(SQL语句欠佳) 主要优化索引:索引相当于目录
那问题来了什么是索引?
             数据库索引在数据库管理系统中是一个排序的数据结构(B+树:平衡二叉树),以协助快速查询、更新数据库表中的数据
索引在SQL中的关键字为:index(索引:帮助MySQL高速获取数据的数据结构)

在这里插入图片描述
索引的优点:
在这里插入图片描述

索引的弊端:
1.所以占据一定的物理空间(以空间换时间)
2.索引并不是所有的 情况均适用(创建和维护索引耗费时间长,时间随着数据量的增加而增加):a.少量数据 b.频繁更新的字段
(索引的数据结构是B +tree ,它的原理是比根结点小的数放在结点的左边,比根结点大的数据放在右边,,如果字段需要频繁的更新,对应的平衡树的各个结点都可能需要做出一定的改变)c.很少使用的字段
3.索引会降低增删改效率

B+ tree:
在这里插入图片描述
索引的分类:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

除了单值索引,唯一索引,复合索引之外还有一个主键索引,既有primary key 的字段默认为主键索引,他和唯一索引 的区别就是主键索引不可以为空,但是唯一索引可以为空。共同点就是它们都不能重复。

在这里插入图片描述

SQL性能问题

a.分析SQL的执行计划:explain,可以模拟SQL优化器执行SQL语句,从而让开发人员知道自己编写的SQL状况
b.MYSQL查询优化会干扰我们的优化


执行查询计划 explain + SQL
在这里插入图片描述

(1) id: id值相同,表(看table值)从从上到下按照顺序执行;如果id值不同,按id值大的先执行。如果id值有相同和不同,先按照id值大的先执行,最后id值相同的从上到下按照顺序执行。
(2) table: 表的名字
(3) select_type: 查询类型
在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值