摘要: tasks.json { "options": { "cwd": "${workspaceFolder}/build" }, "tasks": [ { "label": "cmake", "command": "cmake", "args": [ "-DDEBUG=ON", ".." ] }, { 阅读全文
posted @ 2022-09-28 22:37 misaka-mikoto 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 概述 许多查询只涉及表中的少量记录。例如"查找学号为'U2021001'的学生的专业",这个查询最多只涉及学生表中的一条记录。如果系统为了找到学号为"U2021001"的记录而读取整个学生表,这样的操作方式显然是低效的。理想情况下,系统应该能够直接定位到这条记录。为了支持这种访问方式,需要额外设计一 阅读全文
posted @ 2022-09-27 11:36 misaka-mikoto 阅读(323) 评论(0) 推荐(0) 编辑
摘要: 文件的分页 DBMS最常见的做法是将数据库以文件的形式存储在磁盘上。有些DBMS可能使用一组文件来存储数据库,有些DBMS可能只使用单个文件。 从操作系统的角度来看,一个文件就是一个字节流序列,操作系统并不关心和了解文件的内容以及文件之间的关联性。数据库文件的内容只有创建它的DBMS才知道如何解读, 阅读全文
posted @ 2022-09-26 18:32 misaka-mikoto 阅读(663) 评论(0) 推荐(0) 编辑
摘要: #!/bin/bash PID=`ps -ef | grep /bin/metafs_server(替换成你需要的程序) | grep -v grep | awk '{print $2}'` if [ ${#PID} -eq 0 ] then echo "process not found" exi 阅读全文
posted @ 2022-09-26 14:13 misaka-mikoto 阅读(38) 评论(0) 推荐(0) 编辑
摘要: 前言 Compaction和Version相关的部分交织在一起,不搞明白Version很难理解Compaction。其实这句话反过来说也是对的,如果不理解Compaction也很难理解VersionSet。 versionEdit Version相关的数据结构有3个,Version VersionE 阅读全文
posted @ 2022-09-26 11:08 misaka-mikoto 阅读(80) 评论(0) 推荐(0) 编辑
摘要: 简单来说就是通过增大操作系统页的大小来减小页表,从而避免快表缺失。在介绍之前需要强调一点,大页内存也有适用范围,程序耗费内存很小或者程序的访存局部性很好,大页内存很难获得性能提升。所以,如果你面临的程序优化问题有上述两个特点,请不要考虑大页内存。后面会详细解释为啥具有上述两个特点的程序大页内存无效。 阅读全文
posted @ 2022-09-25 23:58 misaka-mikoto 阅读(3032) 评论(0) 推荐(0) 编辑
摘要: 分布式系统的一致性和性能常常是鱼和熊掌不可兼得。追求高的一致性,必然会带来性能的损失,而想要追求高的性能,也只能妥协于一定程度的非一致性。以下图中的数据写入为例,不同的一致性级别要求写入的节点个数是不同的, 写入节点个数越多,显然客户端需要等待的时间就会越久。 一致性差异: Raft中采用的是QUO 阅读全文
posted @ 2022-09-14 11:27 misaka-mikoto 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 分片思想 客户端 pinode -> pinode_hash XXHash(pinode) % (一个region大小 * server数量),总共Hash范围应该不超过(一个region大小 * server数量),因为server初始化时总的范围只有这么大 客户端计算该pinode属于哪个reg 阅读全文
posted @ 2022-09-10 23:27 misaka-mikoto 阅读(43) 评论(0) 推荐(0) 编辑
摘要: 应用场景 延时/定时函数调用 定时发送心跳检测node是否宕机 简介 定时器功能由TimerId,Timer,TimerQueue实现,用户只能看到TimerId TimerQueue只暴露两个接口addTimer和cancel,addTimer供eventloop使用,会包装成runat,runa 阅读全文
posted @ 2022-09-08 12:07 misaka-mikoto 阅读(66) 评论(0) 推荐(0) 编辑
摘要: 概述 ring buffer称作环形缓冲区,也称作环形队列(circular queue),是一种用于表示一个固定尺寸、头尾相连的缓冲区的数据结构,适合缓存数据流。 使用场景 在任务间的通信、串口数据收发、log缓存、网卡处理网络数据包、音频/视频流处理中均有环形缓冲区(ring buffer) 的 阅读全文
posted @ 2022-09-07 11:17 misaka-mikoto 阅读(584) 评论(0) 推荐(0) 编辑