Ch06-C++ 之 keyword
April 24, 2022
static_cast
,dynamic_cast
,const_cast
,reinterpret_cast
。
static_cast
,dynamic_cast
,const_cast
,reinterpret_cast
。
new
,delete
define
,typedef
,using
,inline
static
,const
,constexpr
,volatile
1.数据类型 # 基本类型 所占大小 (bit) 最小范围 最大范围 void 0 bool 8 char 8 -128 127 unsigned char 8 0 255 short (signed short) 16 -32768 32767 unsigned short 16 0 65535 int (signed int) 32 -2147483648 2147483647 unsigned (unsigned int) 32 0 4294967295 long (signed long) 32 -2147483648 2147483647 unsigned long 32 0 4294967295 float 32 -3.4×10^38 3.4*10^38 double 64 -1.7×10^308 1.7×10^308 long double 64 -1.7×10^308 1.7×10^308 long long 64 -9223372036854775808 9223372036854775807 2. ...
内存模型就是一种语言它独特的管理者一套程序的机制,每种语言都有自己的一套程序机制。
...我们习惯把 MySQL 复制中的角色叫做 Master/Slave,MySQL 8.0 后,术语和命令上都会统一到 Source/Replica。MySQL 采用 log shipping 的复制技术,在 source 节点上生成 binlog,通过 dump 线程把 binlog 推到 replica 节点上,replica 节点首先把 binlog 存储到 relay log 中,然后通过 MTS(Multi-Threaded Slave) 技术 replay 到 replica 节点上的表空间。
...1. 迭代模型/火山模型(Iterator Model) # 又称 Volcano Model 或者 Pipeline Model。该计算模型将关系代数中每一种操作抽象为一个 Operator,将整个 SQL 构建成一个 Operator 树,查询树自顶向下的调用 next() 接口,一般只返回一条数据 (tuple)。数据则自底向上的被拉取处理。这种处理方式也称为拉取执行模型 (Pull Based)。 2. 物化模型(Materialization Model) # 物化模型的处理方式是每个 operator 一次处理所有的输入,处理完之后将所有结果一次性输出。物化模型更适合 OLTP 负载,这些查询每次只访问小规模的数据,只需要少量的函数调用。 3. 向量化/批处理模型(Vectorized / Batch Model) # 向量化模型 和 火山模型 类似,每个 operator 需要实现一个 next() 函数,但是每次调用 next() 函数会返回一批的元组(tuples),而不是一个元组,所以向量化模型也可称为批处理模型。这种处理方式也称为推送执行模型 (Push Based)。 4. Pull Based VS Push Based # 比如上述图中的例子,pull based model 由 aggr 驱动,但是 push-based model 则由 scan 驱动。 4. 参考文献 # 三种常见的数据库查询引擎执行模型 SQL 查询优化原理与 Volcano Optimizer 介绍
基数 Cardinality,某列唯一键的数量,称为基数,即某列非重复值的数量。 选择性 Selectivity,某列基数与总行数的比值再乘以 100%,则称为某列选择性。可选择率的取值范围显然是 0~1,它的值越小,就表明可选择性越好。当可选择率为 1 时的可选择性是最差的。 Cost-Based Optimization 基于代价的优化器 Volcano Optimizer # The Volcano Optimizer Generator : Extensibility and Efficient Search Cascades Optimizer # The Cascades Framework for Query Optimization 参考文献 # 优化器技术论文学习 优化器论文列表 数据库内核杂谈(九):开源优化器 ORCA
Page # 索引页 组成 说明 File Header 表示页的一些通用信息,占固定的 38 字节。 Page Header 表示数据页专有的一些信息,占固定的 56 个字节。 Infimum + Supremum 两个虚拟的伪记录,分别表示页中的最小和最大记录,占固定的 26 个字节。 User Records 真实存储我们插入的记录的部分,大小不固定。 Free Space 页中尚未使用的部分,大小不确定。 Page Directory 页中的某些记录相对位置,也就是各个槽在页面中的地址偏移量,大小不固定,插入的记录越多,这个部分占用的空间越多。 File Trailer 用于检验页是否完整的部分,占用固定的 8 个字节。 Row # 格式 说明 compact redundant dynamic 与 compact 行格式挺像,但它不会在记录的真实数据处存储字段真实数据的前 768 个字节,而是把所有的字节都存储到其他页面中,只在记录的真实数据处存储其他页面的地址 compressed 会采用压缩算法对页面进行压缩,以节省空间 参考文献 # MySQL 之数据页结构 MySQL 之 InnoDB 表空间 MySQL 之 InnoDB 存储结构总结 附件 #