
数据库
文章平均质量分 78
KD_
这个作者很懒,什么都没留下…
展开
-
online schema change and create index
数据库online schema change原创 2022-08-05 17:05:42 · 647 阅读 · 1 评论 -
Log、Mini Transaction与ARIES Recovery
文章目录逻辑日志与物理日志redo log为什么使用物理日志?undo log为什么使用逻辑日志?Mini TransactionARIES Recovery术语ARIES主要思想Consistent Checkpoint 的RecoveryFuzzy Checkpoint的Recovery逻辑日志与物理日志redo log为什么使用物理日志?Logical log 只能作用于 Operation Consistency 的数据上。如果磁盘上的数据只反映了一些操作的部分更新,它就不是 Operat原创 2022-05-03 16:19:05 · 866 阅读 · 0 评论 -
OLAP数据库:hash、sort、shuffle、agg、join的实现原理
文章目录hash内存hashexternal hashsort内存sortexternal sortshufflehash shufflesort shuffleaggregatehash aggregatesort aggregate分布式aggregatejoinnested loop joinhash joinsort merge join分布式join总结hashhash算法是指对于key计算出hash值,基于hash值识别相同key,从而进行归类、聚合等操作。内存hash类似于JAVA H原创 2022-04-17 22:52:17 · 1689 阅读 · 0 评论 -
分布式/并行SQL的执行调度
SQL语句的转换过程SQL语句 -》 抽象语法树 -》 逻辑算子树 -》 物理算子树(物理执行计划)物理执行计划的stage划分为什么要进行stage划分?对于分布式/并行SQL的执行,会将物理执行计划划分为若干stage,一个stage会使用多个线程/计算节点并行的执行计算Task,每个计算任务的执行逻辑是相同的,但是基于不同的数据split。多个计算任务能够并行执行,必须要保证其之间是没有依赖的,即每个计算任务完全基于自己的数据split即可完成计算。我们知道stage的划分是按照数据是否需要原创 2022-02-19 16:24:02 · 1016 阅读 · 0 评论 -
数据库隔离级别 - SI和SSI
Snapshot IsolationSnapshot Isolation要求:当一个事务 T1 准备提交时获取一个 Commit-timestamp(commit_ts),大于所有已存在的 Commit-timemstap 和 Start-timestamp(start_ts)。First-committer-wins。一个事务T1能够提交成功当且仅当在[T1.start_ts, T2.commit_ts] 范围内不存在另一个事务T2,T2 和T1 修改了同一行,T1.start_ts < T原创 2022-02-15 10:42:29 · 1812 阅读 · 0 评论 -
LSM Compaction(STCS和Leveled)
参考:https://blog.youkuaiyun.com/zxpoiu/article/details/116190330https://kernelmaker.github.io/Btree_LSM_FTIhttps://zhuanlan.zhihu.com/p/141186118基础概念读放大(read amplification):一次读取操作需要访问磁盘的次数,主要由compaction策略引入。可以引入cache和bloom filter优化。写放大(write amplificati原创 2022-01-30 16:40:22 · 1505 阅读 · 0 评论 -
Raft协议论文及工程实现总结
文章目录Raft领导选举Timeout启动之后候选者行为跟随者行为领导选举结果领导选举限制日志复制(心跳)概述日志复制的特性领导者行为跟随者行为集群成员变化集群成员变化的问题解决方法:两阶段方法、共同一致共同一致解决方法的分析:本项目优化解决方法集群成员变更之后带来的问题:日志压缩(快照)生成快照安装快照线性一致性raft违反线性一致性保证raft的线性一致性github实现RaftRaft 通过选举一个高贵的领导人,然后给予他全部的管理复制日志的责任来实现一致性。领导人从客户端接收日志条目,把日志条目原创 2022-01-20 16:07:27 · 1159 阅读 · 0 评论 -
数据库存储过程
什么是存储过程存储过程是一些sql语句和控制语句组成的被封装起来的过程,它驻留在数据库中,可以被客户应用程序通过存储过程名字调用,也可以从另一个存储过程或触发器调用。它的参数可以被传递和返回,与应用程序中的函数过程类似,存储过程可以通过名字来调用,具有输入参数和输出参数。存储过程的优缺点优点(1)执行速度快——存储过程只在创建时进行编译,以后每次执行存储过程都不需要重新编译,而一般SQL语句没执行一次就需编译一次,所以使用存储过程可提高数据库的执行速度。(2)减少网络通信量——当对数据库进行复杂原创 2021-12-17 21:48:31 · 8114 阅读 · 0 评论 -
磁盘IO总结:顺序读写、随机读写、4K对齐
对于不同类型的磁盘,顺序读写均优于随机读写,且4K对齐读写效率更高。但是其中的原因却不尽相同。机械硬盘IO方式 :顺序读写 > 随机读写机械硬盘寻道时间无法忽略,顺序读写减少了磁盘寻道的时间。顺序读写在操作系统页缓存的作用(预读和回写)下,也会有更高的读写效率。IO单位 :64KB >= 4KB > 1KBIO单位越大,读写相同的数据,系统调用的次数就越少。读操作:在机械硬盘的时代,在读取数据少的时候,很可能寻道时间远超过传输时间,那么基本上就是读取次数固定,比如硬盘如果io原创 2021-11-25 00:34:42 · 11082 阅读 · 0 评论 -
Java 文件操作
Java 文件 IO 操作之 DirectIO文件 IO 操作的一些最佳实践PolarDB 数据库性能大赛 Java 选手分享原创 2021-09-14 14:30:45 · 106 阅读 · 0 评论 -
分布式事务外部一致性、隔离性和时间戳的理解
外部一致性之前一直不懂分布式事务中时间戳的作用,经过查找阅读资料之后,有了一点理解,在此记录。分布式事务中的时间戳的主要作用是保证分布式事务的“外部一致性”。外部一致性的理解可以参考:https://tyler-zx.blog.youkuaiyun.com/article/details/108915068对于一致性的理解有很多解释,在这里阐述一下我的理解:传统ACID的一致性:数据库从一个一致性的状态转移到另一个一致性的状态。这里的一致性表达的是数据库处于一种符合数据库约束,也符合用户预期的一种状态,其原创 2021-04-01 17:28:29 · 1514 阅读 · 0 评论 -
XZ-ordering:A Space-Filling Curve for Objects with Spatial Extension
Z-orderZ-Ordering in Point DatabasesZ曲线定义将数据空间分割成四个sub-quadrants。这将递归地重复,直到达到某个基本分辨率为止。固定的递归迭代次数称为分辨率g。然后我们停止并使用得到的g位序列(称为象限序列)作为点的排序键(按字典顺序排序)。本文中每个代表数据空间中的一个区域的象限序列被称为元素(element)。Z曲线查询假设一个具有指定窗口的窗口查询。数据空间被分解为四个象限。测试每个象限与查询窗口的交集。如果象限不与查询窗口相交,则不需要做原创 2021-03-24 16:57:28 · 1454 阅读 · 0 评论 -
SQL查询计划(Query Plan)处理模型(processing model)
https://www.iteblog.com/archives/9806.html原创 2021-03-23 21:40:29 · 1527 阅读 · 0 评论 -
《MySQL技术内幕:InnoDB存储引擎》读后问题总结
文章目录MySQL Innodb特性插入缓冲的使用条件中为什么辅助索引不能是唯一的?为什么需要两次写?Binlog 和 RedologBinlog为什么不能用来做crash-safe?Binlog和redolog的区别Binlog和redolog的写入一致性问题Binlog和redolog的两阶段写入中为什么要在prepare阶段就落盘呢?为什么Mysql默认隔离级别是RR?和binlog的格式有什么关系?数据和索引数据页中的Page Directory的作用?为什么说外键不加索引会导致死锁mysql主键为原创 2021-03-03 21:49:10 · 556 阅读 · 1 评论 -
阿里云PolarDB及其共享存储PolarFS技术实现分析
阿里云PolarDB及其共享存储PolarFS技术实现分析(上)阿里云PolarDB及其共享存储PolarFS技术实现分析(下)转载 2021-02-22 17:52:10 · 335 阅读 · 0 评论 -
数据库并发写入问题-丢失更新与写入偏差
MVCChttps://blog.youkuaiyun.com/qq_41775852/article/details/104853909数据库中的MVCC多版本并发控制(快照隔离)可以避免事务并发时的脏读、不可重复读以及幻读的问题,但是却无法避免丢失更新以及写入偏差的问题。丢失更新和写入偏差丢失更新:两个事务并发读取同一记录,并在此基础上修改记录,并将其写回数据库,第二次写入的结果会覆盖第一次写入的结果,导致数据库状态不一致。(丢失更新不仅出现在数据库中,在应用程序多线程并发修改变量、分布式系统多主复制和原创 2020-12-29 15:48:57 · 2372 阅读 · 1 评论 -
分布式系统多副本复制的问题与解决方案
文章目录单主复制、多主复制和无主复制介绍单主复制的问题与解决方案读己之写单调读一致前缀读(因果倒置)多主复制和无主复制并发写入与因果写入并发写入与因果写入因果关系倒置解决方案并发写入冲突解决方案多主复制和无主复制的问题和解决方案多主复制并发写入冲突多主复制因果写入倒置无主复制的并发写入冲突无主复制的因果写入倒置总结单主复制、多主复制和无主复制介绍https://vonng.gitbooks.io/ddia-cn/content/ch5.htmlhttps://zhuanlan.zhihu.com/p/原创 2020-12-28 20:44:42 · 2398 阅读 · 1 评论 -
数据库事务并发- 隔离性实现原理
数据库事务并发问题脏读(dirty read)A事务读取B事务尚未提交的更改数据,并在这个数据基础上操作。如果B事务回滚,那么A事务读到的数据根本不是合法的,称为脏读。在oracle中,由于有version控制,不会出现脏读。不可重复读(unrepeatable read)A事务读取了B事务已经提交的更改(或删除)数据。比如A事务第一次读取数据,然后B事务更改该数据并提交,A事务再...原创 2020-03-14 03:45:39 · 889 阅读 · 0 评论