
Database
文章平均质量分 88
Young.Chen
关于我的一切 https://chenjiayang.me/about
展开
-
重读 Amazon Dynamo 论文有感
本文内容不仅仅局限于 Dynamo什么是 DynamoDynamo 和 MySQL 的关系?数据分片数据分片的实现方式Redis 集群的数据分片Dynamo 的数据分片一致性哈希的改进数据复制Dynamo 的读写流程数据一致性和冲突解决Dynamo 集群成员状态监测总结参考资料什么是 Dynamo亚马逊在业务发展期间面临一些问题,主要受限于关系型数据库的...原创 2019-12-21 15:11:15 · 1490 阅读 · 0 评论 -
[深度] Seata TCC 分布式事务源码分析
Seata 是什么Seata 是阿里近期开源的分布式事务框架,地址:https://github.com/seata/seata。框架包括了集团的 TXC(云版本叫 GTS)和蚂蚁金服的 TCC 两种模式,短短数月 Github 上的 star 数已经接近一万,算是目前唯一有大厂背书的分布式事务解决方案。TXC 在 Seata 中又叫 AT 模式,意为补偿方法是框架自动生成的,对用户完全屏蔽,...原创 2019-05-21 16:04:32 · 1039 阅读 · 0 评论 -
MySQL InnoDB MVCC 机制的原理及实现
什么是 MVCCMVCC (Multiversion Concurrency Control) 中文全程叫多版本并发控制,是现代数据库(包括 MySQL、Oracle、PostgreSQL 等)引擎实现中常用的处理读写冲突的手段,目的在于提高数据库高并发场景下的吞吐性能。如此一来,不同事务并发过程中,SELECT 操作可以不加锁而是通过 MVCC 机制读取指定的版本历史记录,并通过一些手段保证...原创 2019-05-01 15:18:18 · 763 阅读 · 0 评论 -
MySQL InnoDB 中的 redo/undo log
写在前面讲到 InnoDB、MVCC 等概念时,我们时常听到 redo log 和 undo log 的名字,那么二者的作用是什么呢?其实二者并非事务操作独有,索引更新时也会记录 redo/undo log,甚至记录 undo log 时也会记录 redo log,而本文聚焦于事务方面的 redo/undo log。什么是 redo logMySQL 中使用了大量内存 Cache 区域,对数...原创 2019-05-01 15:12:50 · 849 阅读 · 0 评论 -
MySQL 索引机制背后的隐藏之道
索引的 “哲学思想”我们为什么需要索引?显而易见,使用索引可以加快我们检索数据的速度,生活中书籍的目录、图书馆里的各种书架编号、号码簿上的检索页等,都少不了索引的身影。回到计算机的世界,任何一种数据结构都不是凭空产生的,一定会有它的诞生背景和解决的问题。我们先举个最简单的例子,下图是一个有序递增的数组,里面包含十个元素,没有重复。如果我想要查找元素 24 ,该怎么做呢?第一想到的自然...原创 2019-03-23 17:47:59 · 397 阅读 · 0 评论 -
MySQL InnoDB 中的锁机制详解
写在前面数据库本质上是一种共享资源,因此在最大程度提供并发访问性能的同时,仍需要确保每个用户能以一致的方式读取和修改数据。锁机制(Locking)就是解决这类问题的最好武器。首先新建表 test,其中 id 为主键,name 为辅助索引,address 为唯一索引。CREATE TABLE `test` ( `id` int(11) NOT NULL AUTO_INCREMENT, ...原创 2019-03-10 18:19:18 · 287 阅读 · 0 评论 -
MySQL InnoDB 存储引擎简介
参考资料《MySQL 技术内幕 InnoDB 存储引擎》第二版 姜承尧著原创 2019-03-09 16:10:35 · 242 阅读 · 0 评论 -
你需要知道的,缓存架构的设计和常见问题
缓存架构的设计缓存层通常架设在 DB 和业务逻辑层之间,核心功能就是从DB生成一条缓存数据,可以在后续若干次查询请求过程中不再访问DB,请求在缓存层直接命中后返回,从而可以达到加快访问速度的作用,同时也能在流量暴增时充当保护层防止DB被打垮。缓存的引入虽然有优势,但也会带来一些问题,例如缓存穿透、缓存雪崩等,所以哪些场景适合使用缓存需要斟酌。读多写少的场景是很适合的,可以显著降低 DB 的压力...原创 2019-02-23 15:07:55 · 321 阅读 · 0 评论 -
小议 Redis 的主从复制功能
如何在分布式环境下保持不同实例间的数据一致性,是一个难度极大、经久不衰的话题。常见的 MySQL 中为了维持高可用,采用主从配置的方法,Redis 中也有类似的维持一主多从的方式提高 Redis 集群的高可用性的方案,而其中不可避免的则是如何保证主从实例间的数据一致性,复制(Replication)是其解决办法,但是复制是怎么开始的?怎么容错的?复制过程中新进的写操作如何处理等,都是需要仔细考虑的问原创 2018-01-07 21:01:50 · 608 阅读 · 0 评论 -
数据库事务 ACID 和 隔离级别
事务的四大特性 ACID原子性原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一样的概念,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。一致性一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。原创 2017-12-10 21:05:53 · 258 阅读 · 0 评论