12 zwleagle

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 6w+

TCMalloc分析笔记(gperftools-2.4)

TCMalloc是专门对多线并发的内存管理而设计的,TCMalloc主要是在线程级实现了缓存,使得用户在申请内存时大多情况下是无锁内存分配。整个 TCMalloc对小内存(小于等于256k)的管理实现了三级缓存,分别是ThreadCache(线程级缓存),Central Cache(中央缓存:CentralFreeeList),PageHeap(页缓存)。小内存的分配和释放流程如下图所示,红线

2015-04-18 15:15:45

MongoDB查询

返回所有的键find()> db.users.find(){ "_id" : ObjectId("5518ae1b1d802f6252d90e7b"), "emails" : [  "joe@example.com",  "joe@gmail.com",  "joe@yahoo.com",  "joe@hotmail.com",  "joe@php.net",  "

2015-03-31 19:06:10

MongoDB更新操作

插入文档操作db.foo.insert({"bar": "baz"})删除文档操作删除所有的数据:db.foo.remove()删除指定的数据db.foo.remove({"bar": "baz"})更新文档操作

2015-03-31 19:01:59

nanomsg pair tcp SERVER端各个模块的状态

下面这个图描述了nanomsg PAIR协议基于TCP传输的SERVER端的连接建立的各个模块的状态变化.

2015-03-24 18:48:10

nanomsg: 协议NN_PAIR, TCP的SERVER端数据结构

下面这个图描述了nanomsg在NN_PAIR协议,基于TCP传输的各个模块之间的数据结构关系

2015-03-24 18:43:12

InnoDB INODE 页结构

1. Inode是用来管理一个段的,简单说,一个Inode就是代表一个数据段.Inode可以说是一个结构体,它也是像上面一样,按顺序存储到Inode页面中,一个Inode页面可以存储多个Inode节点.如果页面中所有的空间都用来存放已经使用的Inode,则这个页面就称为满Inode页面,否则为半满Inode页面.2. 当表空间的FSP_SEG_INODES_FREE中没有空闲的IN

2015-03-23 19:22:28

InnoDB 锁数管理据结构

对于表锁, InnoDB一般只是获取意向锁(意向共享锁LOCK_IS和意向排它锁LOCK_IX),一般不会去获取共享锁(LOCK_S)和排它锁(LOCK_X)。除非明确的执行LOCK TABLE 命令。一个例外是在在线ALTER TABLE命令的准备阶段,一个表将会被共享锁(LOCK_S) 锁住。Lock bitmap用于表示行锁,紧邻lock struct存放,每bit代表页内1行数据,使用he

2015-03-23 18:53:40

InnoDB 死锁检测实现

InnoDB的死锁检测是通过等待图(Wait-For-Graph)的算法实现的,即检查所有在一个锁上等待的事务是否已经成环;如果成环了说明已经出现死锁,根据一定的策略将某个事务回退将环切断而解除死锁。   死锁的检测时机是在将事务加入等待队列是检测的(lock_table_enqueue_waiting(表), lock_rec_enqueue_waiting(记录) );死锁

2015-03-23 18:46:42

InnoDB Purge 过程

Purge流程Purge功能:InnoDB由于要支持多版本协议, 因此无论是更新, 删除, 都只是设置记录上的deleted bit标记位, 而不是真正的删除记录. 后续这些记录的真正删除, 是通过Purge后台进程(根据参数srv_n_purge_threads配置, 由下面两个线程中的一个来执行purge: srv_purge_thread(); srv_master_thre

2015-03-23 18:41:28

InnoDB 事务管理页的结构, 包括rollback segment和undo log页

1. 每个事务开始时,都会分配一个ROLLBACK SEG给这个事务(即trx_sys_struct->rseg_array[]数组中的一个元素, 这个数组中的元素由链表[trx_sys->rseg_list]来管理,在链表中选择segment是采用ROUND-ROBIN的方式来。即trx_sys_struct->latest_rseg来指示最新被使用的rollback segment) 

2014-09-02 19:28:11

InnoDB double write

InnoDB的double write的作用主要是为了防止部分写失效,即InnoDB默认的页是16k,而磁盘管理的页(即一次写磁盘的大小)一般不是16k,因此InnoDB一次写一个16k页时,操作系统和磁盘要多次写入,这样如果出现异常(断点或OS异常),会导致16k页只能部分写入。因为我们知道在flush buffer cache的时候,其实redo log已经写好了. 为什么还需要担心par

2014-09-02 19:22:49

InnoDB Adaptive Hash Index(AHI)

1. InnoDB AHI的作用       InnoDB的适应哈希(AHI)是维护InnoDB叶子页记录的索引键值(或键值前缀)的到叶子节点记录的Hash映射关系。能够根据索引键值(或前缀)定位到记录的地址。这样可以不用再搜索B+树从root到叶子页的路径定位过程。2. InnoDB AHI的维护      为了避免频繁的更新AHI带来性能的开销,InnoDB的AHI不是随时

2014-09-02 19:22:40

InnoDB 页管理结构

1.段段是表空间文件中的主要组织结构,它是物理上的管理物理空间的一个逻辑概念,它是构成索引,表,回滚段的基本元素,创建一个索引(B树)时会同时创建两个段,分别是内节点段和叶子段,内节点段用来管理(存储)B树中非叶子节点(页面)的数据,叶子段用来管理(存储)B树中叶子节点的数据.  一个段由一个INODE节点来管理这个段下面的所有的簇(extend).2.簇

2014-09-02 19:21:16

InnoDB MVCC

MVCC:    multiversion concurrency control, 多版本并发控制,它提供基于某个时间的快照,使得对于事务看来,总是可以提供与事务开始时刻相一致的数据。而不管这个事务执行的时间有多长,故在不同事务看来,同一时刻看到的相同的行数据可能是不一样的,即:每一行数据会有多个版本数据(副本)。InnoDB的实现:InnoDB的MVCC主要是根据u

2014-09-02 19:08:00

InnoDB INDEX页物理结构

2014-09-02 19:03:04

InnoDB行记录格式(compact)

1. 变长字段长度列表       记录非NULL变长字段的长度列表; 并且安装列的循序的逆序进行放置,一列的长度如果小于255,用一字节表示,如果长度长度大于255,则用两字节表示,一字节还是两字节只对一列来讲,如果一行中既有大于255,也有小于255的,则大于255用两字节,小于255则用一字节。从分析文件的十六进制来看,如果大于255,则高字节的最高位是1.  还需要分析代码是否高位都是

2014-09-02 18:54:48

MyISAM索引文件头部结构(5.1.40)

MyISAM索引文件的头部结构  域长度(byte) MI_STATE_INFOheader24open_count2changed1sortkey1state.records8state.del8state.del8delli

2013-07-12 15:27:49

MYSQL配置文件解析

1. 收集默认的目录: 接口 init_default_directories();主要是下面的目录:"/etc/""/etc/mysql/"环境变量中设置的: MYSQL_HOME当前用户的home目录 : "~/"2. 如果命令行参数中有"--no-defaults"选项, 则将"--no-defaults"选项直接从现有的命令行参数中去掉, 然后直接返回,即不

2013-07-12 15:22:47

LINUX 下安装 dropbox

https://www.dropbox.com/install?os=lnxInstall Dropbox via command lineThe Dropbox daemon works fine on all 32-bit and 64-bit Linux servers. To install, run the following command in

2013-07-03 10:38:23

Redis主备同步(replication)

Redis主备同步流程图:

2013-05-14 18:11:25

查看更多

勋章 我的勋章
    暂无奖章