数据库常用的两种引擎

InnoDB、MyISAM

两种引擎差异对比

如何选择引擎

select多,用MyISAM;

其他操作多,用InnoDB

两个引擎索引结构

查找mysql数据存储位置方式

  1. 找到mysql安装目录
  2. 打开my.ini
  3. 搜索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就是)

结构图如下:

两种引擎查找流程

  1. MyISAM
  2. InnoDB

B树和B+树的区别

B树的结构

索引两种类型

单值索引、联合索引

脏读、幻读、不可重复读

  1. 脏读

两个线程执行流程:

a线程将id=1的 字段1设置为10

b线程读取id=1的 字段1 数据 10

a线程对第一步操作进行回滚

b线程这时持有的 20 就是脏读

  1. 幻读

两个线程执行流程:

a线程读取用户id=1备注数量为一条

b线程将用户id=1备注添加了一条

a线程再次读取用户id=1备注数量,这时变成两条了

幻读又叫做幻行

  1. 不可重复度

两个线程执行流程:

a线程读取id=1的字段1数据为10

b线程将id=1的字段1数据修改为20

a线程再次读取id=1 字段1 ,发现两次读取的不一致,这就是不可重复读

四大隔离机制

读取未提交

可读取到未提交的数据,会导致脏读、幻读、不可重复读

读取已提交(Oracle 默认)

只读已提交的数据,会导致幻读、不可重复读

可重复读(mysql默认)

只读已提交的数据,但可读取多次,造成幻读

串行

并发差,不会造成脏读、幻读、不可重复读

Mysql引擎、隔离机制、存储结构、索引的更多相关文章

  1. 理解MySql事务隔离机制、锁以及各种锁协议

    一直以来对数据库的事务隔离机制的理解总是停留在表面,其内容也是看一遍忘一边.这两天决定从原理上理解它,整理成自己的知识.查阅资料的过程中发现好多零碎的概念假设串起来足够写一本书,所以在这里给自己梳理一 ...

  2. mysql的innodb数据存储结构

    ​ 数据库磁盘读取与系统磁盘读取 1,系统从磁盘中读取数据到内存时是以磁盘块(block)为基本单位,位于同一个磁盘块中的数据会被一次性读取出来. 2,innodb存储引擎中有页(Page)的概念,页 ...

  3. mysql innodb 的 逻辑存储结构

    如上图: innodb 的 逻辑存储单元分成 表空间,段,区,页 4个等级 默认情况下,一个数据库 所有变共享一个 默认的表空间(tablespan).可以指定每个表一个表空间. 一个表空间管理着 多 ...

  4. Mysql RR隔离更新列没有索引 会锁全表

    <pre name="code" class="html">mysql> show variables like '%tx_isolation ...

  5. MySQL两种表存储结构MyISAM和InnoDB的性能比较测试

    转载 http://www.jb51.net/article/5620.htm MySQL支持的两种主要表存储格式MyISAM,InnoDB,上个月做个项目时,先使用了InnoDB,结果速度特别慢,1 ...

  6. MySQL提升笔记(4)InnoDB存储结构

    这一节本来计划开始索引的学习,但是在InnoDB存储引擎的索引里,存在一些数据存储结构的概念,这一节先了解一下InnodDB的逻辑存储结构,为索引的学习打好基础. 从InnoDB存储引擎的存储结构看, ...

  7. MySQL InnoDB 逻辑存储结构

    MySQL InnoDB 逻辑存储结构 从InnoDB存储引擎的逻辑结构看,所有数据都被逻辑地存放在一个空间内,称为表空间,而表空间由段(sengment).区(extent).页(page)组成.p ...

  8. MYSQL Innodb逻辑存储结构

    转载于网络 这几天在读<MySQL技术内幕 InnoDB存储引擎>,对 Innodb逻辑存储结构有了些了解,顺便也记录一下: 从InnoDB存储引擎的逻辑存储结构看,所有数据都被逻辑地存放 ...

  9. 重新学习MySQL数据库3:Mysql存储引擎与数据存储原理

    重新学习Mysql数据库3:Mysql存储引擎与数据存储原理 数据库的定义 很多开发者在最开始时其实都对数据库有一个比较模糊的认识,觉得数据库就是一堆数据的集合,但是实际却比这复杂的多,数据库领域中有 ...

  10. InnoDB的表类型,逻辑存储结构,物理存储结构

    表类型 对比Oracle支持的各种表类型,InnoDB存储引擎表更像是Oracle中的索引组织表(index organized table).在InnoDB存储引擎表中,每张表都有个主键,如果在创建 ...

随机推荐

  1. Git配置用户信息和SSH免密

    一.配置用户信息 1.查看配置信息 # 查看所有配置 $ git config -l/--list # 查看系统配置 $ git config --system -l/--list # 查看用户配置 ...

  2. Redis学习笔记(二)redis 底层数据结构

    在上一节提到的图中,我们知道,可以通过 redisObject 对象的 type 和 encoding 属性.可以决定Redis 主要的底层数据结构:SDS.QuickList.ZipList.Has ...

  3. Codeforces Round #742 (Div. 2)

    A. Domino Disaster 思路 按照题意模拟即可 如果是 对应关系为R --> R L --> L U --> D D --> U AC_CODE inline v ...

  4. qiankun 2.x 运行时沙箱 源码分析

    简介 从源码层面详细讲解了 qiankun 框架中的 JS 沙箱 和 样式沙箱的实现原理. 序言 沙箱 这个词想必大家应该不陌生,即使陌生,读完这篇文章也就不那么陌生了 沙箱 (Sandboxie) ...

  5. PHP 取整

    转载请注明来源:https://www.cnblogs.com/hookjc/ 对于功能强大的PHP语言来说,能掌握到它的函数用法,一般都能灵活的编写各种需求的PHP程序.我们经常用到的PHP取整函数 ...

  6. 抓包神器 tcpdump 使用介绍 (转)

    tcpdump 命令使用简介 简单介绍 tcpdump 是一款强大的网络抓包工具,运行在 linux 平台上.熟悉 tcpdump 的使用能够帮助你分析.调试网络数据. 要想使用很好地掌握 tcpdu ...

  7. 第一个OC类

    1.如何声明一个类 格式 注意: 1.必须以@interface开头,@end结尾 2.成员变量的声明,必须写在@interface与@end之间的大括号中 3.方法的声明必须在{}下面,不能写在{} ...

  8. 1、前端--HTML简介、head内常见标签、body内常见标签(特殊符号、div、span、a、img、列表、表格table、表单form)、标签两大属性

    今日内容 HTML简介 HTML是构造网页的骨架>>>:几乎所有的网站都是由HTML构建而成 HTML:超文本标记语言 # 不是一门编程语言 没有任何的逻辑 只有固定的标记功能 &q ...

  9. 3U VPX i7 刀片计算机

    产品概述 该产品是一款基于第三代Intel i7双核四线程的高性能3U VPX刀片式计算机.产品提供了多个高速PCIe总线接口,其中3个x4 PCIe 3.0接口,1个x4 PCIe 2.0接口.x4 ...

  10. 基于6U CPCIe的TMS320C6678+KU060的信号处理板卡

    一.产品概述 基于6U CPCIe的C6678+KU060的信号处理板卡是新一代FPGA的高性能处理板卡.板卡采用一片TI DSP TMS320C6678和一片Xilinx公司 XCKU060-2FF ...