Mysql引擎、隔离机制、存储结构、索引
数据库常用的两种引擎
InnoDB、MyISAM
两种引擎差异对比
如何选择引擎
select多,用MyISAM;
其他操作多,用InnoDB
两个引擎索引结构
查找mysql数据存储位置方式
- 找到mysql安装目录
- 打开my.ini
- 搜索datadir,就看到了
MyISAM
每张表都有三个文件
.frm 表结构文件,存放的是表结构信息
.MYD 数据文件,存放的是表数据及每行数据对应在磁盘中的地址
.MYI 索引文件 里面存放了设置的索引及与MYD文件相对应的磁盘地址
InnoDB
每张表都有.frm文件
而索引及索引数据有两种存储方式:
1. 非独立表空间
进入mysql安装目录,通过my.ini查找存储位置可发现idbdata1,
2. 独立表空间
每个表都对应有一个.idb文件
3. idb文件存的哪些内容
表的索引及索引对应行的数据都存放到这里了
4. 如何判断是否是独立表空间
判定条件除了上面看文件外,还可以通过执行sql查询
SHOW VARIABLES LIKE 'innodb_file_per_table';
value=off就代表是非独立表空间
聚簇索引&非聚簇索引
非聚簇索引:索引和索引数据存储在两个文件中(MyISAM就是)
结构图如下:
聚簇索引:索引和索引数据存储在一个文件中(InnoDB就是)
结构图如下:
两种引擎查找流程
- MyISAM
- InnoDB
B树和B+树的区别
B树的结构
索引两种类型
单值索引、联合索引
脏读、幻读、不可重复读
脏读
两个线程执行流程:
a线程将id=1的 字段1设置为10
b线程读取id=1的 字段1 数据 10
a线程对第一步操作进行回滚
b线程这时持有的 20 就是脏读
幻读
两个线程执行流程:
a线程读取用户id=1备注数量为一条
b线程将用户id=1备注添加了一条
a线程再次读取用户id=1备注数量,这时变成两条了
幻读又叫做幻行
不可重复度
两个线程执行流程:
a线程读取id=1的字段1数据为10
b线程将id=1的字段1数据修改为20
a线程再次读取id=1 字段1 ,发现两次读取的不一致,这就是不可重复读
四大隔离机制
读取未提交
可读取到未提交的数据,会导致脏读、幻读、不可重复读
读取已提交(Oracle 默认)
只读已提交的数据,会导致幻读、不可重复读
可重复读(mysql默认)
只读已提交的数据,但可读取多次,造成幻读
串行
并发差,不会造成脏读、幻读、不可重复读
Mysql引擎、隔离机制、存储结构、索引的更多相关文章
- 理解MySql事务隔离机制、锁以及各种锁协议
一直以来对数据库的事务隔离机制的理解总是停留在表面,其内容也是看一遍忘一边.这两天决定从原理上理解它,整理成自己的知识.查阅资料的过程中发现好多零碎的概念假设串起来足够写一本书,所以在这里给自己梳理一 ...
- mysql的innodb数据存储结构
数据库磁盘读取与系统磁盘读取 1,系统从磁盘中读取数据到内存时是以磁盘块(block)为基本单位,位于同一个磁盘块中的数据会被一次性读取出来. 2,innodb存储引擎中有页(Page)的概念,页 ...
- mysql innodb 的 逻辑存储结构
如上图: innodb 的 逻辑存储单元分成 表空间,段,区,页 4个等级 默认情况下,一个数据库 所有变共享一个 默认的表空间(tablespan).可以指定每个表一个表空间. 一个表空间管理着 多 ...
- Mysql RR隔离更新列没有索引 会锁全表
<pre name="code" class="html">mysql> show variables like '%tx_isolation ...
- MySQL两种表存储结构MyISAM和InnoDB的性能比较测试
转载 http://www.jb51.net/article/5620.htm MySQL支持的两种主要表存储格式MyISAM,InnoDB,上个月做个项目时,先使用了InnoDB,结果速度特别慢,1 ...
- MySQL提升笔记(4)InnoDB存储结构
这一节本来计划开始索引的学习,但是在InnoDB存储引擎的索引里,存在一些数据存储结构的概念,这一节先了解一下InnodDB的逻辑存储结构,为索引的学习打好基础. 从InnoDB存储引擎的存储结构看, ...
- MySQL InnoDB 逻辑存储结构
MySQL InnoDB 逻辑存储结构 从InnoDB存储引擎的逻辑结构看,所有数据都被逻辑地存放在一个空间内,称为表空间,而表空间由段(sengment).区(extent).页(page)组成.p ...
- MYSQL Innodb逻辑存储结构
转载于网络 这几天在读<MySQL技术内幕 InnoDB存储引擎>,对 Innodb逻辑存储结构有了些了解,顺便也记录一下: 从InnoDB存储引擎的逻辑存储结构看,所有数据都被逻辑地存放 ...
- 重新学习MySQL数据库3:Mysql存储引擎与数据存储原理
重新学习Mysql数据库3:Mysql存储引擎与数据存储原理 数据库的定义 很多开发者在最开始时其实都对数据库有一个比较模糊的认识,觉得数据库就是一堆数据的集合,但是实际却比这复杂的多,数据库领域中有 ...
- InnoDB的表类型,逻辑存储结构,物理存储结构
表类型 对比Oracle支持的各种表类型,InnoDB存储引擎表更像是Oracle中的索引组织表(index organized table).在InnoDB存储引擎表中,每张表都有个主键,如果在创建 ...
随机推荐
- NOIP2018 Day2T3 保卫王国
首先不考虑强制要求的话是一个经典问题,令 \(f_{i, 0 / 1}\) 为 \(i\) 选或不选时以 \(i\) 为根的子树的最优答案.那么就有转移 \(f_{u, 0} = \sum f_{v, ...
- PHP中常见的数字掐头去尾操作方法
四舍五入round round( float $val[, int $precision = 0[, int $mode = PHP_ROUND_HALF_UP]] ) : float 对浮点数进行四 ...
- MLlib学习——基本数据类型
数据类型--基于RDD的API 本地矢量 标记点 本地矩阵 分布式矩阵 RowMatrix(行矩阵) IndexedRowMatrix(索引行矩阵) CoordinateMatrix(坐标矩阵) Bl ...
- linux_17
nginx负载均衡中常见的算法及原理有哪些? 用rewrite规则实现将所有到a域名的访问rewrite到b域名 实现反向代理客户端IP透传 利用LNMP实现wordpress站点搭建
- 介绍回流与重绘(Reflow & Repaint),以及如何进行优化?
前言 回流与重绘对于前端来说可以说是非常重要的知识点了,我们不仅需要知道什么是回流与重绘,还需要知道如何进行优化.一个页面从加载到完成,首先是构建DOM树,然后根据DOM节点的几何属性形成render ...
- Vue 子组件更新父组件的值
今天在使用Vue中遇到了一个新的需求:子组件需要修改由父组件传递过来的值,由于子组件的值是由父组件传递过来的,不能直接修改属性的值, 我们想改变传递过来的值只能通过自定义事件的形式修改父组件的值达到修 ...
- 系统操作命令实践 下(系统指令+增删改查+vim编辑器)
目录 1.考试 2.今日问题 3.今日内容 4.复制文件 4.移动文件 Linux文件查看补充 cat , nl 5.删除文件 6.系统别名 7.vi/vim编辑器 系统操作命令实践 下(系统指令+增 ...
- 基于6U CPCIe的TMS320C6678+KU060的信号处理板卡
一.产品概述 基于6U CPCIe的C6678+KU060的信号处理板卡是新一代FPGA的高性能处理板卡.板卡采用一片TI DSP TMS320C6678和一片Xilinx公司 XCKU060-2FF ...
- MySQL数据库初识、下载使用(针对库、表、记录的增删改查)
今日内容概要 数据演变史 数据库软件的本质 MySQL简介 下载与安装 基本配置 基本SQL语句 内容详细 1.数据演变史 # 1.单独的文本文件 没有固定的存放位置和格式 文件名:user.txt ...
- Solution -「Gym 102956B」Beautiful Sequence Unraveling
\(\mathcal{Description}\) Link. 求长度为 \(n\),值域为 \([1,m]\) 的整数序列 \(\lang a_n\rang\) 的个数,满足 \(\not\ ...