select与fifo
fifo(命名管道)与popen建立的管道意思一样,区别在于popen的管道通常是在父子进程之间调用,而fifo可以在文件系统中看到,可以用于不同程序之间通信。fifo也支持tail -f,echo xxx > 等操作系统命令,甚至还有一个系统命令就叫mkfifo。fifo作为一个文件,它的内容数据并不存放在文件系统中,而仅仅存在于内核里。...
c语言实现linux抓包
验证安装libpca引用pcap.h,确认是否能正常用libpcap开发 #include <stdio.h> #include <pcap.h> int main(int argc, char *argv[]) { char *dev = argv[1]; printf("Device: %s\n", dev); r...
mysql代码阅读-frm文件格式解析
我本人是一名oracle dba,对于mysql只有非核心数据库的简单维护经验。对于oracle,文件的具体格式是内部文档才有的东西,想直接解析文件,只能先拿开源的mysql过过瘾了。同时也是完全出于对“数据库”这东西本身的兴趣,决定啃一啃mysql代码,顺便看看程序通常是如何解析文件的。要了解文件格式最好的方法是看读文件...
mysql代码阅读-插件加载及存储引擎接入
初始化plugin流程点击(此处)折叠或打开main() -> mysqld_main() -> init_server_components() -> plugin_init() &nb...
mysql报Can
mysql启动报 [ERROR] Can't read from messagefile '/usr/local/mysql/share/errmsg.sys'
leveldb代码精读 插入操作
leveldb插入数据时,必然做的操作是先写logfile,再将数据放到cache里不过在此之前,会先进行一下预处理1 将要写的数据封装到到writer里,将write加入写队列,等待轮到它写。2 检查cache是否已满,是否需要“做检查点”3 leveldb的cache有两个状态,当前状态和只读状态。当cache写满,需要写文件时,会将cache转成只读...
leveldb代码精读 数据库启动和初始化
基本概念数据库主要包括cache、日志文件、数据文件、CURRENT文件和manifest文件几大块。所有文件都是依照类型+文件号的命名规则,文件号非常重要,类似oracle的sequence#。其中cache是当前写入的数据缓存,写入数据时1 将数据写入日志文件2 将数据放入cache当达到一定条件,如cache里的数据够多时1 将cache转成...
leveldb代码精读 lru cache
LRUCache的最基本的单位是struct LRUHandle,用来存放数据和一系列指针。LRUCache里有一个LRUHandle组成的LRU链表和一个LRUHandle组成的HandleTable对象存放数据。
leveldb代码精读 skiplist
skiplist是在链表的基础上,在节点内添加若干个指向后面第n个节点的指针,使得链表实现类似树状的结构。它和普通链表的显著区别1 skiplist的节点由于记录了后面第n个节点的地址,也就是有了分支,也和树一样有高度的概念,2 skiplist是排序链表,而每个节点的数据类型是模板实现的,也就是可以是任意类型。因此为了排序,用户需要指定一个Comparator类的实现,告诉skiplist如何比较两个节点数据的大小。3 正是因为skiplist是排序的,因此在skiplist里查找数据的效率特别高,节点记录了下一个和下面第n个节点的地址,可以实现类似二分法查找的效率。
leveldb代码精读 内存池Arena
level db有个内存池不叫xxxpool,而叫Arena。从操作系统申请内存的方式是直接new一个空的char数组,得到一大块连续内存作为数据块,并维护数据块内的空间使用情况。当有app申请内存时,将数组里某个char的地址返回给app,让它使用从这个char开始的一段连续内存。当一个数据块不能满足app的连续内存需求时,就会创建新的char数组。每个char数组,也就是数据块的地址都记录在Arena的一个vector里。当Arena销毁时,就根据vector里记录的数据块地址逐个释放空间。
12c新的自增键方式
这个特性可以生成序号,但是不用手工创建sequence。create table t( id int generated by default as identity, name varchar2(100));插入数据insert into t(name) values ('aaa');insert into t(id, name) values (100, 'bbb');insert into t(name) values ('ccc');查询,...
12c新的分页方式
1 不能和for update一起用2 select子句不能包含sequence,如currval,nextval这些3 如果用在物化视图里,物化视图不能增量刷新创建测试表drop table t purge;create table t (id int, name varchar2(20));insert into t select level, 'name'||level from dual connect by level < 100;commit;返...
mongodb分片balance
查看balance状态mongos> sh.getBalancerState()true通过balance锁查看balance活动如果state是2,表示balance锁已经被获取mongos> db.locks.find({"_id" : "balancer"}).pretty(){ "_id" : "balancer", "...
mongodb分片搭建
由于是简单搭建,采用一台虚机配置多个vip的方式。每个shard是一个复制集,每个复制集的第一个节点是arbiter节点概览route0 1.1.1.100:4000 route1 1.1.1.101:4001 conf0 1.1.1.110:4010 conf1 1.1.1.111:4011 conf2 1.1.1....
mongodb将备机提升为主机
方法1 只需要直接将主机的配置信息priority改成比其他节点大即可rs0:PRIMARY> var c = rs.conf()rs0:PRIMARY> c.members[0].priority = 22rs0:PRIMARY> rs.reconfig(c){ "ok" : 1 }过几秒钟,members[0]就变成主库了,原主机就变成备库了。方法2 把不想成为主库的节点暂时冻结。然后把主库降级...
mongodb修改oplog大小
将主库降级成备库rs.stepDown()关闭数据库db.shutdownServer()以单机模式启动mongod --port 9999 --dbpath /opt/mongo/data备份当前oplog(可选)[root@db11 mongo]# mongodump --db local --collection 'oplog.rs' --port 9999mongodump: /usr/lib64/libcrypto.so.10: no ver...
mongodb复制集搭建
环境主机 端口4444[root@db11 mongo]# hostnamedb11[root@db11 mongo]# pwd/opt/mongo[root@db11 mongo]# ls -ltotal 124drwxr-xr-x. 2 root root 4096 Mar 10 19:37 bindrwxr-xr-x. 3 root root 4096 Mar 12 16:27 data-rw-r--r--. 1 root root 34520 Feb 28 01:43 GNU-AGPL-3.0-rw-r-...
mongodb 插入数据
> db.createCollection("obj");{ "ok" : 1 }插入一个文档> db.obj.insert({... name: "obj1",... arr: [{elemName: "elem1", elemValue: 1}, {elemName: "elem2", elemValue: 2}],... subObj: {... subName: "subName1",......
mongodb dml
覆盖整个文档> db.obj.update(... { name: "obj2" },... {... f1: 1,... f2: "a"... }... )WriteResult({ "nMatched" : 1, "nUpserted" : 0, ...
mongodb索引
system.indexes下包含所有索引信息自动创建的有每个集合的_id和shard key索引mongos> db.system.indexes.find();{ "v" : 1, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "test.doc1" }{ "v" : 1, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "test.doc0" }{ "v" : 1, "key" : { "_id" : 1 }, "name...