自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Michael的专栏

大数据管理,数据库,分布式事务,图数据

  • 博客(109)
  • 收藏
  • 关注

原创 MySQL内核技术之"Table结构与操作"

谈到Table,我们首先从SQL语句说起,因为围绕Table的所有操作都是由SQL触发的。设想一下,我们有如下SQL语句:SELECT * FROM t1, t2 WHERE t1.a这条语句涉及到两个table:t1 和 t2。在MySQL涉及到如下数据结构来操作上面SQL语句:TableTableListTableCacheTableCacheManager回

2017-09-22 17:07:33 988 1

原创 MySQL内核技术之“增加新文件(boost)”

本篇内容和数据库技术本身无关。只是针对特定的MySQL code base进行开发时涉及到的一些细节问题。不关心的朋友可自行略过。在MySQL的code base中添加文件需要做如下事情:1. 如果是cc文件,需要在对应的CMakefileList.txt中添加文件名;2. 如果是h文件,则不需要。3. 如果h文件涉及到boost的头文件,需要把引用该h文件的cc文

2017-09-20 16:09:01 713

转载 centos开启ssh服务

1.查看是否安装ssh服务 rpm -qa | grep ssh 2.安装ssh服务 yum install openssh-server 3.重启/启动/停止ssh ervice sshd restart / start / stop /etc/init.d/ssh start 4.查看是否启动成功 netstat -antp | grep sshd 端口22是否启动 5.设

2017-08-31 03:12:49 3467

原创 MySQL内核技术之aggregation(聚合操作)

在数据库技术中,Aggregation function又称之为set function,其含义为输入为一个set,输出为聚合结果。具体包括:COUNT()AVE()MN()MAX()SUM()Aggregation function有两种用法,一种单独使用,另一种是和GROUP联合使用。我们先讨论单独使用的情形。 当单独使用的时候,其输出只有一

2017-08-30 07:28:05 6139

原创 MySQL内核技术之“SQL语法修改”

在本例中,我们添加一个hint:select /*+ PARALLEL(4) */ * from t1;注意,这里的 /*+ PARALLEL(4) */ 就是hint。 这个是MySQL 5.7之后的新特性,语法规则和Oracle一致。为了支持这个语法需要改动yacc相关的文件。具体包括:sql/lex.hsql/sql_hints.yaccsql/opt_hin

2017-08-29 07:29:54 839

原创 MySQL code解析

# Query入口MySQL的代码比较messy,为了清楚理解MySQL的已有功能,本篇文章从MySQL的query层面进行分析,目的是理清MySQL的query处理流程和代码架构。本文基于MySQL5.7版本。MySQL的入口代码的skeloton可以参见官方文档:https://dev.mysql.com/doc/internals/en/guided-tour-skeleto

2017-08-22 07:26:19 2676

原创 MySQL debug设置

对MySQL进行debug和普通程序有所不同,主要是没有配置文件的情况下直接debug。过程如下:1. 对源码进行cmake 编译(进入到build文件夹),make -j20,2. 在build文件夹下,进入mysql-test,运行mtr程序:./mtr --manual-debug load3. 上面的mtr相当于和mysqld的沟通进程,后面的参数有个load,其对应的

2017-08-15 13:05:00 6543

原创 Eclipses 如何支持CMake Project

eclipse目前版本(至少时Luna以后的版本)对Cmake有着特殊的支持。如果不用该支持,会导致index不完全,很多地方出现红线无法解析的问题。本文阐述实战中如何对MySQL(AliSQL)进行导入。MySQL(AliSQL)的版本已经是Cmake。git clone后,进入文件夹:发现里面有一个build.sh脚本,我们做相应的动作mkdir bu./bui

2017-08-15 12:46:03 5755

原创 实验日记

numactl -i all ./src/tpcc -k 0.1 -b 19 -p occ -g co -d 200 -w 19 -a 0.01 -z hash -o -l -cecho "your message here" | mail -s "continue-200s" -A /home/ubuntu/zhangtiey/peloton_ex/build/tpcc-output/o

2017-08-15 01:53:48 386

原创 cmake for MySQL

cmake -G"Eclipse CDT4 - Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/home/michael/install/3306 -DMYSQL_DATADIR=/home/michael/install/3306/var -DINSTALL_SBINDIR=libexec -DINSTALL_LI

2017-08-15 01:52:56 344

转载 centos 7 sogou input

经过实战验证,没有问题 安装步骤:1.解压fcitx2.安装fcitx+sougou注意yum需要root用户(我已安装,仅作演示)。若有依赖问题,请安装RPMforge

2017-08-04 07:32:34 1556

原创 Eclipse配置及问题解决 syntax highlighting disappeared for one of my files and Indexer missing many classes

Refer screenshot below.

2017-08-01 07:06:45 509 1

转载 U盘安装CentOS 7终极方案,简单有效

笔者前段时间使用U盘安装centos7,遇到很多问题,好在最后都解决了,而且摸索出了最简单有效的方法,现在做下整理,与大家分享。准备工具1.准备8G优盘(启动盘制作完成后,U盘占用约4.02G,所以需要8G)2.最新版UltraISO(软碟通),一定要使用最新版的,因为老版本的软碟通制作出来的U盘启动盘有问题,例如9.3.6.2750这个版本。问题体现在哪呢

2017-07-29 06:34:03 58902 7

转载 MySQL: Query Parsing (MySQL query解析)

Lexical analysis and parsing are prerequisite for any language. There are many tools available in the industry which can help in achieving this goal.To give you an idea, following is a listing of

2017-07-22 06:28:10 1746

原创 mysql stop

Just keep in mind:/usr/local/mysql/bin/mysqladmin -u root shutdown

2017-06-30 01:00:43 348

原创 5分钟读懂raft:非常好并且直观解释Raft的网页

有问题联系我:[email protected]就一个连接,哈哈:http://thesecretlivesofdata.com/raft/

2017-06-28 02:51:20 1754

原创 ubuntu命令行直接发送email,带附件

1. 安装sudo apt-get install mailutils2. 发送echo "your message here" | mail -s "title" -A /home/ubuntu/zhangtiey/peloton_ex/build/tpcc-output/output2017612632.summary [email protected]

2017-06-01 10:17:03 3113

原创 profile c++

1. sudo perf top 在另外一个terminal 跑你的程序, sudo perf top 列出专用资源的情况2. valgrind --tool=callgrind --trace-children=yes --instr-atstart=no ./src/tpcc -k 0.1 -b 1 -x occ -g co -d 20 -w 1 -z hash -o

2017-05-22 02:22:21 727

原创 Radix Tree在Hyper中的实现:解读Hyper论文《 The Adaptive Radix Tree: ARTful Indexing for Main-Memory Databases 》

本文讨论如何在实际的数据库系统中应用Radix Tree作为索引,暨解读HyPer的论文:The Adaptive Radix Tree:ARTful Indexing for Main-Memory Databases。本人和其作者Viktor有过一段时间的共事,希望对大家能有帮助。Radix Tree实际上就是前缀树,也称之为Trie。相比B-Tree,其最大的特性是1)数的高度不

2017-04-16 00:03:48 4215 1

原创 LevelDB读写流程(具体例子讲解SkipList+LSM)

有任何问题请联系我:[email protected]是LSM最有名的实现系统。网上介绍的文章不少, 本文主要用于我自己的理解和备忘录,我将用具体的实例来介绍LevelDB的读写过程,希望能让读者更加清楚其细节是如何实现的。总体来说,LevelDB是LSM+SkipList来实现的。具体来说,memtable是SkipList, sstable是LSM。S

2017-04-11 02:19:09 2519

原创 “k最小”或“k最大”问题

最近看了看算法题,发现这类问题比较有趣。当你看到求“k最小”一类的问题,可以立即想打用“k selection”来解决。首先说一下“k selection”要解决的问题:在一个数组中,找出第k小的元素。比如数组:1,2,3,4,5,6,7....第1小的是1,第2小的是2,第5小的是5。那么在一个无序的数组中,如何快速找到第k小的元素呢。答案是使用类似快速排序的方法。快速排

2017-02-28 04:58:23 502

原创 Skip List 实现思路

int GetHeight(int max_height, int prob) { int level = 1; while (random()< prob && level < max_hight) { level++; } return level;}struct SkipNode { int key;

2017-02-19 00:54:43 342

转载 git fetch拉取他人分支

有时候我们需要得到其它人的代码仓库,将别人(未push到远程仓库上的)修改与自己的修改进行合并,或者查看别人某个分支下的代码(而不真正切换别人的分支),本文介绍了相关的操作方法。git remotegit remote用来管理本地工作目录对应的远程代码仓库,在一般的工作目录下,执行git remote结果如下:> git remoteorigin> git remote -vor

2017-02-17 10:45:33 6625

转载 Git回退到以前版本

现在,你已经学会了修改文件,然后把修改提交到Git版本库,现在,再练习一次,修改readme.txt文件如下:Git is a distributed version control system.Git is free software distributed under the GPL.然后尝试提交:$ git add readme.txt$ git commit -m "a

2016-12-31 09:16:50 777

转载 Git 远程操作

阮一峰的网络日志 » 首页 » 档案 上一篇:我的博客文集上架了! 下一篇:Airbnb与创投  分类:开发者手册Git远程操作详解分享按钮作者: 阮一峰日期: 2014年6月12日Git是目前最流行的版本管理系统,学会Git几乎成了开发者的必

2016-12-29 04:35:13 297

原创 Eclipse CDT 总是跳出来GC overhead limit exceeded或者Java heap 的问题的解决办法

When Eclipse stops responding and displays an error message:An internal error occurred during: "Building workspace".GC overhead limit exceededor any other related to memory limits, like:PermGen

2016-12-11 10:59:12 447

原创 NestedLoopJoin的实现方案

1. 左孩子的projection(查询结果)中要包含join predicate 位于左表的条件(column id)2. 右孩子的predicate(查询结果)中要包含join predicate 位于右表的条件(column id)1的作用是执行完left child获得结果,根据结果要获得join predicate里column id 对应的值2的作用是根据colum

2016-11-24 11:37:06 882

原创 查看CPU支持的指令集

gcc -march=native -Q --help=target|grep marchfor me it gives-march= bdver1

2016-08-22 05:50:45 16166

原创 comment/uncomment lines in Vim

To comment out blocks in vim:press Esc (to leave editing or other mode)hit ctrl+v (visual block mode)use the up/down arrow keys to select lines you want (it won't highlight everything - it's OK!)S

2016-08-22 05:44:40 1114

翻译 让eclipse CDT支持C++11

For most recent versions: (Currently Juno and KeplerLuna):Under newer versions of Juno the settings are located at Project properties -> C/C++ General -> Preprocessor Include Paths, Macros etc. ->

2016-08-15 23:39:27 3550

原创 std::map更新数值前是否需要初始化

ISO/IEC 14882 §23.4.4.3T& operator[](const key_type& x);Effects: If there is no key equivalent to x in the map, insertsvalue_type(x, T()) into the map.Requires: key_type shall be CopyConstruct

2016-06-10 03:25:10 3395

原创 生成结果以及处理结果代码段(c++和python)

生成结果文件(c++)static void WriteOutput() { // Create output directory struct stat st; if (stat("./ycsb-output", &st) == -1) { mkdir("./ycsb-output", 0700); } // Create file under output d

2016-06-06 00:00:31 493

翻译 最新的版的PostgresSQL引入了BRIN索引

After reading that PostgreSQL 9.5 will support BRIN indexes, it took me a couple of re-reads of the attached documentation to understand exactly what this index technique is about. Actually, it’s re

2016-05-23 04:40:06 1210

原创 protobuf的nested message嵌套消息。有时会出现序列话再反序列化后,嵌套消息的指却没有了

在使用protobuf的nested message嵌套消息时,有时会出现序列话再反序列化后,嵌套消息的指却没有了。我解决的方法是检查消息格式,把空行全去掉了,就可以了。但还是不确定是不是这个原因,至少没有找到别的原因。遇到类似的问题可以给我发邮件:[email protected] peloton.networking;message BaseTest {

2016-04-02 04:47:59 3291

翻译 什么是并发控制中的2PL

In this blog I will describe the concurrency control methods implemented in database management systems, and the differences between them. I will also explain about what locking technique is used in C

2016-03-28 08:51:34 2424

原创 使用libevent和多线程构建高性能服务器(客户端)

有问题可以联系我[email protected]因为开发数据库集群,节点需要通信,必须构建基于socket的C++网络通信系统。多年前使用UPD写过P2P流媒体,但是现在需要TPC,首先使用了Nanomsg作为网络库,但是开发过程中发现其不靠谱(模式太单一,并且出了问题根本找不到解决办法)。于是又掉头回来使用原生的socket编程。发现目前比较流行的(C++)网络编程使用libevent

2016-03-24 07:53:37 11196 3

翻译 如何理解wait前面需要加while循环

如何理解wait前面需要加while循环:pthread_mutex_lock(&m);while(!condition) pthread_cond_wait(&cond, &m);// Thread stuff herepthread_mutex_unlock(&m);The real reason you should put pthread_cond_wait

2016-03-19 07:07:12 3057

转载 pthread与std::thread对比用法

Threadstd::thread的构造函数方便得出人意料,这得感谢std::bind这个神奇的函数。在std::thread的构造函数里,你可以直接传递一个函数和这个函数的参数列表给这个线程。你甚至可以传递一个类成员函数。如果你这么做了,参数列表的第二个参数(第一个参数是被传递的成员函数)会被作为该类成员函数所作用的实例。是不是有点绕……举个例子来说吧:// 假设buy是一个可调用的

2016-03-19 07:05:56 14626 1

翻译 pthread_join和pthread_detach的用法

//从别处拷贝过来的,只作为自己查看方便,原作者不详,请谅解。一:关于joinjoinjoin是三种同步线程的方式之一。另外两种分别是互斥锁(mutex)和条件变量(condition variable)。调用pthread_join()将阻塞自己,一直到要等待加入的线程运行结束。可以用pthread_join()获取线程的返回值。一个线程对应一个pthread_joi

2016-03-18 02:06:32 562

原创 多线程中使用libevent

涉及到的API:1) evthread_use_pthreads()2) struct bufferevent *bev = bufferevent_socket_new(base, -1, BEV_OPT_CLOSE_ON_FREE | BEV_OPT_THREADSAFE);3) evbuffer_enable_locking(bev->output,n

2016-03-17 08:24:30 5350 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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