摘要:
8.1 单表访问 全表扫描 使用索引查询 针对主键或唯一二级索引等值查询 针对普通二级索引等值查询 针对索引列范围查询(in子句 也可以划分为范围查询) 扫描整个索引列 即使访问通过索引列查询数据,也不一定会使用索引,当MySQL优化器判断查询二级索引+回表的代价比全表扫描小的时候才会使用索引,如果 阅读全文
摘要:
二级索引 以 B+树 形式保存在表空间(表名.ibd 文件),InnoDB为不同的页面设置的了不同的类型。这些类型记录在每个页面头部的 FIL_PAGE_TYPE位(两字节) 以 页 为单位分配和存储数据,在 B+树 的每一层节点间形成的双向链表间的 物理位置 可能会很远,大量的 随机I/O 会降低 阅读全文
摘要:
InnoDB、MyISAM存储引擎最终数据都会存储到文件系统中的某个目录,这个目录就是 数据目录 (和MySQL安装目录不一定在一起)。 # 查找数据目录地址SHOW VARIABLES LIKE 'datadir'; 每次创建数据库都会在 数据目录 创建一个和数据库名相同的子目录(文件夹),Inn 阅读全文
摘要:
5.1 关于索引的结论: 每个索引对应一颗 B+树(一种多叉树,一般最大四层,每个内节点的分叉大约1200左右),用户记录存储在 叶子节点 ,目录项记录 (每个用户记录的页的最小项称为目录项)存储在 内节点(非叶子节点) InnoDB引擎 自动将数据以为主键为 聚集索引 建立 B+树 索引结构,也就 阅读全文
摘要:
在MySQL中索引的数据结构都采用B+树结构,在InnoDB中则是根据主键作为聚集索引将数据直接存储为B+树结构(索引即数据),MyISAM中则是将数据和索引分开存储。 B+树是一颗多叉树,可将降低访问磁盘的次数,B+树数据存放在叶子节点并且通过双向链表关联,实现了数据库的范围查询 B树是一个多叉树 阅读全文
摘要:
InnoDB表存储引擎以16KB(可以重新编译设置默认页大小为2的整数倍)为单位将数据划分为若干页,作为磁盘和内存交换数据的基本单位。 InnoDB引擎设计了4种行格式Compact、Redundant、Dynamic、Compressed;我们可以在创建或者修改表的时候通过 ROW_FORMAT 阅读全文
摘要:
启动项是mysql服务启动时传递过去的一些参数(可以通过命令行也可以通过配置文件),系统变量是影响服务器运行行为的变量 1.命令行指定配置项 只在首次启动生效 长参数使用 ”--下划线分割单词“ 的形式 短参数使用“-字母”的形式,且参数区分大小写 2.配置文件指定配置项 Linux环境下,按照下列 阅读全文
摘要:
MySQL后台服务器进程默认名称mysqld,客户端名称mysql,mysqld_safe是一个启动脚本,间接调用mysqld还会启用监控进程产出日志。systemctl start mysqld.service 会调用mysqld_safe 连接管理、查询缓存、语法解析、查询优化这些逻辑层面的划分 阅读全文