一直想分析下mysql的源码,开始的时候不知道从哪下手,先从csv的文件存储开始吧,这个还是比较简单的。我是用的是mysql5.7.16版本的源码。

csv源码文件在mysql源码的mysql-5.7.16\storage\csv文件夹下,这里面除了一个make文件,剩下的四个文件就是csv的存储读取代码。

transparent_file.h/cc文件比较简单,只定义了一个Transparent_file类,目的是从指定的文件中读取数据到缓存中。

class Transparent_file
{
File filedes;
uchar *buff; /* in-memory window to the file or mmaped area */
/* current window sizes */
my_off_t lower_bound;//文件偏移开始位置
my_off_t upper_bound;//文件偏移结束位置
uint buff_size;//缓存文件的长度 public: Transparent_file();
~Transparent_file(); void init_buff(File filedes_arg);//从文件中读取数据到内存缓存中
uchar *ptr();//返回内存缓存指针
my_off_t start();
my_off_t end();
char get_value (my_off_t offset);
my_off_t read_next();//读取下一段
};

1.Transparent_file构造函数,根据buff_size和字符的大小申请了指定长度的空间,只是申请,没有初始化文件中的数据。

2.init_buff函数的作用是从指定文件中加载文件内容到缓存中。

3.read_next从文件中下一个buff_size长度的内容放到缓存中,并重写lower_bound和upper_bound的值。

4.get_value从文件中读取指定位置长度为buff_size的数据,放到缓存中。

未完待续。。。

最新文章

  1. KOTLIN开发语言文档(官方文档) -- 2.基本概念
  2. DES加密中文乱码问题的解决
  3. 面试题目——《CC150》高等难题
  4. Query Designer:公式冲突
  5. Build 2016概览
  6. Bash的基础知识man手册
  7. 2016 - 1 -17 GCD学习总结
  8. Div高度百分比
  9. Ajax-数据格式-xml,json
  10. 一个CSS小测试
  11. jQuery animate easing使用方法
  12. HTML&CSS基础学习笔记1.12—引入样式表
  13. 我的第一个html计算器
  14. 使用CocoaPods找不到头文件解决方法
  15. Linux命令之文件处理
  16. JavaSE(十)集合之List
  17. nagios的安装
  18. C++各种优化
  19. POJ1088(记忆搜索加dp)
  20. Pycharm乱码解决

热门文章

  1. 【C语言入门教程】4.2 二维数组
  2. JAVA设计模式 之 策略模式
  3. 新建Oracle数据库时,提示使用database control配置数据库时,要求在当前oracle主目录中配置监听程序
  4. 下一代GNU/Linux显示服务Wayland 1.12正式发布
  5. am335x sd卡启动开启识别emmc kernel 上的改动
  6. mac 下搭建php 编程环境全过程
  7. WIN7 IIS7 安装方法
  8. SqlServer中的Null值空值问题
  9. poj 1326
  10. MySQL中无GROUP BY直接HAVING的问题【转】