第3章 字符集和比较规则

3.1 字符集和比较规则

字符集

编码

3.1.2 比较规则

3.1.3 一些重要的字符集

  • ASCII
  • ISO
  • GB2312
  • GBK
  • UTF-8 变长编码方式

3.2 MySql中支持的字符集和比较规则

3.3 字符集和比较规则的应用

# 查看比较规则
show collation ;  
# 字符集 查看
show character set ;  
 
 
# 服务器级别 字符集 和 比较规则  
show variables like 'character_set_server';  
show variables like 'collation_server';  
  
# 数据库级别  
CREATE DATABASE 数据库名  
DEFAULT CHARACTER SET 宇符集名称  
DEFAULT COLLATE 比较规则名称;
 
# 表级别
CREATE TABLE 表名  列信息  
DEFAULT CHARACTER SET 宇符集名称  
COLLATE 比校规则名;
 
# 列级别
create table table_name(column_name varchar [CHARACTER SET 字符集名称] [COLLATE 比较规则名称],)

第4章 从一条记录说起—innodb记录存储结构

存储引擎

4.2 Innodb 页简介

show variables like 'innodb_page_size'; 磁盘和内存交互的基本单位 大小 16kb 系统变量 innodb_page_size

4.3 Innodb行格式

4种行格式
COMPACT、 REDUNDANT、 DYNAMIC 和 COMPRESSED.

4.3.1 指定行格式的语法

CREATE TABLE 表名 (列的信息) ROW_FORMAT 行格式名称;
ALTRE TABEL tabel_name ROW_FORMAT= 行格式名称;

4.3.2 COMPACT 行格式

记录的额外信息记录的真实数据
变长字段列表null值列表记录头信息列1的值列2的值……列n的值

一条完整的记录其实可以被分为记录的额外信息和记录的真实数据两大部分

  1. 记录的额外信息
    1. 变长字段长度列表
    2. null值列表
    3. 记录头信息 固定5字节(40位) 用于描述记录的一些属性,
  2. 记录的真实信息
    1. row_id 行id,唯一标识一条记录
    2. trx_id 事务id
    3. roll_pointer 回滚指针
  3. char(M) 列的存储格式

记录头信息

名称大小描述
预留位1预留位
预留位1预留位
deleted_flag1标记该记录是否被删除
min_rec_flag1B+ 树的每层非叶子节点 中最小的目 录项记录都会添加该标记
n_owned4一个页面中的记录会被分成若干个组,每个组中有一个记录是 ” 带头大 哥其余的记录都是”小弟”带头大哥”记录的 n_owncd 值代表该 组中所有的记录条数”小弟”记录的 n_owned 值都为 0
heap_no13表示当前记录在页面堆中的相对位置
record_type3表示当前记录的类型, 。 0标识普通记录 . 1 标识 B+ 树非叶子节点的目 录项记录。2 表示 lnfimum 记录 . 3 表示 Supremum 记录
next_record16表示下一条记录的相对位置

4.3.3 REDUNDANT行格式

4.3.4 溢出列

4.3.5 DYNAMIC 行格式和 COMPRESSED 行格式

第5章 盛放记录的大盒子-InnoDB数据页结构

5.1 不同类型的页简介

index 页 (数据页)

5.2 数据页结构快览

名称中文名占用空间大小简单描述
File Header文件头部38字节页的一些通用信息
Page Header页面头部56字节数据页专有的一些信息
Infimum+Supremum页面中的最小记录和最大记录26字节两个虚拟的记录
User Records用户记录不确定用户存储的记录内容
Free Space空闲空间不确定页中尚未使用的空间
Page Directory页目录不确定页中某些记录的相对位置
File Trailer文件尾部8字节检验页

5.3 记录在页中的存储

我们自己存储的记录会按照指定的行格式存储到User Records部分。

5.3.1 记录头信息的秘密

5.4 Page Directory (页目录)

5.5 Page Header (页面头部)

表示数据页专有的 一些信息 , 占固定 的 56 字节 .

5.6 File Header (文件头部)

页的通用信息,占用38字节。

5.7 File Trailer (文件尾部)

用于检验页是否完整,占用固定8字节。

第6章 快速查询的秘籍-B+树索引

第7章 B+树索引的使用

CREATE TABLE single_table (
	id INT NOT NULL AUTO_INCREMENT , 
	key1 VARCHAR(lOO) , 
	key2 INT , 
	key3 VARCHAR(100) , 
	key_partl VARCHAR(100) , 
	key_part2 VARCHAR(10Q) , 
	key_part3 VARCHAR(100) , 
	common_field VλRCHAR(lOO) , 
	PRIMARY KEY (id) , 
	KEY idx_key1 (key1) ,
	UNlQUE KEY uk_key2 (key2) ,
	KEY idx_key3 (key3),
	KEY idx_key_part (key_part1. key_part2 , key_part3)
)Engine=InnoDB CHARSET=utf8;

7.2 索引的代价