存储引擎MySQL和InnoDB(数据库管理与高可用)
1、存储引擎
存储引擎是核心组成部分,
是构成数据库最基础最底层的部件,
利用这个部件,你的Mysql能够对数据进行查询、创建、更新、删除等操作,
也就是说,用户所输入的一系列的mysql语句,是由存储引擎来执行的,
2、存储引擎的分类
注:innodb支持行级锁定
不同的存储引擎,它们在生成相关表的时候,都对应的有一个相关文件,
上图中的蓝色的三个文件是系统自带的,
然后,cd到mysql里面,ls查看一下,
注:上图圈中的三个文件共同构成了mysql中的一个表,
user.frm——存储了数据表表的结构(比如这个表有多少列,每个列有什么名字等)
user.MYD——存储了表里的每一行记录(数据)
user.MYI——存储了这个表的索引信息
上图的这种构成方式是由MyISAM引擎生成的文件,是有一个单独存放索引的文件的(这一点与Innodb引擎是不同的)
因为在安装mysql时,在它的配置文件里面指定的默认引擎是使用InnoDB,那就意味着
先登录进mysql里面,创建一个表,
use进这个auth库中,创建一个表,
然后退出mysql,在data里面查看一下,
注:在mysql里面,每一个库都是一个独立的目录,如果到这个库里面ls查看一下的话,
每一个表都会对应两个文件,既users.frm和users.ibd,而实际上ls查看到的是三个文件:
只要把库创建出来,上图中的opt这个文件就有了,
如果说,此时再去登录mysql里面创建一个表的话,
use进auth里面,创建001这个表:
然后退出mysql,再去使用ls查看一下:
而前面的opt文件还是那一个,没有多出来,
注:只要把库创建出来,opt这个文件就已经有了,
每一次创建表的时候会多出两个文件(.ibd和.ifm的文件)
opt文件(该库里所有的表共用的)存放的是该库的配置信息、编码、规则等,
.frm——存放的是元数据,即表的相关结构等信息,
.ibd——存放的是核心数据、索引信息,即表里的每一行记录是存放在.ibd里面的
上图中的这种结构是由InnoDB生成的文件,
小结:当想要去看一个库用的是什么存储引擎的时候,可以先cd到这个库的目录里面用ls查看一下都有哪些文件,大致就知道它用的是什么存储引擎了,因为每一种存储引擎所生成的文件是不一样的
在选择存储引擎的时候,如果说程序有事物的需求,就只能用InnoDB的引擎
3、修改存储引擎
(1)如何修改存储引擎?
同一个数据库里的不同的表,能否设置不同的存储引擎?
可以,存储引擎是针对表的,可以针对不同的表去设置不同的存储引擎,
方式一:
先use到库里面,
alter是修改表结构的语句,
然后可以去查看一下,现有的存储引擎变了没有,
修改完之后,退出mysql,再去ls一下这个auth目录,
方式二:还可以在配置文件/etc/my.cnf里面修改它的存储引擎的参数,改完之后再去重启一下mysqld服务,
(2)设置完引擎之后,如何查看当前的存储引擎?
注:\G表示格式化输出的意思,
在显示出来的页面里,找一下存储引擎是什么?
(3)如果想要在创建表的时候,就指定存储引擎呢?
所以,在创建表的时候,默认指定的存储引擎就是Innodb了,
如果你想要Innodb的存储引擎——那就在创建该表的时候,什么都不指定,就可以了
如果你想要用MyIsm的存储引擎——那就需要在创建表的时候,指定存储引擎,
注:在去设置存储引擎的时候,myisam的大小写是没有影响的
设置完之后,再去查看一下设置成功了没:
然后再去看一下,表t3的存储引擎是什么:
(4)如何在mysql里面,临时设置默认的存储引擎呢?
即不必去修改配置文件来设置存储引擎,也不必在创建表的时候去指定存储引擎,
然后再去创建一个表t3的时候,就不必在后面指定存储引擎了,
因为此时我们在配置文件里,指定的默认存储引擎是Inondb,那刚刚设置的临时默认存储引擎是否永久生效呢?
先退出mysql数据库,再登录进mysql里面,先use进auth这个库里面,
注:临时设置的默认存储引擎,只在mysql的命令行生效,一旦退出了连接,再登录进去的话,临时设置的就失效了
4、比较Innodb和Myisam这两种存储引擎,在处理数据方面的速度
测试读、写的速度:
需要创建出两个使用不同存储引擎的表,
先创建出测试所要用到的库,然后use到该库中:
创建两个结构相同的表,但是它们各自的存储引擎是不同的,
第一个表,用Myisam做存储引擎,
然后,用相同的语句把第二个表创建出来,
第二个表使用Innodb的存储引擎,
然后,可分别查看一下这两个表中的信息,是否设置成功了,
因为这两个表中,都给它们设置了id这一列为主键,那测试读的时候,就可以用索引去读,
然后,需要先在这两个表里面添加一些信息,
注:在表中数据量很少的情况下,测试读或写的性能,都没有任何可比性,需要写入大量数据才能测试出读、写的性能好坏,
这里可以使用一个脚本往这两个表里面,写数据
如何用脚本快速插入几百万行、上千万行的数据量?
即创建一个存储过程,然后利用这个存储过程去快速地执行这个存储过程所包含的脚本,
存储过程——存放在数据库服务器里面的一个脚本,只需要吊用这个脚本的名字就可以执行该脚本所有的语句了,
注:不要在创建存储过程的时候,用分号做结束符,
所以要先把存储过程的结束标识给改了,比如可以用$做Mysql语句的结束,
改好了之后,在用mysql去编辑存储过程的时候,编辑语句中,末尾就可以用$表示结束了,
create procedure insertm()
begin
set @i=1;
while @i
do
insert into tm(name) values(concat("zhangsan",@i));
set @i=@i+1;
end while;
end
$
利用上面的这个存储过程,就可以在tm这个表中添加1千万行记录,
create procedure inserti()
begin
set @i=1;
while @i
do
insert into ti(name) values(concat("zhangsan",@i));
set @i=@i+1;
end while;
end
$
先把上面的两个脚本复制一下,然后来到mysql的命令行里面,先把第一个存储过程给创建出来,给粘贴过来,
然后再把第二个存储过程给粘贴过来,
然后,就可以利用存储过程向两个表添加1千万行存储记录,
这时候,会消耗一段时间,但过程中不要Ctrl+C,只需要等,
然后来调用第二个存储过程,
注:从上图的结果耗费的时间去看的话,
下面要比较一下,两种存储引擎读的性能,
比较读(搜索)性能的时候,就要分为有索引和没索引两种情况了:
上面创建的这两个表都是以id那一列作为索引的,
(1)没索引的情况(不按id去搜索,按照name名字去搜索):
注:读的时候,要尽量确保读的量更大一些,才有可比性,
所以,无索引时,读取的性能里,myisam会更快一点,
(2)用带有索引去读的时候(拿id去搜索)
同样的量级别,再去搜索一下tm这个表,
所以,带索引的搜索时,innodb会更快一些,
相关文章:

存储引擎MySQL和InnoDB(数据库管理与高可用)
1、存储引擎 存储引擎是核心组成部分, 是构成数据库最基础最底层的部件, 利用这个部件,你的Mysql能够对数据进行查询、创建、更新、删除等操作, 也就是说,用户所输入的一系列的mysql语句,是由存储引擎来…...

探索局域网传输新境界 | 闪电藤 v2.2.7
在这个数字化时代,文件的快速、安全传输是我们日常工作中不可或缺的一部分。今天,电脑天空向大家介绍一款革命性的局域网文件传输工具——闪电藤,它将彻底改变你的文件传输体验。 🎨 界面设计 —— 极简之美 闪电藤采用极简的设…...
Tiling Window Management
我主要说一下windows版的 下面这个链接用的人比较多 GitHub - LGUG2Z/komorebi: A tiling window manager for Windows 🍉 建议搭配 GitHub - da-rth/yasb: A highly configurable cross-platform (Windows) status bar written in Python. GitHub - amnweb/ya…...
9. kubernetes资源——pv/pvc持久卷
kubernetes资源——pv/pvc持久卷 一、volume数据卷1、hostPath2、挂载nfs实现持久化 二、pv/pvc 持久卷/持久卷声明1、pv/pvc介绍2、pv/pvc的使用流程2.1 创建pv2.2 创建pvc2.3 创建pod,使用pv做持久化 一、volume数据卷 用于pod中的数据的持久化存储 支持很多的卷…...

2024西安铁一中集训DAY27 ---- 模拟赛((bfs,dp) + 整体二分 + 线段树合并 + (扫描线 + 线段树))
文章目录 前言时间安排及成绩题解A. 倒水(bfs dp)B. 让他们连通(整体二分 按秩合并并查集 / kruskal重构树)C. 通信网络(线段树合并 二分)D. 3SUM(扫描线 线段树) 前言 T1没做出…...

STM32F401VET6 PROTEUS8 ILI9341 驱动显示及仿真
stm32cubemx新建工程代码,并生成工程 设置gpio 设置SPI 其他的参考stm32默认设置 然后编辑驱动代码 ili9341.h #ifndef ILI9341_H #define ILI9341_H#include <stdbool.h> #include <stdint.h>#include "glcdfont.h" #include "stm32…...

抖音视频素材网站有哪些?非常好用的5个抖音视频素材库分享
在打造引人入胜的抖音视频时,选择高品质的视频素材至关重要。优选的素材不仅能够显著提升视频的吸引力,还能让你的作品在众多视频中突出重围。对于抖音创作者而言,让我们探索一些备受推崇的视频素材平台,帮助你制作出既专业又引人…...

【数据结构】链式二叉树的实现和思路分析及二叉树OJ
【数据结构】链式二叉树的实现和思路分析及二叉树OJ 🔥个人主页:大白的编程日记 🔥专栏:数据结构 文章目录 【数据结构】链式二叉树的实现和思路分析及二叉树OJ前言一.链式二叉树的定义及结构二.链式二叉树的遍历2.1前序遍历2.2中…...

项目成功秘诀:工单管理系统如何加速进程
国内外主流的10款项目工单管理系统对比:PingCode、Worktile、浪潮云工单管理系统、华为企业智能工单系统、金蝶云苍穹、紫光软件管理系统、Jira、Asana、ServiceNow、Smartsheet。 在管理日益复杂的个人项目时,找到一款能够真正符合需求的管理软件&#…...

OpenGauss和GaussDB有何不同
OpenGauss和GaussDB是两个不同的数据库产品,它们都具有高性能、高可靠性和高可扩展性等优点,但是它们之间也有一些区别和相似之处。了解它们之间的关系、区别、建议、适用场景和如何学习,对于提高技能和保持行业敏感性非常重要。本文将深入探…...

星环科技携手东华软件推出一表通报送联合解决方案
随着国家金融监督管理总局“一表通”试点工作的持续推进,星环科技携手东华软件推出了基于星环科技分布式分析型数据库ArgoDB和大数据基础平台TDH的一表通报送联合解决方案,并已在多地实施落地中得到充分验证。 星环科技与东华软件作为战略合作伙伴&…...

YOLOv10环境搭建、训练自己的目标检测数据集、实际验证和测试
1 环境搭建 1.1 在官方仓库的给定的使用python3.9版本,则使用conda创建对应虚拟环境。 conda create -n yolov10 python3.9 1.2 切换到对应虚拟环境 conda activate yolov10 1.3 在指定目录下克隆yolov10官方仓库代码 git clone https://github.com/THU-MIG/yo…...

Harmony Next -- 通用标题栏:高度自定义,可设置沉浸式状态,正常状态下为:左侧返回、居中标题,左中右均可自定义视图。
hm_common_title_bar OpenHarmony三方库中心仓:https://ohpm.openharmony.cn/#/cn/detail/common_title_bar 介绍 一款通用标题栏,支持高度自定义,可设置沉浸式状态,正常状态下为:左侧返回、居中标题,左…...

甄选范文“论数据分片技术及其应用”软考高级论文,系统架构设计师论文
论文真题 数据分片就是按照一定的规则,将数据集划分成相互独立、正交的数据子集,然后将数据子集分布到不同的节点上。通过设计合理的数据分片规则,可将系统中的数据分布在不同的物理数据库中,达到提升应用系统数据处理速度的目的。 请围绕“论数据分片技术及其应用”论题…...

【elementui】记录el-table设置左、右列固定时,加大滚动条宽度至使滚动条部分被固定列遮挡的解决方法
当前elementui版本:2.8.2 现象:此处el-table__body-wrapper默认的滚动条宽度为8px,我加大到10px,如果不设置fixed一切正常,设置fixed后会被遮挡一点 el-table__fixed-right::before, .el-table__fixed::before 设置…...
Python人工智能:一、语音合成和语音识别
在Python中,语音合成(Text-To-Speech, TTS)和语音识别(Speech-To-Text, STT)是两个非常重要的功能,它们在人工智能、自动化、辅助技术以及许多其他领域都有广泛的应用。下面将分别介绍这两个领域在Python中…...

C/C++进阶 (8)哈希表(STL)
个人主页:仍有未知等待探索-CSDN博客 专题分栏:C 本文着重于模拟实现哈希表,并非是哈希表的使用。 实现的哈希表的底层用的是线性探测法,并非是哈希桶。 目录 一、标准库中的哈希表 1、unordered_map 2、unordered_set 二、模…...
2024电赛H题参考方案(+视频演示+核心控制代码)——自动行驶小车
目录 一、题目要求 二、参考资源获取 三、TI板子可能用到的资源 1、环境搭建及工程移植 2、相关模块的移植 四、控制参考方案 1、整体控制方案视频演示 2、视频演示部分核心代码 五、总结 一、题目要求 小编自认为:此次控制类类型题目的H题,相较于往年较…...

设计模式14-享元模式
设计模式14-享元模式 由来动机定义与结构代码推导特点享元模式的应用总结优点缺点使用享元模式的注意事项 由来动机 在很多应用中,可能会创建大量相似对象,例如在文字处理器中每个字符对象。在这些场景下,如果每个对象都独立存在,…...
Javascript中canvas与svg详解
Canvas 在JavaScript中,<canvas> 元素用于在网页上绘制图形,如线条、圆形、矩形、图像等。它是一个通过JavaScript和HTML的<canvas>元素来工作的绘图表面。<canvas> 元素自身并不具备绘图能力,它仅仅提供了一个绘图环境&a…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...

关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...

算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...
学习一下用鸿蒙DevEco Studio HarmonyOS5实现百度地图
在鸿蒙(HarmonyOS5)中集成百度地图,可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API,可以构建跨设备的定位、导航和地图展示功能。 1. 鸿蒙环境准备 开发工具:下载安装 De…...