自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 Fast Serializable Multi-Version Concurrency Control for Main-Memory Database Systems

之前也写过Hekaton的并发控制,主要是乐观的MVCC和验证来实现串行化的隔离级别。但是这种有一个缺点,对于OLAP场景来说,读取本来就占用了大量的开销,如果事务提交之前验证阶段再次读一遍,开销就太大了。本文主要的贡献就是如何减少OLAP的场景中,验证工作的负载。T5将sally的一块钱给了Henry,可以看到T5的undo buffer里面的值。修改的时候,直接将Tuple复制到undo-buffer中,然后in-place修改原来的Tuple,然后给undo buffer里面的。

2024-12-10 16:55:18 854

原创 High-Performance Concurrency Control Mechanisms for Main-Memory Databases

这个意思是,前一个事务还没有提交,后一个事务就读取了前一个事务修改的数据。如果前一个事务Abort了,后一个事务提交了,就会导致后一个事务读取到了脏数据。,这是一个无锁的hash table,图中可以看出bucket J连接了四条数据,John的三个版本以及Jane的一个版本。也可以存储在header的位置,存储在Begin位置意味着此条记录还没有被提交,不可以被其它事务读取,存储在End位置意味着此条正在被修改,阻止其它事务修改。本文实现了不阻塞的悲观锁,和乐观模式一样,用依赖来实现。

2024-12-10 16:54:27 1167

原创 H-Store and VoltDB

由于H-Store内部有重启事务的机制,所以一个事务可能被分配多个事务ID,当被分配一个新的事务ID之后,需要给前一个事务ID写一个失效的日志记录。之后所有的事务做的修改不会覆盖发生checkpoint时那一刻的数据,一旦所有分区确认启动checkpoint之后,H-Store提交检查点事务。在H-Store中,当一个事务访问一个没有上锁的分区时,那么事务就会rollback,释放事务获得的锁,然后当事务获得所需要的所有分区锁后再次执行事务。由于事务日志只记录提交的事务的日志,所以不需要回滚。

2024-12-10 16:53:42 451

原创 Hekaton: SQL Server’s Memory-Optimized OLTP Engine

假设事务Tx2的事务开始时间是100,它不仅会读取事务Tx1修改的记录,还会将记录<Greg, Beijing>更新为<Greg, Porto>,那么在事务Tx2执行更新操作的时候,发现记录<Greg, Beijing>的EndTs中记录的是TransactionId,而Hekaton会乐观的认为事务Tx1会coomit成功,所以Hekaton会立即abort事务Tx2。举个例子,事务tx1tx2,tx3串行执行,宏观上可以认为每个事务的读和写是同时发生的,这样每个事务就成为了一个个点,一串点就成了线。

2024-12-10 16:53:03 992

原创 Main Memory Database Systems: An Overview

数据库恢复需要将磁盘中的数据复制到内存中。这两个过程都需要加速:磁盘大Block、按需加载(而不是全部加载,其它部分后台异步加载)、磁盘阵列(并行读)。由于现在内存价格变得越来越便宜,可以考虑将数据全部放到内存中成为内存数据库(Main Memory Database System, MMDB)。和传统的磁盘数据库相比(Disk Resident Database System,DRDB),有以下一些不同之处。而对于MMDB,处理成本更加重要。相比于DRDB关注磁盘IO,对于MMDB关注CPU处理成本。

2024-12-10 16:51:42 913

原创 Hyper: A Hybrid OLTP&OLAP Main Memory Database System Based on Virtual Memory Snapshots

Redo-Log内容基本上和H-Store的command log一致,记录事务ID,存储过程,存储过程参数,,事务成功之后才写Redo-log。多线程模式,单分区事务并行写,跨分区事务串行写。如果没有Undo-log,那么生成快照是,只能在两个事务执行的中间生成快照,也就是必须在事务执行结束后才能为OLAP查询生成快照。此时快照上可能有未提交事务的数据,此时Hyper只需要将undo-log回滚一遍就好了,并且由于COW,可以很清楚的知道旧快照和最近版本之间的Undo-Log的范围。

2024-12-10 16:50:17 746

原创 加一

语言:Python3思路:首先for循环将数组变为字符串,然后转为int类型,加一之后转为字符串,转为数组。代码:class   Solution:    def   plusOne(self, digits):        digits = [str(i) for i in digits]        digits = str(int(''.join(digits))+1)        n...

2018-06-13 22:05:04 174

原创 移动零

  移动零给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。Python31class Solution:2    def moveZeroes(self, nums):3        """4       :typ...

2018-06-12 21:12:32 289

原创 LeedCode题目

思路:最简单的办法就是for循环,找到没有元素出现的个数,然后只要出现个数大于等于2,就return True,否则 return False.语言:Python3第一个阶段:for    i    in    range(len(nums)):        if nums.count(i)&gt;=2:                return True        else:      ...

2018-06-11 10:54:47 220

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除