Scaling with PostgreSQL 9.6 and Postgres-XLjoins Postgres Conference China 2016 中国用户大会 Global Transaction Manager (GTM) • Handles necessary MVCC tasks • Transaction IDs • Snapshots • Manages cluster wide values • Timestamps • Sequences • GTM Postgres Conference China 2016 中国用户大会 Multiversion Concurrency Control (MVCC) Postgres Conference China 2016 中国用户大会 MVCC Readers do not block writers Writers do not block readers Transaction contain a list of running XIDs July 12th, 2012 Postgres-XC 50 Postgres Conference China 2016 中国用户大会 MVCC – Regular PostgreSQL Example: T1 Begin... INSERT… T2 Begin; INSERT...; Commit; T30 码力 | 87 页 | 1.16 MB | 1 年前3
TiDB 与 TiFlash扩展——向真 HTAP 平台前进 韦万replication is asynchronous ● Read operation guarantees strong consistency ● Raft Learner read protocol + MVCC do the trick ○ Check readIndex on read and wait for necessary log ○ Read according to Timestamp LSM-Tree like design) In memory, rowbased (raft, transaction, cache) Versioned rows (MVCC) On disk, columnar (MVCC, AP performance) } } TiFlash is beyond columnar format ● An HTAP database needs like distributed join. MPP Support Performance ● Underlying Storage Engine supports Multi-Raft + MVCC ● Still comparable performance against Parquet ● Benchmark against Apache Spark 2.3 on Parquet0 码力 | 45 页 | 2.75 MB | 6 月前3
PingCAP TiDB&TiKV Introduction OLTPSpanner / F1 - The First NewSQL ● 全球级别分布式 / 跨数据中心复制 ○ Paxos ● ACID 事务支持 ○ 两阶段提交 ● 无锁快照读 / 无锁只读事务 ○ MVCC ● External Consistency ○ TrueTime API ● SQL 支持 ● the Next BigTable Powered By Jeff Dean 我们在做什么 Spanner 实现 ● 基于 Raft 多副本一致性算法 ○ 使用Multi Raft支持Dynamic Scale ● 支持类 Percolator 分布式事务 ● 提供 MVCC 支持 ○ RocksDB RocksDB Raft KV MVCC Transaction API RPC Store4 Raft groups RPC RPC Client Store1 TiKV Node1 Region group for region 3 中间件 [0- 10] [10- 20] [20- 30] [30- 40] SQL Layer Transaction API MVCC NewKV NewSQL - 数据库无限水平扩展的完美解决方案 DB Sharding NewSQL | Ti Project 大数据时代,当单机数据 库容量及处理能力达到瓶 颈时,由于没有完美的分0 码力 | 21 页 | 613.54 KB | 6 月前3
CurveFS rename 接口实现方案从以上的分析来看,chubaofs 的方案是可行的,参照其实现就行 方案二:事务方案 前言(关于 MVCC): MVCC ( ) ,即多版本并发控制,主要解决的是并发读写时的冲突问题,利用该机制在读写时候可以去除锁机制 Multi-version Concurrency Controller (备注:我认为利用 MVCC 可以保证事务 ACID 中的 C(一致性) 和 I(隔离性)) 方案主要借鉴 leveldb 与 etcd(boltdb) 中事务的实现(主要利用 mvcc),方案设计如下:© XXX Page 7 of 15 整体思路如下: 在 MDS 所有 copyset 中增加一个 txid 字段,保存当前 copyset 已成功的事务 id(该事务 id 顺序递增,事务每成功一次则加一) 每次 rename 开始时, (其实就是创建副本,不管是删除/创建/更改都是创建相应0 码力 | 15 页 | 555.93 KB | 6 月前3
TiDB v8.5 中文手册11.3.1 GC 超时 TiDB 的事务的实现采用了 MVCC(多版本并发控制)机制,当新写入的数据覆盖旧的数据时,旧的数据不会被 替换掉,而是与新写入的数据同时保留,并以时间戳来区分版本。TiDB 通过定期 GC 的机制来清理不再需要的 旧数据。 • TiDB v4.0 之前的版本: 默认情况下,TiDB 可以确保每个 MVCC 版本(一致性快照)保存 10 分钟。读取时间超过 10 分钟的事务, 过以下方式调大 MVCC 版本保留时间: • TiDB v5.0 之前的版本:调整 mysql.tidb 表中的 tikv_gc_life_time。 • TiDB v5.0 及之后的版本:调整系统变量tidb_gc_life_time。 需要注意的是,此变量的配置是立刻影响全局的,调大它会增加当前所有快照的生命时长,调小它也会立即 缩短所有快照的生命时长。过多的 MVCC 版本会影响 TiDB 的多版本并发控制 (MVCC) 以及 PD 默认的 compaction 间隔是 1 小时,TiCDC 占用的 PD 存储空间与 1 小时内元数据的版本数量成正比。在 v4.0.5、v4.0.6、 v4.0.7 三个版本中 TiCDC 存在元数据写入频繁的问题,如果 1 小时内有 1000 张表创建或调度,就会用尽 etcd 的 存储空间,出现 etcdserver: mvcc: database0 码力 | 5095 页 | 104.54 MB | 10 月前3
TiDB v5.2 中文手册后面的请求的等 待时间都会增加。 281 • Process_keys:表示 Coprocessor 处理的 key 的数量。相比 total_keys,processed_keys 不包含 MVCC 的旧版本。 如果 processed_keys 和 total_keys 相差很大,说明旧版本比较多。 • Cop_proc_avg:cop-task 的平均执行时间。 • Cop_proc_p90:cop-task total_keys:Coprocessor 扫过的 key 的数量。 • processed_keys:Coprocessor 处理的 key 的数量。与 total_keys 相比,processed_keys 不包含 MVCC 的旧版本。 如果 processed_keys 和 total_keys 相差很大,说明旧版本比较多。 • num_cop_tasks:该语句发送的 Coprocessor 请求的数量。 • key 的最大数量 • AVG_PROCESSED_KEYS:Coprocessor 处理的 key 的平均数量。相比 avg_total_keys,avg_processed_keys 不 包含 MVCC 的旧版本。如果 avg_total_keys 和 avg_processed_keys 相差很大,说明旧版本比较多 • MAX_PROCESSED_KEYS:Coprocessor 处理的 key0 码力 | 2259 页 | 48.16 MB | 1 年前3
TiDB v5.1 中文手册长的时候,后面的请求的等 待时间都会增加。 • Process_keys:表示 Coprocessor 处理的 key 的数量。相比 total_keys,processed_keys 不包含 MVCC 的旧版本。 如果 processed_keys 和 total_keys 相差很大,说明旧版本比较多。 • Cop_proc_avg:cop-task 的平均执行时间。 • Cop_proc_p90:cop-task total_keys:Coprocessor 扫过的 key 的数量。 • processed_keys:Coprocessor 处理的 key 的数量。与 total_keys 相比,processed_keys 不包含 MVCC 的旧版本。 如果 processed_keys 和 total_keys 相差很大,说明旧版本比较多。 • num_cop_tasks:该语句发送的 Coprocessor 请求的数量。 • key 的最大数量 • AVG_PROCESSED_KEYS:Coprocessor 处理的 key 的平均数量。相比 avg_total_keys,avg_processed_keys 不 包含 MVCC 的旧版本。如果 avg_total_keys 和 avg_processed_keys 相差很大,说明旧版本比较多 • MAX_PROCESSED_KEYS:Coprocessor 处理的 key0 码力 | 2189 页 | 47.96 MB | 1 年前3
Greenplum分布式事务和两阶段提交协议• PG采用的是MVCC,更新操作不是in-place update,而是重新创建tuple, 可见性判断 • Robert Haas 2018, “DO or UNDO - there is no VACUUM”: zheap, in-place update PostgreSQL和Greenplum采用的策略 思考: 1. MySQL同样采用MVCC,事务恢复的时候为什么需要undo log:分布式事务提交日志 • 用于判断分布式事务是否提交,作用和PG 的commit log类似,基于simple LRU实现 • 分布式死锁检测 • 本地事务的管理:创建、提交、状态迁移 等 • 加锁和MVCC • 本地事务的死锁检测 • xlog、commit log(CLOG) • 对PREPARE、COMMIT/ABORT PREPARED语句的处理 Greenplum在PG的基础上实现0 码力 | 42 页 | 2.12 MB | 1 年前3
TiDB v5.3 中文手册修复因统计线程监控数据导致的内存泄漏 #11195 – 修复在某些平台获取 cgroup 信息导致 panic 的问题 #10980 – 修复 Compaction Filter GC 无法清除 MVCC Deletion 版本导致 scan 性能下降的问题 #11248 • PD 39 – 修复因超过副本配置数量而导致错误删除带有数据且处于 pending 状态的副本的问题 #4045 – 长的时候,后面的请求的等 待时间都会增加。 • Process_keys:表示 Coprocessor 处理的 key 的数量。相比 total_keys,processed_keys 不包含 MVCC 的旧版本。 如果 processed_keys 和 total_keys 相差很大,说明旧版本比较多。 • Cop_proc_avg:cop-task 的平均执行时间。 • Cop_proc_p90:cop-task total_keys:Coprocessor 扫过的 key 的数量。 • processed_keys:Coprocessor 处理的 key 的数量。与 total_keys 相比,processed_keys 不包含 MVCC 的旧版本。 如果 processed_keys 和 total_keys 相差很大,说明旧版本比较多。 • num_cop_tasks:该语句发送的 Coprocessor 请求的数量。 •0 码力 | 2374 页 | 49.52 MB | 1 年前3
TiDB中文技术文档使用percolator事务模型,当事务启动时会获取全局读时间戳,事务提交时也会获取全局提交时间戳,并以 此确定事务的执行顺序,如果想了解 TiDB 事务模型的实现可以详细阅读以下两篇文章:TiKV 的 MVCC(Multi- Version Concurrency Control)机制,Percolator 和 TiDB 事务算法。 可以通过以下命令设置 session 或者 global 的事务的隔离级别: 所在机器的本地时间相差较大,需要以 PD 的时间为准。 当读取历史版本操作结束后,可以结束当前 Session 或者是通过 Set 语句将 tidb_snapshot 变量的值设为 ”“,即可读取最新版本的数据。 TiDB 使用 MVCC 管理版本,当更新/删除数据时,不会做真正的数据删除,只会添加一个新版本数据,所以可以保 留历史数据。历史数据不会全部保留,超过一定时间的历史数据会被彻底删除,以减小空间占用以及避免历史版本过 多引入的性能开销。 +------+ 9. 3 rows in set (0.00 sec) 历史数据回溯 - 192 - 本文档使用 书栈(BookStack.CN) 构建 垃圾回收 (GC) TiDB 采用 MVCC 的方式来进行并发控制。当对数据进行更新或者删除时,原有的数据不会被立刻删除,而是会被保 留一段时间,并且在这段时间内这些旧数据仍然可以被读取。这使得写入操作和读取操作不必互斥,并使读取历史数 据成为可能。0 码力 | 444 页 | 4.89 MB | 6 月前3
共 51 条
- 1
- 2
- 3
- 4
- 5
- 6













