2023-11-06 monetdb-事务-insert-delta缓存-分析

摘要:

monetdb在事务处理时, 会将数据写入delta缓存中, 然后在commit时将数据写入wal文件, 随后由控制器决定何时将wal中的数据真正的写入BAT列文件中.

本文从delta缓存入手, 分析monetdb在事务处理中的细节.

SQL:

DML:

create table t1 (a int);

事务DDL:

START TRANSACTION;
insert into t1 values (4);
COMMIT;

trace日志:

mserver启动后第一次执行insert:

ALGO     monetdb5/mal/mal_interpreter.c:716             runMALsequence       calling querylog.define
ALGO     monetdb5/mal/mal_interpreter.c:687             runMALsequence       calling sql.transaction_begin
ALGO     monetdb5/mal/mal_interpreter.c:687             runMALsequence       calling sql.exportOperationALGO     monetdb5/mal/mal_interpreter.c:716             runMALsequence       calling querylog.define
ALGO     monetdb5/mal/mal_interpreter.c:687             runMALsequence       calling sql.mvc
ALGO     monetdb5/mal/mal_interpreter.c:687             runMALsequence       calling sql.claim
ALGO     monetdb5/mal/mal_interpreter.c:687             runMALsequence       calling sql.append
IO_      gdk/gdk_bbp.c:3156                             getBBPdescriptor     load tmp_550
IO_      gdk/gdk_storage.c:637                          DESCload             DESCload: 05/550
IO_      gdk/gdk_storage.c:536                          GDKload              GDKload: name=05/550.tail, ext=, mode 1
IO_      gdk/gdk_storage.c:558                          GDKload              read(dst 0x7f01e8040cc0, n_expected 12, fd 9) = 12
ALGO     gdk/gdk_bat.c:1039                             BUNappendmulti       tmp_550#3@0[int]P appending 1 values
ALGO     monetdb5/mal/mal_interpreter.c:687             runMALsequence       calling sql.depend
ALGO     monetdb5/mal/mal_interpreter.c:687             runMALsequence       calling sql.affectedRowsALGO     monetdb5/mal/mal_interpreter.c:716             runMALsequence       calling querylog.define
ALGO     monetdb5/mal/mal_interpreter.c:687             runMALsequence       calling sql.transaction_commit
IO_      gdk/gdk_bbp.c:3156                             getBBPdescriptor     load tmp_551
IO_      gdk/gdk_storage.c:637                          DESCload             DESCload: 05/551
IO_      gdk/gdk_storage.c:536                          GDKload              GDKload: name=05/551.tail, ext=, mode 1
IO_      gdk/gdk_storage.c:558                          GDKload              read(dst 0x7f01e8037d30, n_expected 4, fd 9) = 4
ALGO     monetdb5/mal/mal_interpreter.c:687             runMALsequence       calling sql.exportOperation

mserver启动后第二次连续执行两次insert:

monetdb5/mal/mal_interpreter.c:716             runMALsequence       calling querylog.define
monetdb5/mal/mal_interpreter.c:687             runMALsequence       calling sql.transaction_begin
monetdb5/mal/mal_interpreter.c:687             runMALsequence       calling sql.exportOperationmonetdb5/mal/mal_interpreter.c:716             runMALsequence       calling querylog.define
monetdb5/mal/mal_interpreter.c:687             runMALsequence       calling sql.mvc
monetdb5/mal/mal_interpreter.c:687             runMALsequence       calling sql.claim
monetdb5/mal/mal_interpreter.c:687             runMALsequence       calling sql.append
gdk/gdk_bat.c:1039                             BUNappendmulti       tmp_550#4@0[int]P appending 1 values
monetdb5/mal/mal_interpreter.c:687             runMALsequence       calling sql.depend
monetdb5/mal/mal_interpreter.c:687             runMALsequence       calling sql.affectedRowsmonetdb5/mal/mal_interpreter.c:716             runMALsequence       calling querylog.define
monetdb5/mal/mal_interpreter.c:687             runMALsequence       calling sql.mvc
monetdb5/mal/mal_interpreter.c:687             runMALsequence       calling sql.claim
monetdb5/mal/mal_interpreter.c:687             runMALsequence       calling sql.append
gdk/gdk_bat.c:1039                             BUNappendmulti       tmp_550#5@0[int]P appending 1 values
monetdb5/mal/mal_interpreter.c:687             runMALsequence       calling sql.depend
monetdb5/mal/mal_interpreter.c:687             runMALsequence       calling sql.affectedRowsmonetdb5/mal/mal_interpreter.c:716             runMALsequence       calling querylog.define
monetdb5/mal/mal_interpreter.c:687             runMALsequence       calling sql.transaction_commit
monetdb5/mal/mal_interpreter.c:687             runMALsequence       calling sql.exportOperation

核心处理:

BUNappendmulti

#0  BUNappendmulti (b=0x1a366680, values=0x7f01e803c600, count=1, force=true) at /root/work/monetdb-dev/trunk/monetdb-sep2022_sp3_release/gdk/gdk_bat.c:1028
#1  0x00007f0283fb03d6 in delta_append_val (tr=0x7f01e8004540, batp=0x7f027e1f51e8, id=7590, offset=6, i=0x7f01e803c600, cnt=1, storage_type=0x0, tt=6)at /root/work/monetdb-dev/trunk/monetdb-sep2022_sp3_release/sql/storage/bat/bat_storage.c:2319
#2  0x00007f0283fb0688 in append_col_execute (tr=0x7f01e8004540, delta=0x7f027e1f51e8, id=7590, offset=6, offsets=0x0, incoming_data=0x7f01e803c600, cnt=1, tt=6, storage_type=0x0)at /root/work/monetdb-dev/trunk/monetdb-sep2022_sp3_release/sql/storage/bat/bat_storage.c:2354
#3  0x00007f0283fb0969 in append_col (tr=0x7f01e8004540, c=0x1a571380, offset=6, offsets=0x0, data=0x7f01e803c600, cnt=1, tpe=6)at /root/work/monetdb-dev/trunk/monetdb-sep2022_sp3_release/sql/storage/bat/bat_storage.c:2384
#4  0x00007f0283e38a3c in mvc_append_wrap (cntxt=0x237c610, mb=0x7f01e8035660, stk=0x7f01e803c4d0, pci=0x7f01e8045000)at /root/work/monetdb-dev/trunk/monetdb-sep2022_sp3_release/sql/backends/monet5/sql.c:1842
#5  0x00007f0297637047 in runMALsequence (cntxt=0x237c610, mb=0x7f01e8035660, startpc=1, stoppc=0, stk=0x7f01e803c4d0, env=0x0, pcicaller=0x0)at /root/work/monetdb-dev/trunk/monetdb-sep2022_sp3_release/monetdb5/mal/mal_interpreter.c:688
#6  0x00007f02976357be in runMAL (cntxt=0x237c610, mb=0x7f01e8035660, mbcaller=0x0, env=0x0) at /root/work/monetdb-dev/trunk/monetdb-sep2022_sp3_release/monetdb5/mal/mal_interpreter.c:357
#7  0x00007f0283e5963b in SQLrun (c=0x237c610, m=0x7f01e80168d0) at /root/work/monetdb-dev/trunk/monetdb-sep2022_sp3_release/sql/backends/monet5/sql_execute.c:259
#8  0x00007f0283e5af37 in SQLengineIntern (c=0x237c610, be=0x7f01e8036150) at /root/work/monetdb-dev/trunk/monetdb-sep2022_sp3_release/sql/backends/monet5/sql_execute.c:709
#9  0x00007f0283e58505 in SQLengine (c=0x237c610) at /root/work/monetdb-dev/trunk/monetdb-sep2022_sp3_release/sql/backends/monet5/sql_scenario.c:1358
#10 0x00007f02976568c0 in runPhase (c=0x237c610, phase=4) at /root/work/monetdb-dev/trunk/monetdb-sep2022_sp3_release/monetdb5/mal/mal_scenario.c:453
#11 0x00007f0297656a2a in runScenarioBody (c=0x237c610, once=0) at /root/work/monetdb-dev/trunk/monetdb-sep2022_sp3_release/monetdb5/mal/mal_scenario.c:479
#12 0x00007f0297656c36 in runScenario (c=0x237c610, once=0) at /root/work/monetdb-dev/trunk/monetdb-sep2022_sp3_release/monetdb5/mal/mal_scenario.c:510
#13 0x00007f0297659048 in MSserveClient (c=0x237c610) at /root/work/monetdb-dev/trunk/monetdb-sep2022_sp3_release/monetdb5/mal/mal_session.c:589
#14 0x00007f02976588c1 in MSscheduleClient (command=0x7f01e8000b70 '\333' <repeats 199 times>, <incomplete sequence \333>..., challenge=0x7f027e1f5ce3 "HJBNRi7c", fin=0x7f01e8002b90, fout=0x7f01f0003e20, protocol=PROTOCOL_9, blocksize=8190) at /root/work/monetdb-dev/trunk/monetdb-sep2022_sp3_release/monetdb5/mal/mal_session.c:445
#15 0x00007f029771e232 in doChallenge (data=0x7f01f0000b70) at /root/work/monetdb-dev/trunk/monetdb-sep2022_sp3_release/monetdb5/modules/mal/mal_mapi.c:222
#16 0x00007f0296fcf749 in THRstarter (a=0x7f01f0006310) at /root/work/monetdb-dev/trunk/monetdb-sep2022_sp3_release/gdk/gdk_utils.c:1668
#17 0x00007f029704cb43 in thread_starter (arg=0x7f01f0006380) at /root/work/monetdb-dev/trunk/monetdb-sep2022_sp3_release/gdk/gdk_system.c:862
#18 0x00007f029658d1ca in start_thread () from /lib64/libpthread.so.0
#19 0x00007f02961f9e73 in clone () from /lib64/libc.so.6

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/134798.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构-Prim算法构造无向图的最小生成树

引子&#xff1a; 无向图如果是一个网&#xff0c;那么它的所有的生成树中必有一颗生成树的边的权值之和是最小的&#xff0c;我们称 这颗权值和最小的树为&#xff1a;“最小生成树”&#xff08;MST&#xff09;。 其中&#xff0c;一棵树的代价就是树中所有权值之和。 而…

外呼系统需要关注哪些功能?okcc呼叫中心ai智能语音

场景一&#xff1a; 当点击呼叫、一键拨号、预览外呼发起时&#xff0c;座席人员当前绑定的外呼设备&#xff1a;可能是手机、固话、软电话、WebRTC软电话、SIP话机等&#xff0c;首先振铃&#xff0c;同时外呼系统自动弹出外呼弹屏&#xff0c;展示被叫号码的详细信息&#x…

封装localstorage为对象 js

export const LocalStorageManager {recordKey: "Record",// 获取本地存储中的值get(key) {try {const value localStorage.getItem(key);if (value null || value undefined || value "") {return null;}return JSON.parse(localStorage.getItem(key…

Jest和Mocha两者之间有哪些区别?

什么是单元测试&#xff1f; 所谓单元测试&#xff0c;是对软件中单个功能组件进行测试的一种软件测试方式&#xff0c;其目的是确保代码中的每一个基本单元都能正常运行。因此&#xff0c;开发人员在应用程序开发的整个过程&#xff08;即代码编写过程&#xff09;中都需要进…

云原生周刊:Gateway API 1.0.0 发布 | 2023.11.6

开源项目推荐 Kueue Kueue 是一套用于作业队列的 API 和控制器。它是作业级管理器&#xff0c;可决定何时允许作业启动&#xff08;如创建 pod&#xff09;&#xff0c;何时停止作业&#xff08;如删除活动 pod&#xff09;。 Reloader 一个 Kubernetes 控制器&#xff0c;…

阿里云服务器登录、安装MySql、配置Python、GO环境

1、刚购买的云服务如何登录 刚购买的ECS没有默认密码&#xff0c;需要先设置一下登录的密码。选中实例&#xff0c;右上角的全部操作-->重置实例密码 如果想通过SSH登录&#xff0c;则一定要勾选开启 修改之后ssh root你机器的ip&#xff0c;输入密码就可以愉快的开始你的操…

如何安装Wnmp并结合内网穿透实现外网访问内网Wnmp服务

文章目录 前言1.Wnmp下载安装2.Wnmp设置3.安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3.4 创建公网地址 4.固定公网地址访问 前言 WNMP是Windows系统下的绿色NginxMysqlPHP环境集成套件包&#xff0c;安装完成后即可得到一个Nginx MyS…

冥想第九百七十天

1.充实的一天&#xff0c;今天的天气还好&#xff0c;准备下班后去跑步&#xff0c;本来是明天要跑的&#xff0c;因为明天有课&#xff0c;所以今天跑&#xff0c;不耽误事。 2.全力以赴的一天&#xff0c;感谢父母&#xff0c;感谢朋友&#xff0c;感谢家人&#xff0c;感谢不…

TSINGSEE智能分析网关V4车辆结构化数据检测算法及车辆布控

车辆结构化视频AI检测技术&#xff0c;可通过AI识别对视频图像中划定区域内的出现的车辆进行检测、抓拍和识别&#xff0c;系统通过视频采集设备获取车辆特征信息&#xff0c;经过预处理之后&#xff0c;接入AI识别算法并与车辆底库进行对比&#xff0c;快速识别车辆身份和属性…

架构漫谈 - 如何设计高性能、高可用、高扩展架构

文章目录 一、如何设计高扩展架构架构设计复杂度模型可扩展复杂度模型"拆分"复杂度分析和设计"封装"复杂度分析和设计(1)规则引擎:美团MazeGO规则引擎(2)微内核:OSGI微内核(3)抽象层:Linux VFS抽象层(4)设计模式二、设计高性能架构单机高性能集…

视频转码教程:轻松制作GIF动态图,一键高效剪辑操作

随着社交媒体的兴起&#xff0c;GIF动态图已经成为了人们表达情感、分享精彩瞬间的重要方式。而将视频转化为GIF动态图&#xff0c;不仅可以方便地在社交媒体上分享&#xff0c;还可以延长视频的播放时长&#xff0c;吸引更多的观众。本篇文章将为大家介绍如何将视频轻松转化为…

Flink ON Yarn 模式 --- per job mode 与application mode的区别

1、per job mode&#xff1a; 对于yarn-per-job模式调度的过程&#xff1a; 1、资源调度&#xff1a; 1、因为是yarn模式&#xff0c;所以客户端会向ResourceManager申请资源&#xff0c;申请容器负责来启动ApplicationManager 2、此时ResourceManager接受到客户端的请求&#…

算法与设计分析 | 全排列问题

题目 给定一个由不同的小写字母组成的字符串&#xff0c;输出这个字符串的全排列数量。 我们假设对于小写字母有a < b < ... < y < z。 输入 每组输入只有一行&#xff0c;是一个由小写字母组成的字符串&#xff08;不含相同字母&#xff09;&#xff0c;已知字符…

maven 上传本地jar包到nexus

maven上传命令 mvn deploy:deploy-file -DgroupIdcom.microsoft.sqlserver -DartifactIdsqljdbc4 -Dversion4.0 -Dpackagingjar -DfileC:\java\top-sdk-java-1.0.1-lib\lib\bcprov-jdk16-1.46.jar -Durlhttp://ip:port/repository/maven-releases/ -DrepositoryIdsnapshot…

第二证券:“闻”A股:注册制走深走实是活跃市场制度保障

不久前举办的中心金融工作会议明确要求“推动股票发行注册制走深走实”&#xff0c;无疑为本钱商场活泼进一步夯实制度保证。 上市公司是本钱商场的基石&#xff0c;其质量是决议本钱商场长期健康展开的重要因素之一。作为牵一发而动全身的重要革新&#xff0c;注册制的实施逐…

linux的sftp复制传输文件

连接远程服务器 sftp -P 端口号 用户名主机 例如&#xff1a;sftp -P 80 ubuntu172.168.0.1 并按照提示输入密码 分别使用命令查看本地当前路径&#xff08;Local&#xff09; 和远程路径&#xff08;Remote&#xff09; pwd lpwd 使用 cd 远程路径和 lcd 本地路径分别进入对…

JavaScript 基本数据类型

字符串 在JS中&#xff0c;数据类型有&#xff1a;字符串、数字、布尔、数组、对象、Null、Undefined 用到最多的还是字符串和数组的转换。 <!DOCTYPE html> <html> <head><meta charset"UTF-8"><title>首页</title><style&g…

高防CDN与高防服务器:谁更胜一筹?

在当今数字化世界中&#xff0c;网络安全对于保护网站和应用程序至关重要。在这一背景下&#xff0c;高防CDN和高防服务器是两种流行的解决方案&#xff0c;用于应对不同类型的网络攻击。本文将分析高防CDN是否能够替代高防服务器&#xff0c;以及它们各自的优势和限制。 高防C…

【黑马程序员】SpringCloud——Eureka

文章目录 前言一、提供者与消费者1. 服务调用关系 二、远程调用的问题三、eureka 原理分析1. eureka 的作用 四、Eureka 案例1. 搭建 eureka 服务1. 服务注册1.1 注册 user-service1.2 启动 user-service3. order-service 完成服务注册 3. 服务发现1. 在 order-service 完成服务…

pytorch之relu激活函数

目录 1、relu 2、relu6 3、leaky_relu 4、ELU 5、SELU 6、PReLU 1、relu ReLU&#xff08;Rectified Linear Unit&#xff09;是一种常用的神经网络激活函数&#xff0c;它在PyTorch中被广泛使用。ReLU函数接受一个输入值&#xff0c;如果该值大于零&#xff0c;则返回该…