- 博客(15)
- 资源 (3)
- 收藏
- 关注
原创 7 buffer pool的组织结构
一、buf_page_get_gen前面在“6 InnoDB相关的数据结构”一节中,已经提到了buf_pool_t的初始化;并在事务初始化时,宏buf_page_get会调用buf_page_get_gen。我们知道buf_pool中会缓存多种页:索引页、数据页、undo页等,buf_page_get_gen视为了进入database page。现把它的主要代码展示如下:buf_block
2013-12-31 23:25:43 1356
原创 6 InnoDB相关的数据结构
以下讨论的结构体或函数都是出现在innobase_start_or_create_for_mysql()中。一、srv_sys_t* srv_sys——server systemtypedef struct srv_sys_struct srv_sys_t/** The server system struct */struct srv_sys_struct{ srv_tabl
2013-12-28 17:05:13 1243
原创 5 从plugin_init()看存储引擎的初始化
一、plugin_initmain()------->init_server_components()-------->plugin_init(&remaining_argc, remaining_argv, ...)1、register_builtin()将plugin(类型为struct st_mysql_plugin)的指针保存到plugin_array这个动态数组和plugin_h
2013-12-26 09:51:14 1427
转载 4 各种文件
一、日志文件1、错误日志2、慢查询日志:记录慢的SQL查询语言,以帮助优化。默认不开启。3、查询日志:记录了所有对Mysql数据库请求的信息,无论请求是否得到了执行。默认文件名:主机名.log。慢查询日志和查询日志也可以不记录在文件中,而放入mysql架构下的表中。4、二进制日志:记录对数据库的所有操作,但是不包括SELECT和SHOW这类操作。文件名如bin_log.
2013-12-21 13:47:29 598
原创 3 查询:解析器和优化器
一、调用流程mysqld_main------>init_server_components-------->plugin_init
2013-12-20 20:17:32 915
原创 2 从create_new_thread看连接线程
一、数据包格式在分析create_new_thread()之前,先看一下数据包格式,所有的Mysql Net包可以归纳为:1、握手阶段(当客户端开始连接时):从服务器到客户端:握手初始化包;从客户端到服务器:客户端认证包;从服务器到客户端:OK包、Error包。2、命令包(客户端到服务器端的任一要求):从客户端到服务器端:命令包;从服务器到客户端:OK包、Error包、结果集包
2013-12-20 10:02:10 1555
原创 8 配接器
8.1 分类1、应用于容器:stack、queue2、应用于迭代器:insert iterator(back_inserter、front_inserter、inserter)、reverse iterator、iostream iterator3、应用于仿函数:8.3 iterator adapter1、插入迭代器template class back_
2013-12-19 11:01:54 719
原创 1 从mysqld的main()函数开始
一、sql/main.ccextern int mysqld_main(int argc, char **argv);int main(int argc, char **argv){ return mysqld_main(argc, argv);}这就是mysqld的main()函数,它只是调用了mysql_main()。二、mysqld_mainmysqld_ma
2013-12-18 15:20:53 2606
原创 7 仿函数
7.1 仿函数概念使用方法:greater ig;cout << ig(4,6); //常规用法cout ()(6,4); //使用临时对象。7.2 可配接的关键为了拥有可配接能力,每一个仿函数必须定义自己的相应型别。为了方便,定义了两个class,分别代表一元仿函数和二元仿函数(STL不支持三元仿函数)。任何仿函数,只有继承其中一个class,就可以获得相应型别,也就自动拥
2013-12-13 15:55:13 656
原创 6 算法
6.3 数值算法-2、accumulatetemplate T accumulate(InputIterator first, InputIterator last, T init) { for ( ; first != last; ++first) init = init + *first; return init; //提供初始值init的作用:当区间为空时,依然可返
2013-12-11 09:14:09 587
原创 Ketama一致性哈希算法的实现
一、修改test程序在test程序中加入memcached_behavior_set_distribution(memc, MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA_SPY),设置分布式算法。二、memcached_behavior_set_distributionmemcached_behavior_set_distribution
2013-12-03 23:14:32 2325
原创 linux小知识记录
1、linux的进程和线程进程创建 进程创建通常调用fork实现。创建后子进程和父进程指向同一内存区域,仅当子进程有write发生时候,才会把改动的区域copy到子进程新的地址空间,这就是copy-on-write技术,它极大的提高了创建进程的速度。Linux的线程实现 Linux线程是通过进程来实现。Linux kernel为进程创建提供一个clone()系统
2013-12-03 17:27:30 708
转载 Linux文件系统十问
Linux文件系统十问 作者:yanfei,腾讯后台架构师,参与项目为搜搜网页开发和搜搜开放平台。 关于文件系统,相信大家都不陌生。身为攻城狮的我们几乎天天都会与之打交道,但是细深剖一下,其中又有多少是我们理解深度不够的呢。那么让我们一起来看一下下面这一组Linux文件系统相关的问题吧: 1、机械磁盘随机读写时速度非常慢,操作系统是采用什么技巧来提高随机读写的性能的?2
2013-12-03 17:24:29 649
原创 从MEMCACHED_DISTRIBUTION_MODULA开始
一、修改test程序本节开始探索分布式算法,使用三个memcached服务器,将test程序修改为const char* server_list = "localhost:11211, localhost:11212, localhost:11213"。对于分布式算法,系统默认为MEMCACHED_DISTRIBUTION_MODULA,见_memcached_init()中self->dis
2013-12-02 23:17:08 938
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人