首页
VCisHere
取消

分布式数据库事务-Percolator

PDF

DBMS与mmap

mmap 文件 I/O 是操作系统提供的一项功能,它将二级存储中的文件内容映射到程序的地址空间。然后,程序通过指针访问页面,就像文件完全位于内存中一样。操作系统只在程序引用时透明地加载页面,并在内存填满时自动驱逐页面。 mmap 的易用性几十年来一直吸引着数据库管理系统(DBMS)的开发者,作为实现 buffer pool 的一个可行的替代方案。然而,mmap 存在严重的正确性和性能问题,...

brpc学习-bthread

brpc 简介 brpc 是一个 C++ 编写的高性能分布式 RPC 框架,最初由百度于 2014 年创建,在 2017 年开源,于 2018 年进入 Apache 孵化器。如今 brpc 已经被广泛地应用于各大公司,包括百度、字节跳动、滴滴、bilibili、网易等。 整体架构 一个RPC的基本流程: Client 通过 Channel(通道,可视为命名服务的 C...

C++的一些在线工具

C++的一些在线工具 看代码编译展开 https://cppinsights.io/ benchmark https://quick-bench.com/ 编译开销 https://build-bench.com/ 看编译成的汇编 https://gcc.godbolt.org/

C++ memory order

memory_order_relaxed 没有同步或顺序制约,仅对此操作要求原子性 memory_order_release 对写操作施加 release 语义,在代码中这条语句前面的所有读写操作都无法被重排到这个操作之后 当前线程内的所有写操作,对于其他对这个原子变量进行 acquire 的线程可见 当前线程内的与这块内存有关的所有写操作,对于其他对这个原子变量进行 c...

C++ Lambda

完整的声明格式: [capture list] (params list) mutable exception-> return type { function body } 例子: [](int a, int b) -> bool { return a < b; } 捕获: 值捕获 int main() { int a = 123; auto f ...

行存和列存

行存存储 vs 列存存储 简介 在 OLAP 场景下,我们通常倾向于使用列存(Column-Store)而不是行存(Row Store),做出这种决定的原因很直接:因为列存的 I / O 效率比行存更高,查询数据时,只需要从磁盘(或内存)中读取必要的列即可,具备更好的查询性能。 但列存带来的性能提升,到底是因为其在内部架构的基本原理导致的,还是由于列存这一设计思想而导致的?我们是否可以在传...

gdb

gdb GDB 是一个由 GNU 开源组织发布的、UNIX/LINUX 操作系统下的、基于命令行的、功能强大的程序调试工具。 对于一名 Linux 下工作的 C++ 程序员,gdb 是必不可少的工具。 启动 gdb 对 C/C++ 程序的调试,需要在编译前就加上 -g 选项: g++ -g hello.cpp -o hello 调试可执行文件: gdb <program&...

InnoDB-Row Format

InnoDB 数据记录的存储格式:Row Format 行格式 在 MySQL 中,所谓 Row Format 行格式是指数据记录(或者称之为行)在磁盘中的物理存储方式。具体地,对于 InnoDB 存储引擎而言,常见的行格式类型有 Compact、Redundant、Dynamic 和 Compressed。 Compact 其大体分为两部分:记录的额外信息、记录的数据内容。 ...

InnoDB-BufferPool-LRU

BufferPool Innodb为了解决磁盘上磁盘速度和CPU速度不一致的问题,在操作磁盘上的数据时,先将数据加载至内存中,在内存中对数据页进行操作。 Mysql在启动的时候,会向内存申请一块连续的空间,这块空间名为Bufffer Pool,也就是缓冲池,默认情况下Buffer Pool只有128M。 简单的LRU: 新数据插入到链表头部; 每当缓存命中(即缓存数据被访问)...

热门标签