初识分布式系统
分布式系统的构建与挑战
回表
什么是回表?何时回表?
索引底层的底层实现
索引底层的底层数据结构
索引
关于mysql的索引
InnoDB数据页结构
InnoDB页介绍一下?
InnoDB 是一个将表中的数据存储到磁盘上的存储引擎,当我们想从表中获取某些记录时,InnoDB 采取的方式是:将数据划分为若干个页,以页作为磁盘和内存之间交互的基本单位,InnoDB中页的大小一般为 16 KB。也就是在一般情况下,一次最少从磁盘中读取16KB的内容到内存中,一次最少把内存中的16KB 内容刷新到磁盘中。
InnoDB 为了不同的目的而设计了许多种不同类型的页 ,比如存放表空间头部信息的页,存放 Insert Buffer 信息的页,存放 INODE 信息的页,存放 undo 日志信息的页。存放我们表中记录的那种类型的被称为索引( INDEX )页。
InnoDB数据页的大小为什么是16KB?
在操作系统的文件管理系统中进行一次IO读写,默认读取的大小为4kb(一页)。
又因为局部性原理,操作系统会将命中的页周围的三块页一同加载进Innodb的缓存池中,因此Innnodb数据页的大小为16kb。
数据页结构?数据页代表的这块 16KB 大小的存储空间可以被划分为多个部分,不同部分有不同的功能,各个部分如图所示:
数据页中查找指定主键值的 ...
InnoDB记录结构
InnoDB记录结构
InnoDB行格式 ?
我们平时是以记录为单位来向表中插入数据的,这些记录在磁盘上的存放方式也被称为 行格式 或者 记录格式 。
设计InnoDB 存储引擎的作者到现在为止设计了4种不同类型的 行格式 ,分别是 Compact 、Redundant 、Dynamic 和 Compressed 行格式。
COMPACT行格式 ?一条完整的记录其实可以被分为 记录的额外信息 和 记录的真实数据 两大部分。记录的额外信息这部分信息是服务器为了描述这条记录而不得不额外添加的一些信息,这些额外信息分为3类,分别是 变长字段长度列表 、 NULL值列表 和 记录头信息:
变长字段长度列表:将一些变长的数据类型,比如 VARCHAR(M),VARBINARY(M),占用的字节数存起来,这些变长字段占的存储空间分为两部分:a. 真正的数据内容b. 占用的字节数
NULL值列表:Compact 行格式把值为 NULL 的列统一管理起来,存储到 NULL 值列表中。
记录头信息:用于描述记录的记录头信息 ,它是由固定的 5 个字节组成。记录的真实数据对于 record_form ...
Mysql基础2
关于Mysql基础的一些问题2
Mysql基础1
关于Mysql基础的一些问题1
压缩工具类
一个用于文件的压缩工具类
Redis为什么这么快
Redis为什么这么快?前言在日常开发中,为了保证数据的一致性,我们一般都选择关系型数据库来存储数据,如 MySQL,Oracle 等,因为关系型数据库有着事务的特性。然而在并发量比较大的业务场景,关系型数据库却又往往会成为系统瓶颈,无法完全满足我们的需求,所以就需要使用到缓存,而非关系型数据库,即 NoSQL 数据库往往又会成为最佳选择。
NoSQL 数据库最常见的解释是 non-relational,也有人解释为 Not Only SQL。非关系型数据库不保证事务,也就是不具备事务 ACID 特性,这也是非关系型数据库和关系型数据库最大的区别,而我们即将介绍的 Redis 就属于 NoSQL 数据库的一种。
什么是Redis?Redis 全称是:REmote DIctionary Service,即远程字典服务。Redis 是一个开源的(遵守 BSD 协议)、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库。Redis 具有以下特性:
支持丰富的数据类型:字符串(strings),散列(hashes),列表(lists),集合(sets),有序集合(sorted ...