数据库-引擎

存储引擎:

mysql当中数据用各中不同的技术存储在文件中,每一种技术都使用的是不同的存储机制,索引技巧 索引水平,以及最终提供的不同功能和能力,这些就是我们说的引擎。

功能:

  1. mysql将数据存储在文件系统中的一种方式和格式
  2. 存储引擎负责执行实际的数据i/o操作(读写操作)
  3. 存储引擎介于数据和文件系统之间,数据会先保存到存储引擎,在按照存储引擎的格式保存到文件系统

Mysql存储引擎的分类:

  1. INNODB:5.5之后mysql的默认存储引擎,又叫做事务性速记引擎,支持ACID事务,支持行锁,锁表,写入和查询性能比较好
  2. MYISAM:5.5之间的默认存储引擎,插入数据的性能较高,查询速度也很优秀,但是不支持事务
  3. Memory:所有数据都保存在内存的存储引擎,插入数据,更新数据速度都比较快,但是占用内存空间比较大,会占用和数据成正比的内存空间,mysql一旦重启,数据就会丢失
  4. CSV:由逗号分隔数据的存储引擎,他会在数据库的子目录里为每个数据创建一个csv的文件,就是一种普通的文本文件,每个数据行都占用文本行,csv不支持索引
  5. Archive:非常适合大量的独立的,历史数据的引擎,不需要被经常读取,插入的速度很快,查询的效率比较低
  6. Blackhole:黑洞引擎,写入的任何数据都会消失

MYISAM和INNODB分析对比:

MYISAM:不支持事务,不支持外键,只支持全文索引,数据文件和索引文件是分开的,访问速度快

适合场景:查询和插入数据为主得到应用

在磁盘上有三个文件:

文件名和表名相同,但是扩展名不同:

.frm 存储的表结果

.MYD 数据文件

.MYI 索引文件

查看引擎:

配置文件修改引擎(这种方式只对新建的表有效)

修改存储引擎·:

方法1:

方法2:


通过修改 /etc/my.cnf 配置文件,指定默认存储引擎并重启服务

方法3:

创表时创建

查看数据库内容:

MYISAM的特点:

  1. 表级锁定,更新数据时,整个都将锁定
  2. 数据库在读写过程中相互阻塞

MYISAM支持的存储格式:

  1. 静态表,固定长度表,静态表式MYISAM的默认存储格式,静态表中字段都是非可变字段,每一个记录都是固定长度,存储快,方便缓存,故障容易恢复,缺点是占用空间比较多
  2. 动态表,动态表可以支持包含可变字段,记录的长度是不固定的,优点是占用空间少,频繁更新数据,删除记录,会产生碎片,需要定期清理(命令:myisamchk -r),出现故障恢复比较困难
  3. 压缩表:myisamchk工具创建的,占据的空间非常小,每条记录都是单独压缩的

INNODB:

支持4个事务的隔离级别,5.5之后是mysql的默认存储引擎

读写阻塞和隔离级别相关。

支持高效的缓存索引以及缓存数据

表以主键以簇的方式存储btree

支持外键约束,5.5之后INNODB也可以支持全文索引

支持行锁定,也可以支持表锁定(全表扫描)

  1. 使用like模糊查询,会进行全表扫描,锁定整个表
  2. 对没有创建索引的字段进行增,删,改,也会进行全表扫描,锁定整个表
  3. 使用索引,进行增,删,改,则是行级锁定

INNODB的特点:

  1. 不保存表的行数,统计表的行数,会扫描一遍整个表来计算有多少行
  2. 自增长,INNODB中必须包含只有该字段的索引
  3. Delete清空表,一行一行删,速度比较 truncate(推荐使用)

适用场景:

  1. 业务需要事务的支持
  2. 论坛,微博,对数据一致性比较高的场景
  3. 访问量和并发量比较高的场景,INNODB支持缓存,减少后台服务器的压力

三个文件:

表名.frm(表结构文件)

表名.ibd(即是索引文件,又是索引文件)

db.opt:(表的属性文件)

创表时指定引擎:

INNODB行锁和索引的关系 以及表锁 排查锁 死锁

INNODB锁行:

如果是主键呢

如果说使用的ID字段是主键INNODB对主键使用聚簇索引,锁定整行的记录,其他行不受影响

解决方法,一边commit提交即可

INNODB锁表:

要对一个非索引键进行操作

如果其他行呢,也不能执行

只是写入被锁定,对查没有影响

解决方式,commit即可

锁表小结:当一个事务对非索引列进行操作,因为因为要 全表扫描过滤,所有整张比表都会被锁死,唯有可查

排他锁:

里面的事务一提交,外面的就结束了,可以继续操作

For update 排他锁

死锁:

事务之间相互等待对方资源,最后形成一个环路造成的

  1. 发生死锁时,数据库会自动选择一个事务作为受害者,然后先解除死锁,再进行回滚
  2. 一旦发生死锁,会选择一个事务作为死锁的牺牲品,直接终止其中一个事务,但是不会自动回滚

总结:

索引,锁行

非索引,锁表

排他锁,一个事务在操作,另一个事务无法执行,只能查,排他锁只能加一个,排他锁也叫悲观锁,乐观锁(补充)不会有任何提示,只是数据不能写入,数据提交更新时,进行校验,发生冲突,数据不生效而已,没有其他的报错或者卡顿

死锁,会自动选择一个事务作为牺牲品,结束死锁

演示要求:

  1. 存储引擎只能时INNODB
  2. Mysql默认隔离级别即可

如何尽可能的避免死锁:

  1. 业务的逻辑必须要合理,以固定的顺序访问表和行
  2. 如果事务的类型比较复杂,要进行拆分,在业务允许的情况下,把大的事务拆小,分次执行
  3. 在同一事务中,尽可能的一次性锁定所有需要的资源,可以减少死锁的概率
  4. 隔离级别,read commit。可以避免死锁
  5. 添加合理的索引,可以减少死锁的概率

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用pytorch处理自己的数据集

目录 1 返回本地文件中的数据集 2 根据当前已有的数据集创建每一个样本数据对应的标签 3 tensorboard的使用 4 transforms处理数据 tranfroms.Totensor的使用 transforms.Normalize的使用 transforms.Resize的使用 transforms.Compose使用 5 dataset_transforms使用 1 返回本地…

五年制专转本的备考是多方面的较量

转本复习已进入下半场,同学们不能再慢悠悠地看书了!接下来就是很多人备考的发力期,能否弯道超车就要看个人的把握。 1、自控与时间管理 转本考的知识就是那么多,只需要你高效地投入一定的时间和精力就能够掌握。问题是一些同学做…

【3D 图像分割】基于 Pytorch 的 VNet 3D 图像分割7(数据预处理)

在上一节:【3D 图像分割】基于 Pytorch 的 VNet 3D 图像分割6(数据预处理) 中,我们已经得到了与mhd图像同seriesUID名称的mask nrrd数据文件了,可以说是一一对应了。 并且,mask的文件,还根据结…

【算法|滑动窗口No.3】leetcode3. 无重复字符的最长子串

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望…

课题学习(十)----阅读《基于数据融合的近钻头井眼轨迹参数动态测量方法》论文笔记

一、 引言 该论文针对三轴加速度计、磁通门和速率陀螺随钻测量系统,建立了基于四元数井眼轨迹参数测量模型,并依据状态方程和量测方程,应用2个扩卡尔曼滤波器、1个无迹卡尔曼滤波器和磁干扰校正系统对加速度计、磁通门信号进行滤波、校正&…

【从瀑布模式到水母模式:ChatGPT如何赋能软件研发全流程】

你是否曾读过一本让你欲罢不能的计算机书籍?它可能为你打开了新的技术世界大门,或者是帮助你解决了棘手的编程难题。 前言: 计算机技术的发展和互联网的普及,使信息处理和传输变得更加高效,极大地改变了金融、商业、…

超低价:阿里云双11服务器优惠价格表_87元一年起

2023阿里云双十一优惠活动已经开启了,轻量2核2G服务器3M带宽优惠价87元一年、2核4G4M带宽优惠价165元一年,云服务器ECS经济型e实例2核2G3M固定带宽优惠价格99元一年,还有2核4G、2核8G、4核8G、4核16G、8核32G等配置报价,云服务器e…

解决爬虫在重定向(Redirect)情况下,URL没有变化的方法

重定向是一种网络服务,它可以实现从一个网页跳转到另一个网页的功能。它把用户请求的网页重定向到一个新的位置,而这个位置可以是更新的网页,或最初请求的网页的不同版本。另外,它还可以用来改变用户流量,当用户请求某…

React基础源码解析

前言: 前端魔术师卡颂的react学习视频(1 搭建项目架构_哔哩哔哩_bilibili)中提到了Rodrigo Pombo的一篇react源码教程:Build your own React 本文档分组旨在翻译和记录这篇文章的学习心得,作为react源码学习入门。 …

闭循环低温恒温器的使用注意事项

与液氮恒温器相比,闭循环低温恒温器显得稍微复杂一些!这主要表现在组成部分、体积重量、使用操作、升降温时间等方面。闭循环低温恒温器主要由冷头、氦压缩机、两根氦气连管组成,配套设备还有控温仪、真空泵,可能还有循环水冷机。…

【Proteus仿真】【Arduino单片机】简易电子琴

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器,使用无源蜂鸣器、按键等。 主要功能: 系统运行后,按下K1-K7键发出不同音调。 二、软件设计 /* 作者:嗨小易&a…

动作捕捉系统处理单点多点丢点问题

在动作捕捉数据采集过程中,丢点是经常容易遇到的问题。NOKOV度量动作捕捉软件可以方便地解决丢点问题。 一、单点丢点的处理 如下图,已经采集了动捕数据。 查看是否有丢点,在形影软件左上角选择“窗口分割”,在下方分割出一个空…

Python接口自动化测试实战,一篇足矣

接口自动化测试是指通过编写程序来模拟用户的行为,对接口进行自动化测试。Python是一种流行的编程语言,它在接口自动化测试中得到了广泛应用。下面详细介绍Python接口自动化测试实战。 1、接口自动化测试框架 在Python接口自动化测试中,我们…

ROS学习笔记(4):ROS架构和通讯机制

前提 前4篇文章以及帮助大家快速入门ROS了,而从第5篇开始我们会更加注重知识积累。同时我强烈建议配合B站大学的视频一起服用。 1.ROS架构三层次: 1.基于Linux系统的OS层; 2.实现ROS核心通信机制以及众多机器人开发库的中间层&#xff1b…

HarmonyOS开发:基于http开源一个网络请求库

前言 网络封装的目的,在于简洁,使用起来更加的方便,也易于我们进行相关动作的设置,如果,我们不封装,那么每次请求,就会重复大量的代码逻辑,如下代码,是官方给出的案例&am…

CSS3背景样式

在CSS 2.1中,background属性的功能还无法满足设计的需求,为了方便设计师更灵活地设计需要的网页效果,CSS3在原有background基础上新增了一些功能属性,可以在同一个对象内叠加多个背景图像,可以改变背景图像的大小尺寸&…

nodelist 与 HTMLCollection 的区别

原地址 https://cloud.tencent.com/developer/article/2013289 节点与元素 根据 W3C 的 HTML DOM 标准,HTML 文档中的所有内容都是节点: 整个文档是一个文档节点每个 HTML 元素是元素节点HTML 元素内的文本是文本节点每个 HTML 属性是属性节点注释是注…

基于C语言实现扫雷小游戏

扫雷游戏 1. 扫雷游戏分析和设计1.1 扫雷游戏的功能说明1.2 游戏的分析和设计1.2.1 数据结构的分析 2. 扫雷游戏的代码实现3. 扫雷游戏的扩展 1. 扫雷游戏分析和设计 1.1 扫雷游戏的功能说明 使用控制台实现经典的扫雷游戏 游戏可以通过菜单实现继续玩或者退出游戏 扫雷的棋…

【考研数学】概率论与数理统计 —— 第七章 | 参数估计(2,参数估计量的评价、正态总体的区间估计)

文章目录 一、参数估计量的评价标准1.1 无偏性1.2 有效性1.3 一致性 二、一个正态总体参数的双侧区间估计2.1 对参数 μ \mu μ 的双侧区间估计 三、一个正态总体的单侧置信区间四、两个正态总体的双侧置信区间写在最后 一、参数估计量的评价标准 1.1 无偏性 设 X X X 为总…

技能证里的天花板—阿里云云计算架构师ACE认证!

在当今的社会中,想要获得一份好工作、得到丰厚的报酬,唯一的方法就是证明自己优秀,能给公司创造价值,是大多数公司想要看到的。 那么在面试过程中,怎么样才能让面试官一眼就记住呢?那一定是有一份足够优秀…