存放目录:

用 whereis my.cnf 查看mysql配置文件的目录,查看my.cnf的datadir参数可找到mysql数据库文件的存放目录。

本机存放的目录为/var/lib/mysql,进入该目录可以看到以数据库名命名的文件夹。文件夹里便存放着该数据库的所有数据库文件。

数据库文件简介:

数据库文件分为 : mysql所建的数据库文件、mysql所用引擎创建的数据库文件。

.frm 保存与之同名的表的原数据信息,包含表结构定义等。与引擎无关。该文件可用来恢复或修改表结构。

MyISAM引擎的文件:

*.myd (表数据文件)

*.myi (索引文件)

InnoDB引擎的文件:

ibdata1、ibdata2等:系统表空间文件,存储InnoDB系统信息和用户数据库表数据和索引,所有表共用。

*.ibd文件:单表表空间文件,每个表使用一个表空间文件(file per table),存放用户数据库表数据和索引。

b_logfile1、ib_logfile2 :日志文件,日志文件大小在my.cnf文件中配置:innodb_log_file_size  = 256M  innodb_log_files_in_group = 2

Innodb存储引擎可以使用共享表空间独立表空间

1.独立表空间: 为每个表建立一个.ibd文件用来存储数据,这样,mysql就将innodb表的数据存入各自对应的.ibd文件中,但结构等信息还是会写入ibdata。

        将innodb_file_per_table加到配置文件中,便可使用独立表空间。

2.共享表空间: 将innodb_file_per_table关闭之后,建立innoDB表时只生成.frm文件,数据和索引都保存在共享表空间ibdata1中。这样的缺点是拷贝时必须拷贝整个大文件,

而且删除表后容易产生碎片。

ibdata1的大小在my.cnf文件中配置:innodb_data_file_path = ibdata1:10G:autoextend:max:500M

应用:

一、恢复物理备份:

1.MyISAM引擎的表可以简单的复制每个表的.frm,.MYI,.MYD文件到新数据库对应的文件夹中即可。

2.Innodb引擎的表,一直没有通过拷贝数据库文件而成功恢复过。有待日后再补充。

二、通过修改.frm来加快alter table操作的速度:

altertable操作速度慢,以表test为例:

mysql> show create table test;
+-------+---------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+---------------------------------------------------------------------------------------------------------------------------------------------------+
| test | CREATE TABLE `test` (
`id` int(11) DEFAULT NULL,
`name` char(1) DEFAULT '',
`name1` char(1) DEFAULT ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+---------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec) mysql> select * from test;
+------+------
| id | name |
+------+------
| 1 | |
| 3 | |
| 4 | |
+------+------
3 rows in set (0.00 sec)  

通过show profile来分析alter执行速度。

mysql> alter table test add column name1 char default "";
Query OK, 3 rows affected (0.01 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> show profile for query 8;
+----------------------+----------+
| Status | Duration |
+----------------------+----------+
| starting | 0.000082 |
| checking permissions | 0.000010 |
| checking permissions | 0.000012 |
| init | 0.000054 |
| Opening tables | 0.000023 |
| System lock | 0.000011 |
| Table lock | 0.000014 |
| setup | 0.000033 |
| creating table | 0.002701 |
| After create | 0.000120 |
| copy to tmp table | 0.000589 |
| rename result table | 0.002465 |
| end | 0.000067 |
| query end | 0.000012 |
| freeing items | 0.000044 |
| cleaning up | 0.000011 |
+----------------------+----------+
16 rows in set (0.00 sec)

从日志可看出,这个alter实现的方法是:用新的结构创建一个空表,从旧表中查出所有数据插入新表,然后删除旧表。

不过不是所有的alter操作都会引起表重建。比如alter column。 (alter table 允许使用alter column, modify column, change column语句修改列,这三种操作都是不一样的,这个日后再详细说)

alter column语句直接修改.frm文件而不涉及表数据,所以会快很多。

移除一个列的auto_increment属性;增加、移除或更改ENum和set常量,是可以不用重建表的,这些就可以通过修改.frm文件直接来改变表结构。

方法如下:

1.创建一张相同结构的空表,并进行所需要的修改。

2.flush tables with read lock 来关闭所有正在使用的表,并禁止任何表被打开。

3.交换.frm文件

4.执行 unlock tables来释放步骤2的读锁。

mysql数据库文件简介和应用的更多相关文章

  1. 查找mysql数据库文件的存放位置

    在mysql数据库中,有时候并不是很容易找出mysql数据库文件data的存放位置吗,这时就可以使用mysql自带的命令行工具进行查询. 具体命令如下:show variables like '%da ...

  2. 如何查看和更改mysql数据库文件存放位置

    mysql数据库的数据文件默认是存放在:C:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 5.1\data ...

  3. MySQL数据库文件

    MySQL数据库文件 本文档从MySQL数据库和存储引擎层面介绍各种类型的文件. 参数文件(my.cnf) 错误日志(error log) 二进制日志文件(binary log) 慢查询日志(slow ...

  4. 【已解决】phpMyAdmin中导入mysql数据库文件时出错:您可能正在上传很大的文件,请参考文档来寻找解决办法

    期间,用phpMyAdmin去导入90M左右的mysql数据库文件时出错: 您可能正在上传很大的文件,请参考文档来寻找解决方法. [解决过程] 1.很明显,是文件太大,无法导入.即上传文件大小有限制. ...

  5. 一、MySQL数据库之简介和安装

    一.基础部分 1.数据库是简介     之前所学,数据要永久保存,比如用户注册的用户信息,都是保存于文件中,而文件只能存在于某一台机器上. 如果我们不考虑从文件中读取数据的效率问题,并且假设我们的程序 ...

  6. Mysql 数据库文件存储在哪个目录

    也就是说我在mysql里建了一个叫 ac 的数据库,但是我找不到其存储位置,Mysql里面的数据库是怎么存储的,是否也像sqlserver 那样,有一个日志文件和数据文件? mysql数据库在系统上是 ...

  7. mysql数据库文件默认保存目录(windows)

    如果没有自己去设置安装路径,MYSQL默认安装在C:/Program Files/MySQL/MySQL Server 5.1,新建的数据库文件在C:/Documents and Settings/A ...

  8. 如何更改mysql可执行路径及更改mysql数据库文件路径

    一.如何更改服务中MySQL的可执行文件路径: 解决方法:到注册表里HKEY_LOCAL_MECHINE---SYSTEM ---CurrentControlSet 更改查找一. MySQL项值,然后 ...

  9. Windows下更改MySQL 数据库文件存放位置

    更改默认的mysql数据库目录 将 C:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 5.1\data 改 ...

随机推荐

  1. BurpSuite 设置Hostname Resolution

    #写在前面 这种情况你可能遇到过: 对方用了CDN, 你查到了对方真实IP, 但还不能100%肯定. 这时候, 最好的测试就是 win/linux修改HOST文件 Win重启电脑 Linux重启网络 ...

  2. 5-python的封装与结构 - set集合

    目录 1 封装与解构 1.1 封装 1.2 解构 1.3 Python3的解构 2 set类型 2.1 set的定义 2.2 set的基本操作 2.2.1 增加元素 2.2.2 删除元素 2.2.3 ...

  3. Python3 断言

    #!/usr/bin/env python # _*_ coding:utf-8 _*_ # Author:CarsonLi ''' 断言一般用于后面有非常重要的操作,需要使用前面的数据,而且不容许出 ...

  4. docker之设置开机自启动(二)

    docker的自启动 通过sysv-rc-conf等管理 启动脚本 # docker.service #!/bin/sh sudo systemctl enable docker sudo syste ...

  5. 135.Candy---贪心

    题目链接 题目大意:分糖果,每个小朋友都有一个ratings值,且每个小朋友至少都要有一个糖果,而且每个小朋友的ratings值如果比左右邻舍的小朋友的ratings值高,则其糖果数量也比邻舍的小朋友 ...

  6. Deep Learning基础--机器翻译BLEU与Perplexity详解

    前言 近年来,在自然语言研究领域中,评测问题越来越受到广泛的重视,可以说,评测是整个自然语言领域最核心和关键的部分.而机器翻译评价对于机器翻译的研究和发展具有重要意义:机器翻译系统的开发者可以通过评测 ...

  7. Python 正则表达式、re模块

    一.正则表达式 对字符串的操作的需求几乎无处不在,比如网站注册时输入的手机号.邮箱判断是否合法.虽然可以使用python中的字符串内置函数,但是操作起来非常麻烦,代码冗余不利于重复使用. 正则表达式是 ...

  8. 全局应用程序类(Global.asax)

     注:该部分参考的园区的“积少成多”的 <ASP.NET MVC中的Global.asax文件> . 1.Global.asax文件介绍 global.asax这个文件包含全局应用程序事件 ...

  9. nginx同域名动静态分离

    公司需求是如果是app加载静态页面的话要通过应用服务直接请求指定的服务  由于机房迁移  不得不将该文件迁移到一个指定的地方  需要通过nginx配置检测到是访问该静态页面的就转到该静态页面上面进行加 ...

  10. [ python ] 练习作业 - 3

    1. 写出Python查找一个变量的顺序 提示:4中作用域的顺序 本地作用域(local) --> 当前作用域被嵌入的本地作用域(enclsing locals) --> 全局/模块作用域 ...