MySQL数据库的存储引擎
目录
一、存储引擎概念
二、存储引擎
2.1MyISAM
2.11MyISAM的特点
2.12MyISAM表支持3种不同的存储格式:
2.2 InnoDB
2.21InnoDB特点介绍
三、InnoDB与MyISAM 区别
四、怎么样选择存储引擎
五、查看存储引擎
六、查看表使用的存储引擎
七、修改存储引擎
1.通过alter table修改
2.通过修改/etc/my.cnf配置文件,指定默认存储引擎并重启服务
八、如何尽可能避免死锁
一、存储引擎概念
- MySQL中的数据用各种不同的技术存储在文件中,每 一种技术都使用不同的存储机制、索引技巧、锁定水平 并最终提供不同的功能和能力,这些不同的技术以及配 套的功能在MySQL中称为存储引擎
- 存储引擎是MySQL将数据存储在文件系统中的存储方 式或者存储格式
- MySQL常用的存储引擎:MyISAM、InnoDB
- MySQL数据库中的组件,负责执行实际的数据I/O操作
- MySQL系统中,存储引擎处于文件系统之上,在数据保存到数据文件之前会传输到存储引擎,之后按照各个存储引擎的存储格式进行存储
二、存储引擎
2.1MyISAM
MyISAM:不支持事务和外键约束,占用空间较小,访问速度快,适用于不需要事务处理,频繁查询的应用场景。
2.11MyISAM的特点
1、MyISAM不支持事务,也不支持外键约束,只支持全文索引,数据文件和索引文件是分开保存的
2、访问速度快,对事务完整性没有要求
3、MyISAM 适合查询、插入为主的应用
4、MyISAM在磁盘上存储成三个文件,文件名和表名都相 同,但是扩展名分别为:
- .frm文件存储表结构的定义
- 数据文件的扩展名为 .MYD(MYData)
- 索引文件的扩展名是 .MYl(MYIndex)
5、表级锁定形式,数据在更新时锁定整个表
6、数据库在读写过程中相互阻塞
- 会在数据写入的过程阻塞用户数据的读取
- 也会在数据读取的过程中阻塞用户的数据写入
7、数据单独写入或读取,速度过程较快且占用资源相对少
8、MyIAM支持的存储格式
- 静态表
- 动态表
- 压缩表
2.12MyISAM表支持3种不同的存储格式:
- 静态(固定长度)表
静态表是默认的存储格式。静态表中的字段都是非可变字段,这样每个记录都是固定长度的,这种存储方式的优点是存储非常迅速,容易缓存,出现 故障容易恢复:缺点是占用的罕间通常比动态表多。
- 动态表
动态表包含可变字段,记录不是固定长度的,这样存储的优点是占用空间较少,但是频繁的更新、删除记录会产生碎片,需要定期执行OPTIMTZE TABLE 语句或myisamchk-r命令来改善性能,并且出现故障的时候恢复相对比较困难。
- 压缩表
压缩表由myisamchk工具创建,占据非常小的空间,因为每条记录都是被单独压缩的,所以只有非常小的访问开支。
2.2 InnoDB
InnoDB:支持事务处理、外键约束、占用空间比MyISAM大,适用于需要事务处理、更新删除频繁的应用场景。
2.21InnoDB特点介绍
- 支持事务,支持4个事务隔离级别
- MySQL从5.5.5版本开始,默认的存储引擎为InnoDB
- 读写阻塞与事务隔离级别相关
- 能非常高效的缓存索引和数据
- 表与主键以簇的方式存储
- 支持分区、表空间,类似oracle数据库
- 支持外键约束,5.5前不支持全文索引,5.5后支持全文索引
- 对硬件资源要求还是比较高的场合
- 行级锁定,但是全表扫描仍然会是表级锁定,如 update table set a=1 where user like %zhang%';
- InnoDB中不保存表的行数,如 select count(*) from table; 时,InnoDB需要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。需要注意的是当count(*)语句包含where条件时MyISAM也需要扫描整个表。
- 对于自增长的字段,InnoDB 中必须包含只有该字段的索引,但是在MyISAM表中可以和其他字段一起建立组合索引。
- delete清空整个表时,InnoDB 是一行一 行的删除,效率非常慢。MyISAM则会重建表。
三、InnoDB与MyISAM 区别
MyISAM:不支持事务和外键约束,占用空间较小,访问速度快,表级锁定,适用于不需要事务处理,单独写入或查询的应用场景。
InnopB:支持事务处理、外键约束、占用空间比MyISAM大,支持行级锁定,读写并发能力较好,适用于一致性要求高、数据更新频繁的应用场景。
四、怎么样选择存储引擎
需要考虑每个存储引擎提供了哪些不同的核心功能及应用场景
支持的字段和数据类型
- 所有引擎都支持通用的数据类型
- 但不是所有的引擎都支持其它的字段类型,如二进制对象
锁定类型:不同的存储引擎支持不同级别的锁定
- 表锁定:MyISAM支持
- 行锁定:InnoDB支持
索引的支持
- 建立索引在搜索和恢复数据库中的数据时能显著提高性能
- 不同的存储引擎提供不同的制作索引的技术
- 有些存储引擎根本不支持索引
事务处理的支持
- 提高在向表中更新和插入信息期间的可靠性
- 可根据企业业务是否要支持事务选择存储引擎
五、查看存储引擎
六、查看表使用的存储引擎
方法一:
show table status from 库名 where name='表名'\G
方法二:
use 库名;
show create table 表名;
七、修改存储引擎
1.通过alter table修改
use库名;
alter table 表名 engine=存储引擎;
2.通过修改/etc/my.cnf配置文件,指定默认存储引擎并重启服务
八、如何尽可能避免死锁
以固定的顺序访问表和行.
大事务拆小。大事务更倾向于死锁,如果业务允许,将大事务拆小.
在同一个事务中,尽可能做到一次锁定所需要的所有资源,减少死锁概率.
降低隔离级别。如果业务允许,将隔离级别调低也是较好的选择,比如将隔离级别从RR调整为RC,可以避免掉很多因为gap锁造成的死锁.
为表添加合理的索引.如果不使用索引将会为表的每一行记录添加上锁,死锁的概率大大增大.
相关文章:
![](https://img-blog.csdnimg.cn/2fa66ee6e257426b9a93265bb777d205.png)
MySQL数据库的存储引擎
目录 一、存储引擎概念 二、存储引擎 2.1MyISAM 2.11MyISAM的特点 2.12MyISAM表支持3种不同的存储格式: 2.2 InnoDB 2.21InnoDB特点介绍 三、InnoDB与MyISAM 区别 四、怎么样选择存储引擎 五、查看存储引擎 六、查看表使用的存储引擎 七、修改存储引擎 …...
![](https://img-blog.csdnimg.cn/69a4a9fc56384a0eafc61b6f44484079.png)
Linux-多路转接-epoll
epoll 接口认识epoll_createepoll_ctlepoll_wait epoll工作原理在内核中创建的数据结构epoll模型的一个完整工作流程 epoll工作模式LT-水平触发ET-边缘触发两种方式的对比 epoll的使用场景对于poll的改进惊群效应什么是惊群效应如何解决惊群效应原子操作/mutex/spinlock如何选择…...
![](https://img-blog.csdnimg.cn/20201006233330223.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1VyZWxpYWJsZQ==,size_16,color_FFFFFF,t_70#pic_center)
Java面试被问了几个简单的问题,却回答的不是很好
作者:逍遥Sean 简介:一个主修Java的Web网站\游戏服务器后端开发者 主页:https://blog.csdn.net/Ureliable 觉得博主文章不错的话,可以三连支持一下~ 如有需要我的支持,请私信或评论留言! 前言 前几天参加了…...
![](https://www.ngui.cc/images/no-images.jpg)
概率论几种易混淆的形式
正态分布标准型 x − μ σ \frac{x - \mu}{\sigma} σx−μ 大数定律形式 P { X ≤ ∑ i 1 n x i − n μ n σ 2 } ∫ − ∞ X 1 2 π e − x 2 2 d x P\{X \le \frac{\sum_{i 1}^{n}x_i -n\mu}{\sqrt{n\sigma^2}} \} \int _{-\infty}^{X}\frac{1}{\sqrt{2\pi}}e^{-\fr…...
![](https://www.ngui.cc/images/no-images.jpg)
PyTorch数据增强后的结果展示
from PIL import Image import torch from torchvision import transformstrans transforms.Compose([transforms.ToTensor(), transforms.RandomErasing(p0.9, value 120, inplaceTrue)]) # 这里Compose是所做的变换img_path 02-56-45-060-1454-camra1.bmp img Image.open…...
![](https://www.ngui.cc/images/no-images.jpg)
指定程序在哪个GPU上运行
摘要: 当本地(或服务器)有个多个GPU时,需要指定程序在指定GPU上运行,需要做以下设置。 目录 一、在终端上指定GPU二、在程序中指定GPU三、系统变量指定GPU四、pytorch中指定GPU 一、在终端上指定GPU 在终端运行程序时…...
![](https://img-blog.csdnimg.cn/194f36cb45bd42f782281c7b639bc289.png)
Linux CentOS7 vim多文件编辑
使用vim编辑多个文件,十分常用的操作。本文从打开、显示、切换文件到退出,进行简单讨论。 一、打开文件 1.一次打开多个文件 vim还没有启动的时候,在终端里输入vim file1 file2 … filen便可以打开所有想要打开的文件。 执行命令 vim fil…...
![](https://www.ngui.cc/images/no-images.jpg)
PAT甲级真题1153: 解码PAT准考证
🕺作者: 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux菜鸟刷题集 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的…...
![](https://www.ngui.cc/images/no-images.jpg)
linux信号
title: linux信号 createTime: 2020-10-29 18:05:52 updateTime: 2020-10-29 18:05:52 categories: linux tags: SIGHUP 终止进程 终端线路挂断[喝小酒的网摘]http://blog.hehehehehe.cn/a/16999.htm SIGINT 终止进程 中断进程 SIGQUIT 建立CORE文件终止进程,并且生…...
![](https://img-blog.csdnimg.cn/8444e7705b5c4b459587fd6b06af904f.png)
JavaWeb开发-05-SpringBootWeb请求响应
一.请求 1.Postman 2.简单参数 package com.wjh.controller;import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpServletRequest;/** 测试请求参数接受*/ R…...
![](https://www.ngui.cc/images/no-images.jpg)
Ubuntu下载
参考文档: 镜像文件:VMware下安装ubuntu 16.04(全步骤)_vmwaubuntu-16.04.4-desktop-amd64.iso_ST0new的博客-CSDN博客 vmware tools使用安装:VMware——VMware Tools的介绍及安装方法_William.csj的博客-CSDN博客 …...
![](https://img-blog.csdnimg.cn/f35f6669705c4592a59e4219716c1268.png)
Vue 的组件加载顺序和渲染顺序
1、结论先行 组件的加载顺序是自上而下的,也就是先加载父组件,再递归地加载其所有的子组件。 而组件渲染顺序是按照深度优先遍历的方式,也就是先渲染最深层的子组件,再依次向上渲染其父组件。 2、案例 下面是一个简单的示例代…...
![](https://img-blog.csdnimg.cn/img_convert/759286321abe21382b4abcf918633493.jpeg)
leetcode Top100(17)矩阵置零
给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1: 输入:matrix [[1,1,1],[1,0,1],[1,1,1]] 输出:[[1,0,1],[0,0,0],[1,0,1]]示例 2: 输入&…...
![](https://img-blog.csdnimg.cn/eca3212f1bab4e369dd83514599bcba0.png)
论文精读(2)—基于稀疏奖励强化学习的机械臂运动规划算法设计与实现(内含实现机器人控制的方法)
目录 1.作者提出的问题及解决方向 2.延深-用如何用强化学习对机器人进行控制 2.1思路 2.2DQN和DDPG在机器人控制中的应用 3.解决方案 3.1思路 3.2实验 3.3创新点 4.展望 1.作者提出的问题及解决方向 目的:使机械臂在非结构化环境下实现端到端的自主学习控制…...
![](https://www.ngui.cc/images/no-images.jpg)
快速安装keepalive
快速安装keepalive #安装 yum install keepalived -y# 查看版本: rpm -q -a keepalived#修改配置文件 vim /etc/keepalived.conf虚拟 ip :随意选一个,不被占用的ip即可。...
![](https://img-blog.csdnimg.cn/7518b6f419024bcda1281ff8e36c65eb.png)
nginx实现反向代理实例
1 前言 1.1 演示内容 在服务器上访问nginx端口然后跳转到tomcat服务器 1.2 前提条件 前提条件:利用docker安装好nginx、tomcat、jdk8(tomcat运行需要jdk环境) 只演示docker安装tomcat: 默认拉取最新版tomcat docker pull t…...
![](https://img-blog.csdnimg.cn/1bb6e5f0c8714a509c37526e682b342b.png)
使用Freemarker填充模板导出复杂Excel,其实很简单哒!
文章目录 1. 需求分析2. 对象生成3. 列表插值4. 另存xml格式化5. ftl修改6. 程序转化7. 犯的错误8. 总结 1. 需求分析 类似这样的一个表格 我们需要从数据库中查询对应的数据,将其汇总进该表格,并且可能还需要复制表格项,我这个案例中没有&a…...
![](https://www.ngui.cc/images/no-images.jpg)
windows环境下安装logstash同步数据,注册系统服务
windows环境下安装logstash同步数据,注册系统服务 此方法适用于Windows环境,同一个配置文件配置多个管道,并且配置系统服务,防止程序被杀进程 一、安装logstash (1)下载压缩包,解压后修改con…...
![](https://img-blog.csdnimg.cn/0474eedc53ee45a9a9aa22105e2d11bb.webp)
java服务内存说明及配置详解
java进程内存 JVM内存分布图: 【java进程内存】【堆外内存】 【jvm堆内存】 【堆外内存】 【Metaspace】 【Direct Memory】【JNI Memory】【code_cache】 … 堆外内存泄漏的排查在于【本地内存(Native Memory)】【Direct Memory】【JNI Memory】 一般…...
![](https://img-blog.csdnimg.cn/a692c625f2ee444297e81d3bf1074cfc.png)
Mybatis-MyBatis的缓存
Mybatis-MyBatis的缓存 一、MyBatis的一级缓存二、MyBatis的二级缓存二级缓存的相关配置 三、MyBatis缓存查询的顺序 一、MyBatis的一级缓存 一级缓存是SqlSession级别的,通过同一个SqlSession查询的数据会被缓存,下次查询相同的数据,就 会从…...
![](https://img-blog.csdnimg.cn/0e9b1f168ac54e8a8c0ed828768c63e8.png)
计算机组成原理之硬件的基本组成,深入介绍两大计算机结构体系,从底层出发认识计算机。
大家好,欢迎阅读《计算机组成原理》的系列文章,本系列文章主要的内容是从零学习计算机组成原理,内容通俗易懂,大家好好学习吧!!! 更多的优质内容,请点击以下链接查看哦~~ ↓ ↓ ↓ …...
![](https://img-blog.csdnimg.cn/4d45e431b52144d68dbed0df2da47234.png)
二十五、MySQL事务的四大特性和常见的并发事务问题
1、事务的四大特性 2、常见的并发事务问题 (1)并发事务问题分类: (2)脏读: 一个事务正在对一条记录做修改,在这个事务完成并提交前,这条记录的数据就处于不一致的状态;…...
辨析常见的医学数据分析(相关性分析回归分析)
目录 1 常见的三种分类结果? 2 什么是相关性分析? 相关性分析的结果怎么看? 3 什么是回归分析? 1)前提 2)常见的回归模型 4 对于存在对照组实验的医学病例如何分析? 1)卡方检验…...
![](https://www.ngui.cc/images/no-images.jpg)
SpringBoot项目中只执行一次的任务写法
SpringBoot项目中只执行一次的任务写法 有时候我们需要进行初始化工作,就说明只要进行一次的工作,那么,在Springboot项目中如何做到任务只进行一次呢 利用定时任务 在Spring Boot项目中,你可以使用Spring框架提供的Scheduled注解…...
![](https://www.ngui.cc/images/no-images.jpg)
TCK、TMS、TDI、TDO的含义
这四个信号是JTAG(Joint Test Action Group)界面的一部分。JTAG是一种用于测试和验证集成电路和印刷电路板的技术,也用于进行设备编程和调试。这四个信号分别是: TCK (Test Clock): 意义:测试时钟ÿ…...
![](https://img-blog.csdnimg.cn/img_convert/eb4ab7679bfee1bc71484cf6fd854837.png)
R语言RSTAN MCMC:NUTS采样算法用LASSO 构建贝叶斯线性回归模型分析职业声望数据...
全文链接:http://tecdat.cn/?p24456 如果你正在进行统计分析:想要加一些先验信息,最终你想要的是预测。所以你决定使用贝叶斯(点击文末“阅读原文”获取完整代码数据)。 相关视频 但是,你没有共轭先验。你…...
![](https://img-blog.csdnimg.cn/9f697dbffadb444f9b3ae930ebeb73f2.png)
【PowerShell】PowerShell的Core版本的额外配置
在PowerShell 7.1 安装完成后,默认情况下打开PowerShell 会直接进入到系统内置的PowerShell,如果希望通过远程连接或者PowerShell Web Access 进入到PowerShell 7环境的界面,就需要进行环境的再配置才能实现PowerShell 7.1 的环境连接。需要为外部的环境提供连接的话需要按照…...
![](https://img-blog.csdnimg.cn/60d269c84a9d455b94f480f9424358cc.png)
数据结构----链式栈
目录 前言 链式栈 操作方式 1.存储结构 2.初始化 3.创建节点 4.判断是否满栈 5.判断是否空栈 6.入栈 7.出栈 8.获取栈顶元素 9.遍历栈 10.清空栈 完整代码 前言 前面我们学习过了数组栈的相关方法,(链接:线性表-----栈(栈…...
![](https://img-blog.csdnimg.cn/img_convert/b2b7255d96118ec1af55f991569ac506.png)
实在智能携手40+央企,探索财务大模型及数智化实践与应用
“这次培训给我一个最大的感触就是,过去以为AI智能化、大模型技术是很高深的事情。但现在,我们通过RPA等数字化工具,自主根据自己的工作岗位,完成业务自动化流程的开发和设计。AI技术没有想象中的那么难入门。” 这是一位参加了“…...
![](https://img-blog.csdnimg.cn/img_convert/dc3e42078bac3485de973c17bcef570b.png)
upload-labs文件上传1-5关
第一关 编写一句话木马1.php,编写完成后将后缀名修改为png 将1.png上传,上传时使用bp抓包 抓包后将后缀名修改为png 连接蚁剑 第二关 上传1.php,显示文件类型不正确 使用bp抓包发送重发器,修改文件后缀名后点击发送,…...
![](https://img-blog.csdnimg.cn/img_convert/4e26427ac952d947a7fafa46c13cc667.png)
wordpress 插件官网/站长之家素材
最近闲来无事,研究研究在安卓上跑Python。想起以前玩过的kivy技术,kivy[1]是一个跨平台的UI框架。当然对我们最有用的是,kivy可以把python代码打包成安卓App。但是由于安卓打包的工具链很长,包括android sdk打包java代码、ndk编译…...
![](/images/no-images.jpg)
动态网站开发网络课程设计/广告销售如何寻找客户
今天帮一个朋友搭建samba服务器,发现总是无法正常访问,最后google摸索搞定了,下面把遇到的问题和解决方法共享一下。 这里用的linux是centos版本6. 一开始遇到的问题是‘找不到网络路径’,下面是一些处理方法: 1. 确保…...
![](https://images2015.cnblogs.com/blog/133128/201601/133128-20160117164724022-930113010.png)
wordpress 复杂表单/推广app下载
在我们平时开发中会经常使用一些第三方开发的开源类库。这样会有效地提高我们开发项目的效率,在这里我找了好几十个进行一个汇总,供大家参考使用,方便大家在需要的时候能容易找到。 UI篇 awesome-ios-ui 提供了一些UI效果,有动画&…...
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
较好的网站模板/海外市场推广策略
1.使用冒泡算法进行排序,此冒泡算法是从最上面往下沉。属于反冒。2.代码如下:冒泡算法1 classProgram2 {3 staticvoidMain(string[] args)4 {5 intn 10;6 inttemp;7 int[] a { 6,5,4,9,2,0,15,19,25,95};8 for(inti n-1; i>0; i--)9 {10 for(intj 0; …...
![](/images/no-images.jpg)
网站的规划 建设与分析论文/百度优化师
Some Useful discussions and tools about 3D: Unreal load 3dtileset not by ion looks wrong (rotation) https://github.com/CesiumGS/3d-tiles-validator/tree/2.0-tools/tools https://github.com/CesiumGS/3d-tiles-samples...
![](https://images2015.cnblogs.com/blog/970938/201704/970938-20170424005942069-1994080430.png)
怎么用html做网站/bt种子搜索神器
今天在修改wuser数据库连接配置文件user.proxool.xml之后重启服务,发现访问接口均报错。 [访问user.getTgUser报错:NoSuchElementException] [访问user.getUser报错:NullPointerException] 分别找到对应报错行,均为访问数据库的一行 【getUser,NoPointer…...