除了速卖通还有什么网站做外贸南京网络营销服务
目录
1:mysql默认InnoDB
innodb存储结构
数据页内的结构是怎样的:类型划分
页三大部分
从数据页的角度看B+树是如何进行查询的
2: InnoDB 与myisam 部分区别
2.1 :存储结构的区别:
2.2 :对事物支持
2.2 :锁区别
1:mysql默认InnoDB
innodb存储结构
- 区: 比页大一级的存储结构,在InnoDB存储引擎中,一个区会分配64个连续的页。
- 页:默认大小是16KB
- 段:由一个或多个区组成,区在文件系统是一个连续分配的空间,在InnoDB是连续的64个页,不过在段中不哟啊求区与区之间是相邻的。段是数据库中的分配单位,不同类型的数据库对象以不同的段形式存在。当我们创建数据表,索引的时候,就会相应的创建对应的段。
- 表:是一个逻辑容器,表空间存储的对象是段,在一个表空间中可以有一个或多个段,但是一个段只能属于一个表空间。
- 数据库:由一个或多个表空间组成。
⻚Mysql的基本存储结构是⻚(记录都存在⻚⾥边):
数据页内的结构是怎样的:类型划分
1. 数据页
2. 系统页
3. Undo页
4. 事务数据页
页结构(总计16KB)
1. 文件头 38字节, 描述页的信息
2. 页头 56字节,页的状态信息
3. 最大最小记录 26字节,是两个虚拟的行记录
4. 用户记录 不确定, 存储行记录内容
5. 空闲空间 不确定, 页中还没有被使用的空间
6. 页目录 不确定, 存储用户记录的相对位置
7. 文件尾 8字节, 校验页是否完整。
页三大部分
1. 文件通用部分。文件头和文件尾
2. 记录部分。最小,最大记录,用户记录。
3. 索引部分。页目录, 记录索引的作用。* 将所有的记录分成几个组,包括最小记录和最大记录,但不包括标记为“已删除的记录”* 第1组,最小记录的分组,只有一个记录。最后一组,最大记录的分组,有1~8条记录。其余的组的记录数量在4~8之间。* 在每个组中最后一条记录的头信息会存储该组一共有多少条记录,作为n_owned字段。* 页目录用来存储每组最后一条记录的地址偏移量,
从数据页的角度看B+树是如何进行查询的
1. B+树是如何进行记录检索的
如果通过 B+ 树的索引查询行记录,首先是从 B+ 树的根开始,逐层检索,直到找到叶子节点,也就是找到对应的数据页为止,将数据页加载到内存中,页目录中的槽(slot)采用二分查找的方式先找到一个粗略的记录分组,然后再在分组中通过链表遍历的方式查找记录。
2. 普通索引和唯一索引在拆线呢效率上有什么不同
唯一索引就是在普通索引上增加了约束性,也就是关键字唯一,找到了关键字就停止检索。而普通索引,可能会存在用户记录中的关键字相同的情况,根据页结构的原理,当我们读取一条记录的时候,不是单独将这条记录从磁盘中读出去,而是将这个记录所在的页加载到内存中进行读取。InnoDB 存储引擎的页大小为 16KB,在一个页中可能存储着上千个记录,因此在普通索引的字段上进行查找也就是在内存中多几次“判断下一条记录”的操作,对于 CPU 来说,这些操作所消耗的时间是可以忽略不计的。所以对一个索引字段进行检索,采用普通索引还是唯一索引在检索效率上基本上没有差别。
参考:https://github.com/AobingJava/JavaFamily
2: InnoDB 与myisam 部分区别
2.1 :存储结构的区别:
InnoDB:存储有2个文件:
1.frm文件 ---->用于存储表结构文件
2.idb文件 ---->用于索引和数据文件
MyIsam:存储有3个文件:
1.frm文件 ---->用于存储表结构文件
2.myi文件 ---->用于索引文件
3.myd文件 ---->用于数据文件
由于MyIsam数据和索引分开存储的,因此索引查找的时候,myisam叶子节点存储的是数据所在的地址,而不是数据;
Innodb 叶子节点存储的是整个数据行,所有字段数据
2.2 :对事物支持
InnoDB:acid
MyIsam:不支持事物
2.2 :锁区别
InnoDB:默认行级锁,当索引查找失败时,行级锁失效升级表级锁
MyIsam:默认表级锁