百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

mysql数据库分析 mysql 分析语句

nanshan 2024-12-30 05:59 15 浏览 0 评论

使用docker安装mysql 数据库

取镜像:docker pull mysql:5.7 指定5.7 版本,也可以根据直接需求填写版本号

docker images 可以看到下载好镜像

创建好三个需要挂载docker的目录

mkdir -p /var/mysql/data /var/mysql/logs /var/mysql/conf

挂载启动mysql 服务

docker run -p 3306:3336 --name mysql5.7 \
-v /var/mysql/logs:/var/log/mysql \
-v /var/mysql/data:/var/lib/mysql \
-v /var/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7

启动失败!!报端口被绑定,莫慌我们来排查一下。

使用netstat 查看是哪个pid 占用了3306 ,发现是1445 的pid ,使用 kill 1445杀掉该进程


执行又报了这个错 大概率是因为之前的服务没有退出导致

使用docker ps -a 得到对应容器id后再使用 docker rm id 删除容器。

再次执行 发现执行成功

使用 docker logs --tail=100 mysql5.7 查看一下日志,发现启动成功,挂载的目录已经有对应文件

总结下创建需要的几个步骤:

docker pull mysql:5.7 #拉取服务 1
mkdir -p /var/mysql/data /var/mysql/logs /var/mysql/conf #创建mysql挂载的目录 2
#挂载启动服务3
docker run -p 3306:3306 --name mysql \ #将容器的3306端口映射到主机的3306端口,'\'指换行符
-v /var/mysql/logs:/var/log/mysql \ #左边为Linux的目录结构,右边为docker内部
-v /var/mysql/data:/var/lib/mysql \
-v /var/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \ #初始化root用户的密码为:123456
-d mysql:5.7

数据库存储引擎

数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据操作。简而言之,存储引擎就是表的类型。数据库的存储引擎决定了表在计算机中的存储方式。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎还可以获得特定的功能。

show ENGINES 查看引擎

  • ARCHIVE :用于数据存档的引擎,数据被插入后就不能在修改了,且不支持索引,行锁,占用磁盘少;常用于日志系统,大量的设备数据采集
  • CSV:在存储数据时,会以逗号作为数据项之间的分隔符,常用于数据库的快速导出导入,表格转换为CSV
  • BLACKHOLE:会丢弃写操作,该操作会返回空内容。
  • FEDERATED:将数据存储在远程数据库中,用来访问远程表的存储引擎
  • InnoDB:默认,5.5版本后新增,具备外键支持功能的事务处理引擎,事务优先,行锁,支持B树索引
  • MEMORY:置于内存的表,速度快,值查找热度较高的数据但安全没保障,只有16M,不支持大数据存储类型,表锁,常用于等
  • MRG_MYISAM:用来管理由多个MyISAM 表构成的表集合
  • MYISAM:5.5版本之前默认引擎,主要的非事务处理存储引擎,性能优先,表锁,支持B树、哈希索引
  • NDB:MySQL集群专用存储引擎

默认的存储引擎是Innodb

数据库索引

索引是对数据库表中一列或多列的值进行排序的一种结构,如字典目录提高检索性能 B+Tree 索引是大多数 MySQL 存储引擎的默认索引类型。

优点:

  1. 降低IO、CPU使用率
  2. 索引列,可以保证行的唯一性
  3. 有效缩短数据检索时间
  4. 加快表与表之间的连接

缺点:

  • 占用空间,索引(保持主键和索引记录)
  • 降低了更新表的速度
  • 索引的长度,需要时间维护

索引的种类

主键索引 :是大多数 MySQL 存储引擎的默认索引类型。设定为主键后数据库会自动建立索引,innodb为聚簇索引 又被称为B+Tree 创建语句 create index 索引名称 on table(col);

单值索引:即一个索引只包含单个列,一个表可以有多个单列索引

复合索引:一个索引包含多个列在数据库操作期间,复合索引比单值索引所需要的开销更小(对于相同的多个列建索引)当表的行数远大于索引列的数目时可以使用复合索引 创建语句:create index 索引名称 on table(col,col.....)


数据库的文件 ibd为表结构文件 frm表结构文件

Innodb

  • ibd文件,这个表是InnoDB存储引擎时, 数据文件
  • frm文件,就是表结构文件

MyISAM

  • frm文件,表结构文件
  • MYD文件,数据文件
  • MYI文件,索引文件

sql语句种类

DDL(data definition language)数据定义语言

CREATE ALTER DROP 用来定义或改变表结构、数据类型、表之间的链接和约束,用在建表上

DML(data manipulation language)数据操控语言

SELECT,UPDATE,INSERT,DELETE 用来对数据库的数据进行操作的语言

DQL(data querylanguage)数据查询语言

SELECT FROM WHERE 用来查询表数据

DCL(data controllanguage)数据控制语言

GRANT DENY REVOKE 用于设置、更改数据库用户或角色权限的语句,默认状态下,只有

sysadmin、dbcreator、db owner、db securityadmin才有拥有权限执行DCL

SQL语句的执行过程

步骤1:连接层:连接管理

步骤2:服务层:权限验证,查询缓存:命中直接返回, 语法分析,优化sql

步骤3:引擎层:操作引擎,返回结果

步骤4:存储层:把脚本转换为日志,在日志回放进行一个sql回放,数据库对应磁盘的操作都是通过日志进行

SQL语句查询的执行过程

  1. 执行 from 表,查看来源表
  2. where 条件 过滤数据 ===== 条件,影响性能
  3. group by 查询结果条件来分组 ==== 列没有变化
  4. select 字段 ====== 这一步的时候,列的数量才会变化
  5. order by 字段 ===== 排序 可能产生临时表
  6. limit 数量

相关推荐

雷军1994年写的老代码曝光,被称像诗一样优雅

大数据文摘授权转载自程序员的那些事雷军的代码像诗一样优雅↓↓↓有些网友在评论中质疑,说雷军代码不会是“屎”一样优雅吧。说这话的网友,也许是开玩笑的,也许是真没看过雷军写过的代码。在2011年的时候,我...

原创经验分享:低级bug耗费12小时Fix

调试某程序非常简单的程序,简单到认为不可能存在缺陷,但该BUG处理时间超过12小时:程序属于后台进程,监控系统每隔15秒检查外设IO状态,IO异常后发出报警或复位外设,外设都在linux下有/sys/...

SpringBoot实现的简单停车位管理系统附带导入和演示教程视频

这一次为大家带来的是简单的停车位管理系统,基于SpringBoot+Thymeleaf+Mybatis框架,这个系统相对来说比较简单,很容易学习并快速上手,因为逻辑很清晰,没有太复杂的代码逻辑,所以学...

一个开箱即用的代码生成器(代码自动生成工具开源)

今天给大家推荐一个好用的代码生成器,名为renren-generator,该项目附带前端页面,可以很方便的选择我们所需要生成代码的表。首先我们通过git工具克隆下来代码(地址见文末),导入idea。...

【免费开源】JeecgBoot单点登录源码全部开源了

JeecgBoot单点登录源码全部开源了,有需要的朋友可以来薅羊毛了。一、JeecgBoot介绍JeecgBoot是一款企业级的低代码平台!前后端分离架构SpringBoot2.x,SpringCl...

SpringBoot+JWT+Shiro+Mybatis实现Restful快速开发后端脚手架

作者:lywJee来源:cnblogs.com/lywJ/p/11252064.html一、背景前后端分离已经成为互联网项目开发标准,它会为以后的大型分布式架构打下基础。SpringBoot使编码配置...

为什么越来越多的人选择使用idea软件

IDEA软件是什么?IDEA软件是干什么的?为什么越来越多的人选择使用IDEA软件?IDEA软件,全称IntelliJIDEA,它是由JetBrains公司开发开发的一款功能强大的集成开发环境(ID...

开题报告大学生互助系统(附源码)java毕设

本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容选题背景随着互联网技术的飞速发展,大学生群体对信息共享与互助的需求日益增长。关于大...

SpringBoot项目快速开发框架JeecgBoot——项目简介及系统架构!

项目简介及系统架构JeecgBoot是一款基于SpringBoot的开发平台,它采用前后端分离架构,集成的框架有SpringBoot2.x、SpringCloud、AntDesignof...

新手配电脑13代CPU怎么选择(新手配电脑13代cpu怎么选择好)

Intel第13代酷睿i3、i5、i7、i9系列处理器的核心参数、性能差异及适用群体的详细说明(以桌面端为例):一、13代酷睿全系参数对比(桌面端主流型号)参数i3-13100i5-13600Ki7-...

加速 SpringBoot 应用开发,官方热部署神器真带劲

平时使用SpringBoot开发应用时,修改代码后需要重新启动才能生效。如果你的应用足够大的话,启动可能需要好几分钟。有没有什么办法可以加速启动过程,让我们开发应用代码更高效呢?今天给大家推荐一款Sp...

基于微信小程序的移动端物流系统-计算机毕业设计源码+LW文档

摘要随着Internet的发展,人们的日常生活已经离不开网络。未来人们的生活与工作将变得越来越数字化,网络化和电子化。网上管理,它将是直接管理移动端物流系统app的最新形式。本论文是以构建移动端物流系...

springboot教务管理系统+微信小程序云开发附带源码

今天给大家分享的程序是基于springboot的管理,前端是小程序,系统非常的nice,不管是学习还是毕设都非常的靠谱。本系统主要分为pc端后台管理和微信小程序端,pc端有三个角色:管理员、学生、教师...

SpringBoot全家桶:23篇博客加23个可运行项目让你对它了如指掌

SpringBoot现在已经成为Java开发领域的一颗璀璨明珠,它本身是包容万象的,可以跟各种技术集成。本项目对目前Web开发中常用的各个技术,通过和SpringBoot的集成,并且对各种技术通...

Maven+JSP+Servlet+C3P0+Mysql实现的音乐库管理系统

本系统基于Maven+JSP+Servlet+C3P0+Mysql实现的音乐库管理系统。简单实现了充值、购买歌曲、poi数据导入导出、歌曲上传下载、歌曲播放、用户注册登录注销等功能。难度等级:简单技术...

取消回复欢迎 发表评论: