数据库
文章平均质量分 69
想做一只开心的菜鸡
本科东南大学计算机,研究生南京大学计算机
展开
-
MySQL的ACID
数据库的ACID属性耳熟能详,但是却又很容易混淆。比如MySQL哪些功能是为了实现一致性?本文笔者就带大家一起看看这个问题。原创 2022-11-24 15:02:11 · 631 阅读 · 1 评论 -
TPCH 工具 dbgen的安装与使用
下载工具包在http://www.tpc.org/tpch/ 这个网站下载TCPH的zip包,需要填信息,这里最好用科技网,不然会莫名报错。编译 dbgen下载后解压,然后修改 dbgen/makefile.suite,设置以下变量CC=gccDATABASE=ORACLEMACHINE=LINUXWORKLOAD=TPCH然后 makemake -f makefile.suitegcc -g -DDBNAME=“dss” -DMAC -DINFORMIX -DTPCH -DRNG原创 2021-10-12 21:54:03 · 2930 阅读 · 5 评论 -
Mysql-explain执行计划
关于Mysql的执行计划这块,主要有两个地方可以看:explain 和 optimization trace,这篇博客就讲一讲explain的用法吧Explain示例数据首先涉及的两个表是来自tpcc的表,tpcc使用的是github上的oltpbench。关于如何使用oltpbench,有时间再写个教程。这两个表的schema信息如下:customer表mysql> desc CUSTOMER;+----------------+---------------+------+-----原创 2021-05-22 13:52:38 · 1429 阅读 · 7 评论 -
wsl2 +vscode 搭建mysql8.0+调试环境
wsl2 +vscode 搭建mysql8.0+调试环境官网下载mysql 源码在子系统中解压,假设解压后的目录路径为$mysql_home创建目录mkdir $mysql_home/buildmkdir $mysql_home/etcmkdir $mysql_home/datamkdir $mysql_home/boostcd $mysql_home/build手动下载boost_1_73_0.tar.gz,并放到boost目录下下载一些依赖sudo apt i原创 2021-05-11 23:23:50 · 863 阅读 · 0 评论 -
数据库undo和redo日志(一)
数据库数据存放的文件称为data file;日志文件称为log file;数据库数据是有缓存的,如果没有缓存,每次都写或者读物理disk,那性能就太低下了。数据库数据的缓存称为data buffer,日志(redo)缓存称为log buffer;既然数据库数据有缓存,就很难保证缓存数据(脏数据)与磁盘数据的一致性。在任何地方,只要考虑到读写缓存,就得考虑一致性的问题了。当数据库中的查询更新一个字段时,并不是将修改刷入磁盘才返回结果给用户,而是将log刷入磁盘就给用户结果了,后面由系统将修改按page的粒.原创 2021-03-31 10:57:00 · 946 阅读 · 0 评论 -
MySQL5.7在ubuntu下用Clion搭建调试环境
环境Ubuntu20.04CLion 2020.2.4MySQL5.7 源码代码下载自己各显神通吧,直接git clone会比较慢我使用的是这个油猴脚本的直接下载单个版本的,没有git相关信息。安装依赖包含各种编译所需依赖,其中部分是ubuntu系统已经有的sudo apt install cmake make gcc g++ openssl libssl-dev libncurses5-dev bison编译构建首先需要在shell中尝试下构建,看看有没有什么问题,没问题再上Cl原创 2020-11-18 15:17:31 · 301 阅读 · 0 评论 -
Contention-aware lock scheduling论文
论文:Tian, B., et al. (2018). “Contention-aware lock scheduling for transactional databases.” Proceedings of the VLDB Endowment 11(5): 648-662.该方法已被MySQL采用,并在8.0.3+被设为默认方法,应该是很成功的一个设计了。背景互斥锁与共享锁:锁是实现并发访问控制的常用手段,锁系统里面有两种锁:共享锁(S)和互斥锁(X)。在事务读一个对象前,需要先获得共享锁,同原创 2020-11-16 12:39:41 · 260 阅读 · 0 评论 -
基于深度强化学习的连接查询优化
Krishnan, S., et al. (2018). "Learning to optimize join queries with deep reinforcement learning."如何优化 SQL 连接是数据库社区数十年来一直在研究的一个大问题。伯克利 RiseLab 公布的一项研究表明,深度强化学习可以被成功地应用在优化 SQL 连接上。这篇论文表明了如何通过深度强化学习技术来攻克这个已经存在了数十年的挑战。作者将连接排序问题表示为马尔可夫决策过程(MDP),然后构建了一个使用深度原创 2020-11-13 09:58:56 · 1127 阅读 · 8 评论 -
流处理系统优化论文
AJoin: ad-hoc stream joins at scale VLDB2019背景:现有的流处理系统例如flink主要用来处理在数据流上一直跑某个单独的查询,并且这些查询都经过优化 以及单独执行。Astream1提出的框架主要针对的场景是ad-hoc查询。这种场景下,流不仅使用长时间运行的查询进行处理,而且还使用数千个短期运行的临时查询进行处理。 为了有效地支持这一点,必须在多用户环境中共享资源和用于流临时查询的计算。Astream采用了一些共享的operator从而避免一些冗余计算。AJoin原创 2020-11-05 17:14:57 · 993 阅读 · 1 评论 -
Flink多连接优化问题
如同数据库中的join操作,有内连接(inner join)、外连接(outer join)、交叉连接(cross join,笛卡尔积)等,本文主要涉及内连接。常用来实现连接的算法有:hash join、sort-merge join 以及 nested loop join,下面我们对这三种算法进行简单介绍。join 算法Hybrid-hash joinhash join 分为两个阶段,build和probebuild:为参与连接的两个数据集中较小的数据及准备好哈希表,哈希表中的记录包含着 连接原创 2020-09-09 11:22:57 · 697 阅读 · 0 评论 -
两篇把MySQL MVCC 机制原理说得清楚的博客
看了几篇博客,其中这篇博客写的感觉最用心了,基本解开了我的疑惑。很多博客讲的比较片面,看这篇应该就可以了。原创 2020-08-31 21:52:06 · 112 阅读 · 0 评论