自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

duxingxia356的专栏

围绕数据库架构的博客记录

原创 全局索引

单机表索引: 本地分区索引(Local Partitioned Index):

2020-06-26 21:06:50 19 0

原创 mysql 8.0.19 行锁分析-1

lock_rec_lock_slow | | => *wait_for = lock_rec_other_has_conflicting | | => err = rec_lock.add_to_waitq(wait_for); | | => lock_create_w...

2020-05-15 17:46:22 34 0

原创 mysql数字字典相关(5.6、5.7)

目录 table_cache table_cache的使用背景 table_cache的存储结构 table_cache table_cache的使用背景 当我们的客户端程序提交 Query 给 MySQL 的时候,MySQL 需要对 Query 所涉及到的每一个表都取得一个表文件句柄...

2020-05-12 11:43:55 39 0

原创 innodb 行查找,有点老了

do_select():查询入口函数。 | sub_select():查询部分join的记录。循环调用ha_innobase::rnd_next()和evaluate_join_record()获取并处理该部分的每条记录。(sql\sql_select.cc:11705) | | evalua...

2020-03-26 10:20:06 47 0

转载 MySQL8.0新特性: 新的事务锁调度VATS简介

传统的事务锁赋予方式是采用FIFS先来先服务的方式,从MySQL8.0.3开始,引入了一种新的模式CATS调度方式,全称为Contention-Aware Transaction Scheduling (或者叫做VATS, V=Variance). 顾名思义就是能够感知到事务竞争关系来实现全局最小...

2020-03-11 16:17:29 54 0

原创 show engine innodb status

注意:以下使用mysql5.5.24版本做解读,mysql5.6.x和5.7.x输出内容有些地方有调整。 1.第一段是头部信息,它仅仅声明了输出的开始,其内容包括当前的日期和时间,以及自上次输出以来经过的时长。 ===================================== ...

2020-03-11 14:19:31 64 0

转载 MySQL 生成binlog的代码分析

binlog文件的内容 log event MySQL的binlog文件中记录的是对数据库的各种修改操作,用来表示修改操作的数据结构是Log event。不同的修改操作对应的不同的log event。比较常用的几种log event有:Query event、Row event、Xid e...

2020-03-09 18:00:52 121 0

原创 MySQL 5.7 并行复制源码分析

1. 基础数据结构 添加全局的事务计数器产生事务timestamp和记录当前最大事务timestamp的clock。 class MYSQL_BIN_LOG: public TC_LOG { ... public: /* Committed transactions timest...

2020-03-01 17:45:03 75 0

原创 MySQL刷脏页优化方案汇总

目录 1. 改善FLU刷脏 1.1 增加并发(5.7.4): 1.2改善链表遍历方式: 1.3平衡刷脏权重(5.7.6) 1.4 用户线程在检查Redo 空间时不参与刷脏(5.7.6) 1.5为page cleaner线程设置更高的优先级(5.7.6) 2. 改善LRU刷脏 2.1...

2019-12-15 18:28:23 86 0

原创 Tuning Paxos for high-throughput with batching and pipelining

http://www.doc88.com/p-9843410898350.html

2019-11-18 00:06:45 28 0

原创 ARTree(The Adaptive Radix Tree: ARTful Indexing for Main-Memory Databases)

1. 背景: 2. 架构介绍: 2.1 内节点类型 2.2叶子节点类型 单值和多值 2.3 lazy expansion and path compression 路径压缩分为乐观和悲观: 3. 优劣分析: 3.1 优势 灵活的页面大小,提高内存的数据空间比 极简的...

2019-11-17 11:28:53 149 0

原创 hyperscale的架构分析

目录 架构分析 计算层: Page Server: Log Server: 优劣势分析: 参考链接 架构分析 计算层: Page Server: Log Server: push log to PageServer push log to 从计算节点 归档 L...

2019-11-05 23:40:59 90 0

原创 Write-Behind-Logging

论文地址:https://www.ixueshu.com/document/9cd210e04def3c2b318947a18e7f9386.html 硬件背景: 传统的HDD盘具有高数据密度,价格低廉,持久化稳定的优点,但也无法摆脱机械盘寻道带来的开销,而且顺序访问和随机访问的性能差异巨大。...

2019-11-05 07:06:45 115 0

原创 MySQL B+Tree的锁分析(含5.6、5.7和其他深度分析)

目录 几点关键的背景 正确的B+树并发控制机制需要满足以下几点要求: 一些名词 SMO过程 MySQL5.6 SMO分析 MySQL 5.6 SMO代码分析 MySQL 5.6 SMO过程分析 MySQL5.7 SMO分析 MySQL 5.7SMO代码分析 MySQL 5.7S...

2019-10-27 23:33:05 97 0

原创 副本数据一致性的一些分析

目录 一致性模型分析 线性一致性(强一致性,strict consistency) 顺序一致性(Sequential Consistency) 因果一致性(Casual Consistency) 腾讯朋友圈的例子 参考资料 一致性模型分析 线性一致性(强一致性,strict con...

2019-10-25 11:29:56 122 0

原创 待整理的知识点

插入意向锁和隐式锁 hyperscale分析 ok 云数据库分析 ok ART分析 新引擎分析 OK ...

2019-10-24 16:38:07 34 0

转载 Disk is Tape, Flash is Disk

这张图让我想到之前在使用Redis时看到Jim Gray那句被坊间流传许久的话:"Tape isDead, Disk is Tape, Flash is Disk, RAM Locality is King".(磁带已死,磁盘是新磁带,闪存是新磁盘,随机存储器局部性是为王道.)...

2019-10-15 19:33:37 17 0

原创 bLSM: A General Purpose Log Structured Merge Tree

bLSM 提出了一种新的合并调度器来限制写入延迟,从而保持稳定的写入吞吐量,并且还使用 bloom 过滤器来提高性能。 Data management workloads are increasingly write-intensive and subject to strict latency ...

2019-10-07 23:34:31 167 0

转载 TokuDB的索引结构–分形树的实现

TokuDB和InnoDB最大的不同在于TokuDB采用了一种叫做Fractal Tree的索引结构,使其在随机写数据的处理上有很大提升。目前无论是SQL Server,还是MySQL的innodb,都是用的B+Tree(SQL Server用的是标准的B-Tree)的索引结构。InnoDB是以主...

2019-10-07 20:42:02 43 0

原创 BwTree论文的一些整理

BwTree 面向场景: 主要是内存场景 打击点: 主要是内存场景: LOCK:引入的上下文切换开销 CPU:本地更新引入的Cache coherence 写放大问题:通过增量 + append的方式减少写入数据量,增加Flush过程中的Batch效果 主要方案: 索引:btree...

2019-10-06 15:02:28 90 0

原创 RocksDB 性能测试(全网搜集)

https://en.wikipedia.org/wiki/MyRocks#Benchmarks percona https://www.percona.com/blog/2018/04/30/a-look-at-myrocks-performance/ http://baijiahao.b...

2019-09-27 10:40:22 550 0

原创 Building a Bw-Tree Takes More Than Just Buzz Words

无锁数据结构被吹捧为当今多核CPU的理想选择。 但是,由于几个原因,它们很难实现[10]。 首先,编写有效而健壮的free-free1代码需要开发人员弄清楚所有可能的竞争条件,它们之间的相互作用可能很复杂。 此外,并发线程彼此同步的观点通常在算法的串行版本中没有明确说明。程序员经常错误地实现无锁算...

2019-09-25 10:21:26 131 0

原创 MySQL Page读取和淘汰过程分析

目录 Page磁盘读取过程 申请空闲PAGE空间 刷脏页和LRU链表 Page内存读取和Page淘汰的互斥 Page磁盘读取过程 buf_page_get_gen | | ==> rw_lock_s_lock(hash_lock); | | ==> block...

2019-09-23 10:20:20 358 0

原创 Append写入方式的收益和成本分析

目录 Append写入收益: Append成本分析: 首先分析Append方式对数据访问的影响: Compaction的目标: Compaction的原则: RocksDB Compaction 成本分析(逐层缓存,Batch合并): 写入放大: 有目的的合并: BwTree(L...

2019-09-17 16:05:57 74 0

转载 Lock-Free?还是多入口?

最近一段时间,感觉大家对于Lock-Free的兴趣又高涨了起来,Lock-Free大有包治百病、一统江湖之势,特写下此文,希望对围观者有所帮助。 让我们先从一个简单的场景开始:考虑一个需要频繁并发访问的Freelist,这应该是许多应用程序中最常见的结构了,如果我们使用基本设计,用一个简单的Mu...

2019-09-12 11:44:03 62 0

转载 内存屏障

RCU(Read-Copy Update),是 Linux 中比较重要的一种同步机制。顾名思义就是“读,拷贝更新”,再直白点是“随意读,但更新数据的时候,需要先复制一份副本,在副本上完成修改,再一次性地替换旧数据”。这是 Linux 内核实现的一种针对“读多写少”的共享数据的同步机制。 不同于其...

2019-09-10 09:54:43 37 0

原创 Free链表的申请方式分析

MySQL 理解BP是数据的管理结构,多个BP相当于把数据进行比如HASH的拆分了。 原地写,每次读写,如果不在BP中,都会从对应的BP中申请一个BLOCK。 RocksDB BP是数据的管理结构,同MySQL。 在写场景下,多个线程并发append有序写入。貌似使用一个BLOCK不大好...

2019-09-05 19:44:19 42 0

转载 LINUX共享内存使用常见陷阱与分析

所谓共享内存就是使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。是针对其他通信机制运行效率较低而设计的。往往与其它通信机制,如信号量结合使用,来达到进程间的同步及互斥。其他进程能把同一段共享内存段“连接到”他们自己的地址空间里去。所有进程都能访问共享内存中的地址。如果一个进程向这段共享...

2019-09-03 15:45:21 18 0

转载 HBase最佳实践-用好你的操作系统

终于又切回HBase模式了,之前一段时间因为工作的原因了解接触了一段时间大数据生态的很多其他组件(诸如Parquet、Carbondata、Hive、SparkSQL、TPC-DS/TPC-H等),虽然只是走马观花,但也受益良多。对视野、思维模式都有极其重要的作用,至少,扩展了大数据领域的对话圈。...

2019-09-03 14:38:55 68 0

转载 内核月报

数据库内核月报 - 2014 / 10 # 01 MySQL · 5.7重构 · Optimizer Cost Model # 02 MySQL · 系统限制 · text字段数 # 03 MySQL · 捉虫动态 · binlog重放失败 # 04 MySQL · 捉虫动态 · 从库OOM # ...

2019-07-15 11:17:39 112 0

转载 正则基础之——贪婪与非贪婪模式

1        概述 贪婪与非贪婪模式影响的是被量词修饰的子表达式的匹配行为,贪婪模式在整个表达式匹配成功的前提下,尽可能多的匹配,而非贪婪模式在整个表达式匹配成功的前提下,尽可能少的匹配。非贪婪模式只被部分NFA引擎所支持。 属于贪婪模式的量词,也叫做匹配优先量词,包括: “{m,n}”...

2016-07-24 15:31:50 299 0

转载 CAS原子操作实现无锁及性能分析

CAS原子操作实现无锁及性能分析   Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blog.csdn.net/chen19870707 Date:Nov 13th, 2014 ...

2015-11-26 12:22:31 492 0

转载 Nginx Upstream Keepalive 分析

1.  实现原理 Nginx 1.1.14版本以前upstream连接建立和获取的机制如下图所示,Nginx会在一开始创建connection pool(进程间不共享,可以避免锁),提供给所有向前/后的连接。   如果要实现upstream长连接,则每个进程需要另外一...

2015-11-16 15:09:57 516 0

转载 nginx epoll

事件处理是Nginx处理请求的核心,每个子进程在ngx_worker_process_cycle()的循环里不断调用ngx_process_events_and_timers()函数来处理各种事件。下面,分析使用epoll机制下(Linux最常用支持大并发的事件触发机制)Nginx事件处理的过程,...

2015-11-13 18:14:06 383 0

转载 nginx连接池

1. 配置 worker_connections 模块:EventsModule 语法: worker_connections number 默认: 位于main section的指令worker_connections和worker_processes可以帮助你计算...

2015-11-13 18:12:29 864 0

转载 Nginx架构

nginx在启动后,在unix系统中会以daemon的方式在后台运行,后台进程包含一个master进程和多个worker进程。   当然nginx也是支持多线程的方式的,只是我们主流的方式还是多进程的方式,也是nginx的默认方式。   master进程主要用来管理worker进程,包含:...

2015-11-13 16:40:52 892 0

转载 Linux写时拷贝技术(copy-on-write)

COW技术初窥:       在Linux程序中,fork()会产生一个和父进程完全相同的子进程,但子进程在此后多会exec系统调用,出于效率考虑,linux中引入了“写时复制“技术,也就是只有进程空间的各段的内容要发生变化时,才会将父进程的内容复制一份给子进程。       那么子进...

2015-08-17 15:05:51 301 0

转载 关于子进程继承父进程属性的小问题总结

今天看书,看到用fork创建子进程的一段样例代码: [cpp] view plaincopy #include    #include    #include       int main(void)   {       pid_t ...

2015-08-17 15:05:16 1160 0

转载 unix/linux下线程私有数据实现原理及使用方法

复习以前做过的爬虫系统,在做防止死链时用到了线程的私有数据,那时候仅仅是会用,至于底层是怎么实现的以及为什么一个键可以对应不同线程的指还一知半解,今天又详细的看了下相关的资料,以做总结。       在维护每个线程的私有数据的时候,我们可能会想到分配一个保存线程数据的数组,用线程的ID作为数...

2015-07-22 18:51:39 308 0

转载 Multithreaded simple data type access and atomic variables

Table of contentsIntroductionHow atomic variables workAtomic variables size limitationsUse casesThe real thing…Time to see some actionPrecautionsCons...

2015-07-20 15:36:25 444 1

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