Wenguang Liu's page

Studying, Growing, Developing!
本博客将主要介绍数据库和分布式存储的一些知识,包括数据库的索引,语句执行,数据的存储方式等知识。 分布式系统将基于Ceph介绍分布式文件系统,对象存储,分布式块存储中的一些概念和知识。 介绍分布式哈希table,分布式中协议的概念。 希望更多的你们可以提出宝贵意见。

(db)数据库语句执行(3)

优化查询计划的代数定律

本文主要介绍在查询中能够用于查询计划优化的代数定律,主要包括将介绍基本定律;选择条件的定律;投影的定律;有关连接与积的定律;有关消除重复的定律;有关分组与聚集的定律。 交换律与结合律 关系代数的多个运算同时满足交换律与结合律。 S×R = R×S;(S×R)×T = S×(R×T); S JOIN R = R JOIN S; (S JOIN R) JOIN T = R JOIN ...

(db)数据库语句执行(2)

语法分析与预处理

本文将介绍数据库查询编译器中的语法分析和预处理,该步骤是查询的第一个步骤,即将语句进行语法分析得到语法分析树,并进行相关的预处理。 语法分析 语法分析的工作就是接收类似SQL的语言语句文本,并将之转换成语法分析树的数据结构。 语法分析树基本概念 语法分析树的节点可以分成两种: 1)原子(叶)节点 语法成本(如关键字),关系或属性的名字,常数,括号,运算符,以及其他模式成分。 2)语...

(db)数据库语句执行(1)

物理计划执行

数据库的语句编译主要步骤: 词法分析/语法分析:建立查询的分析树; 查询计划重写:分析树被转化为初始查询计划(查询的代数表达式),然后将查询计划转化为一个预期执行时间较小的等价计划; 物理计划生成与执行:将逻辑查询计划的每一个操作符选择实现算法并选择这些操作符的执行顺序,逻辑计划被转化为物理查询计划;然后将这些计划应用到数据库的数据上,得到并返回结果; 本文先将简单介绍物理...

(mysql)InnoDBL在线DDL(3)

在线DDL讨论

1. 在线DDL对磁盘的要求 1)临时日志文件 在执行DDL时候,并发的DML会被阻塞,因此需要日志文件保存这些请求。可调整参数:innodb_sort_buffer_size,innodb_online_alter_log_max_size。如果临时文件超过上限,那么DDL执行将会失败,没有提交的DML也会回滚。 2)临时排序文件 DDL执行如果需要重建表,那么会将临时的排序文件...

(mysql)InnoDBL在线DDL(2)

在线操作Online DDL Operation

本文将介绍Inno存储引擎在线DDL的相关操作在执行时的相关行为和状态,主要包括索引(Index)操作,主键(Primary Key)操作,列(Column)操作,外键(Foreign Key)操作,表(Table)操作。 在介绍这些操作之前,先介绍在执行DDL时相关概念。 1. 基本概念 1)INPLACE/COPY算法 在执行DDL时复制表数据,INPLACE表示不会复制表数据,...

(mysql)InnoDBL在线DDL(1)

基本介绍

本文将简单介绍MySQL InnoDB在5.6后的新特性-Online DDL,在后续文章将会有更详细的介绍。 1. 简单介绍 ONLine DDL特性支持了IN-PLACE的表修改和并发DML,有以下好处: 提高mysql可用性,在DDL时候,DML没有被阻塞; 提供可选项,通过在DDL上使用LOCK语句允许在性能和并发上取得平衡; 相对于表COPY方式,更少的磁盘使用率和...

(db)数据库索引结构

Database Index

本文主要介绍数据库中常用的索引结构。 索引分类 1. 顺序文件 顺序文件是对关系中的元组按主键进行排序而生成的文件(包含数据)。关系中的元组按照这个次序分布在多个数据块中。 2. 稠密索引 在记录有序数据块的基础上,将全部键(稠密)单独存放到单独的存储块:块中只存放记录的键以及指向记录本身的指针。 3. 稀疏索引 稀疏索引只为数据文件的每个存储块设一个键-指针对,比稠密索引节省了更多的存储...

(DHT)分布式哈希表(Distributed Hash Table)

算法视角(In Algorithm Perspective)

目录 基础知识 环的原子管理算法 2.1 环管理中存在的问题 2.2 环管理并发控制算法 2.2.1 环管理锁算法 2.2.2 环原子管理的算法 路由算法 3.1 深度递归算法 3.2 广度迭代算法 3.3 传递算法 3.4 贪心算法 组通信算法 4.1 广播算法 4.2 批量操作算法 4.3 其他 副本管理算法 5.1 对称备份策略 5.1.1 节点管理算法 5...