(转)mysql数据文件解析
一 数据文件
在 MySQL中每一个数据库都会在定义好(或者默认)的数据目录下存在一个以数据库名字命名的文件夹,用来存放该数据库中各种表数据文件。不同的 MySQL存储引擎有各自不同的数据文件,存放位置也有区别。多数存储引擎的数据文件都存放在和 MyISAM数据文件位置相同的目录下,但是每个数据文件的扩展名却各不一样。如 MyISAM用“.MYD”作为扩展名, Innodb用“ .ibd”, Archive用“ .arc”, CSV用“ .csv”,等等。
InnoDB,是MySQL的数据库引擎之一,为MySQL AB发行binary的标准之一。InnoDB由Innobase Oy公司所开发,2006年五月时由甲骨文公司并购。与传统的ISAM与MyISAM相比,InnoDB的最大特色就是支持了ACID兼容的事务(Transaction)功能,类似于PostgreSQL。目前InnoDB采用双轨制授权,一是GPL授权,另一是专有软件授权。
MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的ISAM所改良。虽然性能极佳,但却有一个缺点:不支持事务处理(transaction)。不过,在这几年的发展下,MySQL也导入了InnoDB(另一种数据库引擎),以强化参照完整性与并发违规处理机制,后来就逐渐取代MyISAM。
Archive引擎作用: 为大量很少 引用的历史、归档、或安全审计信息的存储和检索提供了完美的解决方案,区别于InnoDB、MyISAM提供压缩功能,没有索引。
MyISAM与Innodb的数据文件:
1、“ .frm”文件
与表相关的元数据( meta)信息都存放在“ .frm”文件中,包括表结构的定义信息等。不论是什么存储引擎,每一个表都会有一个以表名命名的“ .frm”文件。所有的“ .frm”文件都存放在所属数据库的文件夹下面。
2、“ .MYD”文件“ .MYD”文件是 MyISAM存储引擎专用,存放 MyISAM表的数据。每一个 MyISAM表都会有一个“.MYD”文件与之对应,同样存放于所属数据库的文件夹下,和“ .frm”文件在一起 。
3、“ .MYI”文件
“ .MYI”文件也是专属于 MyISAM存储引擎的,主要存放 MyISAM表的索引相关信息。对于 MyISAM存储来说,可以被cache的内容主要就是来源于“ .MYI”文件中。每一个 MyISAM表对应一个“ .MYI”文件,存放于位置和“.frm”以及“ .MYD”一样。
4、“ .ibd”文件和 ibdata文件
这两种文件都是存放 Innodb数据的文件,之所以有两种文件来存放 Innodb的数据(包括索引),是因为 Innodb的数据存储方式能够通过配置来决定是使用共享表空间存放存储数据,还是独享表空间存放存储数据。独享表空间存储方式使用“ .ibd”文件来存放数据,且每个表一个“ .ibd”文件,文件存放在和 MyISAM数据相同的位置。如果选用共享存储表空间来存放数据,则会使用 ibdata文件来存放,所有表共同使用一个(或者多个,可自行配置)ibdata文件。 ibdata文件可以通过 innodb_data_home_dir和 innodb_data_file_path两个 参数共 同配置 组成,innodb_data_home_dir 配置 数据存 放的总 目录, 而innodb_data_file_path 配 置 每 一 个 文 件 的 名 称。 当 然 , 也 可 以 不 配 置innodb_data_home_dir而直接在 innodb_data_file_path参数配置的时候使用绝对路径来完成配置。 innodb_data_file_path中可以一次配置多个 ibdata文件。文件可以是指定大小,也可以是自动扩展的,但是 Innodb限制了仅仅只有最后一个 ibdata文件能够配置成自动扩展类型。当我们需要添加新的 ibdata文件的时候,只能添加在 innodb_data_file_path配置的最后,而且必须重启 MySQL才能完成 ibdata的添加工作。不过如果我们使用独享表空间存储方式的话,就不会有这样的问题,但是如果要使用裸设备的话,每个表一个裸设备,可能造成裸设备数量非常大,而且不太容易控制大小,实现比较困难,而共享表空间却不会有这个问题,容易控制裸设备数量。
而不管Innodb 使用的是共享还是独享表空间的方式来存储数据,与事务相关的undo 信息以及其他的一些元数据信息,都是存放在“innodb_data_home_dir”和“innodb_data_file_path”这两个参数所设定的数据文件中的
Innodb 还有自己存放redo 信息和相关事务信息,日志文件在“innodb_log_group_home_dir”参数所设定的位置。
(转)mysql数据文件解析的更多相关文章
- 简单学习一下ibd数据文件解析
来源:原创投稿 作者:花家舍 简介:数据库技术爱好者. GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 简单学习一下数据文件解析 这是尝试使用Golang语言简单解析My ...
- 转】[MySQL优化]为MySQL数据文件ibdata1瘦身
原博文出自于: http://blog.fens.me/category/%E6%95%B0%E6%8D%AE%E5%BA%93/page/2/ 感谢! [MySQL优化]为MySQL数据文件ibda ...
- Json--Android中数据文件解析(Json解析--从服务器端获取数据并且解析,显示在客户端上面)
前面学习过了使用SAX解析XML数据(点击进入:SAX解析XML数据),今天学习Json解析: 首先说一下Json数据的最基本的特点,Json数据是一系列的键值对的集合,和XML数据来比,Json数据 ...
- CentOS6.5修改mysql数据文件路径
1.停止mysql服务 service mysql stop 2.移动数据文件位置(保留原文件权限) cp -a /var/lib/mysql /mysqldata 3.修改/et ...
- mysql数据文件迁移到新的硬盘分区的方法
该系统增加了一个硬盘.要创建新的分区/data文件夹,mysql对于数据文件夹/var/lib/mysql 1. 停止mysql维修 [root@localhost~]# service mysql ...
- 修改MySQL数据文件的位置
1:查看MySQL服务名称 2:管理员启动控制台 3:修改配置文件my.ini中数据文件的位置,[注]修改完成之后要把响应的数据文件从旧目录拷贝到新目录当中. 4:重新启动服务 5:登录数据库查看数据 ...
- MySQL数据文件介绍及存放位置
怎样查看MySql数据库物理文件存放位置? 使用命令行查找: show global variables like '%datadir%'; 我查找的位置:C:\ProgramData\MySQL\M ...
- Python&Selenium 关键字驱动测试框架之数据文件解析
摘要:在关键字驱动测试框架中,除了PO模式以及一些常规Action的封装外,一个很重要的内容就是读写EXCEL,在团队中如何让不会写代码的人也可以进行自动化测试? 我们可以将自动化测试用例按一定的规格 ...
- 查找mysql数据文件存放路径
show variables like 'datadir%'; show variables当前的会话,是系统参数 是静态 show global variables全局 show status是系统 ...
随机推荐
- 【SpringBoot整合Elasticsearch】SpringBoot整合ElasticSearch
一.Linux下安装ElasticSearch 1.检测是否安装了Elasticsearch ps aux |grep elasticsearch 2.安装JDK 3.下载Elasticsearch ...
- Elasticsearch学习之深入搜索二 --- 搜索底层原理剖析
1. 普通match如何转换为term+should { "match": { "title": "java elasticsearch"} ...
- [原]VNC client 图形化连接 linux
1. # vncserver (启动vncserver,配置密码) 2. vim /root/.vnc/xstartup (在最后一排添加gnome-session & ) vim ...
- [Noi2016]区间[离散化+线段树维护+决策单调性]
4653: [Noi2016]区间 Time Limit: 60 Sec Memory Limit: 256 MBSubmit: 621 Solved: 329[Submit][Status][D ...
- Python的容器、生成器、迭代器、可迭代对象的家谱
前言 之前虽然写Python,但是对Python的这些概念也是模模糊糊,知道有一天,看到了一篇文章,讲的透彻,所以就写这篇作为对于这篇高文的读书笔记吧 致谢,该文作者,完全理解Python迭代对象.迭 ...
- Apache服务器301重定向去掉.html和.php
在做优化网站的时候,会考虑到网站整站的集权: 考虑到网站可以生成静态,首先,让网站优先访问 index.html 之后考虑:去掉 .html 和 .php. 利用 .htaccess <IfMo ...
- 万事开头难 && 实践出真知
实践出真知,真是千古不变的真理. 前几天在顺手做一个万年历项目,实现了用TFT屏显示实时时间,日期,温度,和按键设置时间,能在特定时间显示特定的话语在显示屏上面.其实这个项目现在想想还是挺简单的.我的 ...
- linux 启动过程关键点
Freeing init memory: 4568K init... Freeing init memory 后,就是开始init进程
- ubuntu ndk 开发
参考 https://developer.android.com/ndk/index.html 配置 下载android-ndk-r10d-linux-x86_64.bin ,运行自解压. ...
- anti-VM tech
反虚拟机技术 版权声明:本文为博主原创文章,未经博主允许不得转载. 1:浮点运算的花指令 如果不是花指令则更好了 2:借助EPO思想,解密函数远离入口点 3:多线程技术 4:SEH技术 5:元多形 ...