Mysql源码分析--csv存储引擎

Posted 扫地猿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql源码分析--csv存储引擎相关的知识,希望对你有一定的参考价值。

一直想分析下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的数据,放到缓存中。

未完待续。。。

以上是关于Mysql源码分析--csv存储引擎的主要内容,如果未能解决你的问题,请参考以下文章

使用 CSV 存储引擎直接从 CSV 文件创建 mysql 表?

除Innodb和MyISAM外MySQL所支持的存储引擎

MySQL中innodb引擎分析(初始化)

mysql数据库存储引擎及区别

7.Mysql存储引擎

mysql jdbc源码分析片段 和 Tomcat's JDBC Pool