mysql csv存储引擎_2.2 mysql存储-CSV存储引擎
前言
写这个东西基本没有什么计划,也是自己边写边看,边总结的一个过程,不过存储引擎这块应该是会占据大量的篇幅的。
CSV存储引擎
先看看我们比较简单的类型,CSV类型的(InnoDB太复杂了)
CREATE TABLE USER1(
id int not null ,
c1 varchar(10) not null,
c2 char(20) not null) engine=csv;
可以看到,在data目录下的,对应的database里面,对了几个文件
data>ls
user1.CSM user1.CSV user1_354.sdi
#.CSM文件记录表状态与数据量
#.CSV文件记录的就是具体的数据信息
#.sdi记录了表结构信息
我们指定了CSV类型,那么SQL解析器识别到这里的时候,那一块代码去处理呢,又是怎么去处理的呢?
在源码的目录中,有一个目录是storage/csv,这里面就保存csv存储引擎是如何工作的。
在ha_tina.h文件中,定义了存储引擎的很多接口,我们现在只看create接口的实现,实现在ha_tina.cc文件中。
那么我们就会思考,这个create函数是从哪里调用过了的,ha_tina是handler的派生类。因此就是
>Sql_cmd_create_table::execute
| >mysql_create_table
| | >mysql_create_table_no_lock
| | | >create_table_impl
| | | | >rea_create_base_table
| | | | | >ha_create_table
| | | | | | >handler::ha_create
| | | | | | | >ha_tina::create
根据我们提交的命令行,进入sql解析器,然后进行执行的。
>do_command
| >dispatch_command: COM_QUERY
| | >mysql_parse
| | | >mysql_execute_command: SQLCOM_CREATE_TABLE
还有就是sdi文件是在什么时候生成的?大略的翻了下ha_create_table代码,没有发现。打开sdi文件文件看看,发现关键字“mysqld_version_id”,源码中搜索可以发现在sdi.cc文件中。以下完成了初始化的过程。
>rea_create_base_table
| >Dictionary_client::store
| | >Storage_adapter::store
| | | >sdi::store
| | | | >serialize
| | | | | >generic_serialize
| | | | >sdi_file::store_tbl_sdi
到这里我们就了解了,三个文件是如何存储的。
那么,一个create table语句,他是如何被监听,被执行的呢?我们先简单过下.
在mysqld_main函数中,监听连接,有新的请求的时候,创建新的连接。这块内容与我们本章要去学习的东西没有太大相关性,之后再去理解。
>mysqld_main
| >mysqld_socket_acceptor->connection_event_loop();
| |>Mysqld_socket_listener::listen_for_connection_event
| |>Connection_handler_manager::process_new_connection
| | |>Per_thread_connection_handler::add_connection
/*校验是否存在空闲的线程*/
if (!check_idle_thread_and_enqueue_connection(channel_info)) return false;
/*
There are no idle threads avaliable to take up the new
connection. Create a new thread to handle the connection
*/
channel_info->set_prior_thr_create_utime();
/*handle_connection中创建线上*/
error =
mysql_thread_create(key_thread_one_connection, &id, &connection_attrib,
handle_connection, (void *)channel_info);
进入handle_connection函数,就可以看到在这个里面创建THD(线程描述对象)描述了请求线程相关的信息。这里就可以看到do_command函数,到这里可以看到就回来了。
总结
本节从存储文件开始,大致梳理下整体的SQL的执行流程,并且了解了比较简单的CSV存储引擎怎么去存储的,那么存储引擎的数据是如何去存储的呢?
mysql csv存储引擎_2.2 mysql存储-CSV存储引擎相关推荐
- mysql支持数据安全的引擎_2、MySQL常见数据库引擎及比较?
MySQL存储引擎简介 MySQL支持数个存储引擎作为对不同表的类型的处理器.MySQL存储引擎包括处理事务安全表的引擎和处理非事务安全表的引擎: MyISAM管理非事务表.它提供高速存储和检索,以及 ...
- mysql支持的并发数_重学MySQL系列(五):谈谈对MySQL的存储引擎的理解
原创作者,公众号[程序员读书],欢迎关注公众号,转载文章请注明出处哦. MySQL关于存储引擎的架构设计,相较于其他关系数据库管理系统,比如Oracle,SQL Server等数据库,这是MySQL最 ...
- Mysql学习总结(4)——MySql基础知识、存储引擎与常用数据类型
1.基础知识 1.1.数据库概述 简单地说:数据库(Database或DB)是存储.管理数据的容器: 严格地说:数据库是"按照某种数据结构对数据进行组织.存储和管理的容器". 总结 ...
- MySQL存储引擎精讲(附带各种存储引擎的对比)
接下来介绍一下存储引擎的基本概念.MySQL 支持的存储引擎.存储引擎的选择以及操作默认存储引擎. 什么是存储引擎 数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建.查询.更新和 ...
- mysql中存储引擎是啥_mysql中的存储引擎
mysql存储引擎概述 什么是存储引擎? MySQL中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平并且最终提供广泛的不同的功能和能力. ...
- mysql maria引擎_MySQL/mariadb知识点——存储过程及存储引擎
MySQL架构 连接器 连接池,安全认证.线程池.连接限制.检查内存.缓存 SQL接口 DML.DDL SQL解析器,对SQL语句的权限检查.解析为二进制程序 优化器,优化访问路径 缓存cache,b ...
- mysql barracuda_这可能是把MySQL存储引擎讲解的最清楚的一篇文章了
欢迎关注专栏<Java架构筑基>--专注于Java技术的研究与分享!Java架构筑基zhuanlan.zhihu.comJava架构筑基--专注于Java技术的研究与分享! 后续文章将首 ...
- Linux九阴真经之九阴白骨爪残卷9(存储引擎MyISAM、MySQL服务器变量)
一.MyISAM存储引擎 缺点: 不支持事务 最小粒度锁:表级 读写相互阻塞,写入不能读,读时不能写 不支持MVCC(支持多版本并发控制机制) 不支持聚簇索引 不支持数据缓存 不支持外键 崩溃恢复性较 ...
- mysql各版本的默认的存储引擎_Mysql常见的几种存储引擎
一.mysql的体系结构 整个MysqlServer有一下几部分组成 Connection Pool : 连接池组件 Management Services & Utilities : 管理服 ...
最新文章
- WEBSHELL恶意代码批量提取清除工具
- C#人爱学不学9[C#5.0异步实例+WPF自己的MVVM Async应用 1/12]
- php cros跨域处理,php接口设置cors实现ajax跨域
- 《Fabric 云存储的电子健康病历系统》(2)病历结构体 Records
- 使用 Visual Studio Code 进行远程开发
- MS的完整形式是什么?
- EasyRecovery---ppt恢复技巧
- 解决SecoClient接收返回码超时
- 网购工具软件chrome扩展插件大推荐
- 十款免费数据恢复软件
- 解决outlook2016 中邮件中,点击链接提示(您的组织策略阻止我们为您完成此操作)解决方案
- oracle 统计标准误差,标准偏差和标准误差的区别
- excel表格斜线_WORD圆角表格,如此惊艳
- WIN间远程桌面连接:你的凭据不工作解决(亲测有效)
- 记录四川移动盒子打开adb命令的方法 型号:UNT402H
- 苹果手机隐私分析数据是什么_苹果公司以用户为中心的隐私保护方法能教给我们什么?
- eclipse写程序从hdfs上下载文件到本地报错:at org.apache.hadoop.util.Shell.runCommand
- win10安装c语言不兼容,手把手还原win10系统visual c++不兼容的技巧
- PDF和CDF图的区别
- 向excel里面插入网络图片
热门文章
- 美国一公司起诉苹果 指控iPhone中“个人热点”技术侵犯其专利
- 苹果新闻订阅服务Apple News +推出48小时获得逾20万用户
- 刘强东发新年信:过去一年我们异常艰难
- ubuntu java android_Ubuntu中为Android系统实现内置Java应用程序测试Application Frameworks层的硬件服务...
- android canvas 清空画布,清除canvas画布内容(点擦除+线擦除)
- 多目录Makefile(库及分层目录)
- 深度学习入门读书笔记:Day-14
- ORACLE删除表分区和数据
- seo日常工作表_5 個日常要做的 SEO 維護工作
- 怎么找到python的文件_python – 如何找到文件所在的挂载点?