zoukankan      html  css  js  c++  java
  • Mysql源码分析--csv存储引擎

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

    csv源码文件在mysql源码的mysql-5.7.16storagecsv文件夹下,这里面除了一个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的数据,放到缓存中。

    未完待续。。。

  • 相关阅读:
    无废话设计模式(7)结构型模式--装饰模式
    无废话设计模式(6) 结构型模式--适配器模式
    无废话设计模式(5)结构型模式--桥接模式
    无废话设计模式(4)原型模式
    Java进阶--Map集合
    Java进阶--List接口
    Java进阶--集合泛型综合应用案例(斗地主)
    Java进阶--泛型
    Java进阶--Iterator迭代器
    Java进阶--Collection集合
  • 原文地址:https://www.cnblogs.com/likui360/p/6013255.html
Copyright © 2011-2022 走看看